1

Тема: AHK: Skype

Malcev предложил метод использования API для смены статуса в клиенте Skype

; 1 = В сети
; 2 = Нет на месте
oSkype := ComObjCreate("Skype4COM.Skype")

f1::
oSkype.ChangeUserStatus(1)
return

f2::
oSkype.ChangeUserStatus(2)
return

Можно ли подобным (или иным) образом узнать о входящем сообщении? Например, установить оповещение в виде появления изображения в правом верхнем углу экрана?

2

Re: AHK: Skype

Вроде как раньше таким образом сразу оповещало, но теперь наблюдаю что MsgBox выходит только по факту прочтения новых сообщений в чате.


oSkype := ComObjCreate("Skype4COM.Skype")
ComObjConnect(oSkype, "Skype_")
If (!oSkype.Client.IsRunning)
    oSkype.Client.Start()
oSkype.Attach
Return

Skype_MessageStatus(ByRef aMsg, aStatus) {
	MsgBox, % aMsg.Id "`n" aMsg.FromHandle "`n" aMsg.Body
}  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Skype

А в моём скайпе 6.21.0.104 работает исправно, только дублируется msgbox при получении и прочтении.
Можно добавить условие:

#Persistent
oSkype := ComObjCreate("Skype4COM.Skype")
ComObjConnect(oSkype, "Skype_")
If (!oSkype.Client.IsRunning)
    oSkype.Client.Start()
oSkype.Attach
Return

Skype_MessageStatus(ByRef aMsg, aStatus) {
   if aStatus = 2      ; получено
      MsgBox, % aMsg.Id "`n" aMsg.FromHandle "`n" aMsg.Body
}

4

Re: AHK: Skype

В раритетном и сообщения можно отсылать, речь по дефолту об актуальной версии.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: Malcev, 2016-05-17 23:48:55)

Re: AHK: Skype

Поэтому если нужны фичи Skype4COM, то лучше пользоваться старой версией скайпа.
Неизвестно, что они отрежут при следующем апдейте.

6

Re: AHK: Skype

Это давно известно, только рассчитывать на это нельзя, старую версию могут также легко легко отрезать совсем...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Skype

А можно ли считывать изменение иконки в трее, но при условии, что панель задач целиком перекрыта окном другой программы? В таком случае, можно было бы привязать изменение иконки к событию.

8

Re: AHK: Skype

Можно в цикле считывать дату модификации файла main.db или main.db-journal.
Если изменилась - значит новые сообщения.
Можно читать дату последнего сообщения в скайпе и сравнивать с предыдущими (не знаю будет ли работать в современной версии):

oSkype.Messages.Item(1).Timestamp

А по хорошему понять бы их Web Sdk:
https://msdn.microsoft.com/en-us/librar … 16%29.aspx

9

Re: AHK: Skype

Malcev, у меня эти файлы изменяются ежеминутно без всяких событий при открытом клиенте.

10

Re: AHK: Skype

Тогда statistics.db или statistics.db-journal.

11

Re: AHK: Skype

Для скайпа ещё такое есть https://autohotkey.com/board/topic/9637 … functions/, вроде как сообщения новые тоже не мониторит, но навсякий проверьте на новых версиях.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui