Что нового

[Автоматизация] Обработать событие Skype о приходе сообщения

ZKvCm3JXFNR

Новичок
Сообщения
1
Репутация
0
Подскажите как обработать событие Skype о приходе нового сообщения.

С помощью OLEView нашел такое:
[id(0x00000002), helpstring("Fired when a message is received."), helpcontext(0x00000047)]
HRESULT Message(
[in] ICallChannelManager* pManager,
[in] ICallChannel* pChannel,
[in] ICallChannelMessage* pMessage);

Пробую так:

Код:
Opt("GUIOnEventMode", 1)
$oSkype = ObjCreate("Skype4COM.Skype")
$SinkObject=ObjEvent($oSkype,"SkypeEvent_")

Func SkypeEvent_Message($pManager, $pChannel, $pMessage)
	MsgBox(0, "SkypeEvent", "Message!")
EndFunc
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Попробуйте так:
Код:
Opt("GUIOnEventMode", 1)
$oSkype = ObjCreate("Skype4COM.Skype.1")
$oSkype.Attach(5, True)
$SinkObject=ObjEvent($oSkype,"SkypeEvent_")

While 1
	Sleep(1000)
WEnd

Func SkypeEvent_MessageStatus($pMsg, $aStatus)
    If ($aStatus = $oSkype.Convert.TextToChatMessageStatus("RECEIVED") Or _
		$aStatus = $oSkype.Convert.TextToChatMessageStatus("SENT")) And _
		$pMsg.Type = $oSkype.Convert.TextToChatMessageType("SAID") Then
		ConsoleWrite($pMsg.FromDisplayName & ': ' & $pMsg.Body & @CRLF)
	EndIf
EndFunc

Выводит на консоль принятые\отправленные сообщения.
Если исходящие не надо сократите условие до:
Код:
If $aStatus = $oSkype.Convert.TextToChatMessageStatus("RECEIVED") And _
		$pMsg.Type = $oSkype.Convert.TextToChatMessageType("SAID") Then

Чуть не забыл: в самом скайпе сверху появится сообщении об чужеродной программе (AutoIt если не скомпилирован), нужно будет дать доступ. Если ждать предоставления доступа не надо соединяться можно так:
Код:
$oSkype.Attach()


ЗЫ. Что-то имя мне Ваше не нравится (с чего бы это :scratch:).
 
Верх