1 (изменено: serzh82saratov, 2018-01-08 12:08:56)

Тема: AHK: Internet Explorer Platform APIs

Просвятите по использованию справки, вот есть Diagnostics Object Model, а как получить объект?
Хочется метод clearAllCookies.


oIe := ComObjCreate("InternetExplorer.Application")
oIe.Visible := true
oIe.***.clearAllCookies()
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

2 (изменено: Malcev, 2018-01-08 12:34:38)

Re: AHK: Internet Explorer Platform APIs

Там написано, что

These APIs can only be used with F12 developer tools and the Diagnostics Script Engine, and can't be called from JavaScript.

Так что, наверное, только через Visual Studio или его аналог получится.
Я раньше так стирал:

ClearTracks(sCmd) 
{
	ValidCmd 	:=  {Files		:8		; Clear Temporary Internet Files
			    ,Cookies		:2		; Clear Cookies
			    ,History		:1		; Clear History
			    ,Forms		:16		; Clear Form Data
			    ,Passwords		:32		; Clear Passwords
			    ,All		:255		; Clear all
			    ,All2		:4351}		; Clear All and Also delete files and settings stored by add-ons

	If (ValidCmd.haskey(sCmd))
	{
		iCmd := ValidCmd[sCmd] ; Get the integer value
		VarSetCapacity(wCmd,15,0)
		DllCall("MultiByteToWideChar", "Uint", 0, "Uint", 0, "str", iCmd, "int", -1, "str", wCmd, "int", 8)
		DllCall("inetcpl.cpl\ClearMyTracksByProcessW", "Uint", 0, "Uint", 0, "str", wCmd, "int", 0)
	}
	Else
		MsgBox % "Invalid Command -" sCmd "-"
	return ErrorLevel
}

3

Re: AHK: Internet Explorer Platform APIs

Malcev пишет:

Я раньше так стирал:

Это видел, но ничего не чистит.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: Internet Explorer Platform APIs

А так?

Run RunDll32.exe InetCpl.cpl`,ClearMyTracksByProcess 4351

5

Re: AHK: Internet Explorer Platform APIs

Так то да, только слишком глобально, хотелось бы только куки.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6 (изменено: Malcev, 2018-01-08 13:00:40)

Re: AHK: Internet Explorer Platform APIs

// This magic value is the combination of the following bitflags:
// #define CLEAR_HISTORY         0x0001 // Clears history
// #define CLEAR_COOKIES         0x0002 // Clears cookies
// #define CLEAR_CACHE           0x0004 // Clears Temporary Internet Files folder
// #define CLEAR_CACHE_ALL       0x0008 // Clears offline favorites and download history
// #define CLEAR_FORM_DATA       0x0010 // Clears saved form data for form auto-fill-in
// #define CLEAR_PASSWORDS       0x0020 // Clears passwords saved for websites
// #define CLEAR_PHISHING_FILTER 0x0040 // Clears phishing filter data
// #define CLEAR_RECOVERY_DATA   0x0080 // Clears webpage recovery data
// #define CLEAR_PRIVACY_ADVISOR 0x0800 // Clears tracking data
// #define CLEAR_SHOW_NO_GUI     0x0100 // Do not show a GUI when running the cache clearing
//
// Bitflags available but not used in this magic value are as follows:
// #define CLEAR_USE_NO_THREAD      0x0200 // Do not use multithreading for deletion
// #define CLEAR_PRIVATE_CACHE      0x0400 // Valid only when browser is in private browsing mode
// #define CLEAR_DELETE_ALL         0x1000 // Deletes data stored by add-ons
// #define CLEAR_PRESERVE_FAVORITES 0x2000 // Preserves cached data for "favorite" websites
#define CLEAR_CACHE_OPTIONS 0x09FF

// Delete only download history   
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16384

7

Re: AHK: Internet Explorer Platform APIs

О, работает.
Не знаешь как в приватном режиме запускать?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AHK: Internet Explorer Platform APIs

Можно через коммандную строку запускать с атрибутом -private и потом получать объект.
Можно реестр изменять каждый раз когда в приватном режиме запустить хочешь.
А напрямую, вроде, метода нету.

9

Re: AHK: Internet Explorer Platform APIs

С реестром норм, только я не нашёл рабочий вариант.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10

Re: AHK: Internet Explorer Platform APIs

Я тоже.
Остается, похоже, только с атрибутом -private запускать.

11

Re: AHK: Internet Explorer Platform APIs

Угу, и -Embedding чтоб не мелькало. Только как потом точно определить окно.
Я придумал только добавлять свой параметр, и искать процесс по CommandLine.
Через Run PID и цепочку дочерних процессов у меня не получилось.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

12

Re: AHK: Internet Explorer Platform APIs

А зачем тебе нужен private?
Если не хочешь оставлять о себе информацию, то всё-равно определят по фингерпринту.

13

Re: AHK: Internet Explorer Platform APIs

Чтобы не чистить куки и историю.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

14

Re: AHK: Internet Explorer Platform APIs

А зачем их чистить?

15 (изменено: serzh82saratov, 2018-01-08 17:46:42)

Re: AHK: Internet Explorer Platform APIs

Да зачем они нужны.

Кстати не знаешь как отправлять нажатия клавиш в элементы?
Я такие примеры видел, но что то не заводятся.


	pEvent := oIE.document.CreateEventObject()
    pEvent.keyCode := 0x20  ; VK_Space 
	El.FireEvent("onkeypress", pEvent)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

16 (изменено: Malcev, 2018-01-08 18:03:12)

Re: AHK: Internet Explorer Platform APIs

teadrinker, как-то, выкладывал:

IE := ComObjCreate("InternetExplorer.Application")
IE.Visible := True
IE.Navigate("https://autohotkey.com/search/")
while IE.busy
   continue
oDoc := IE.document
input := oDoc.GetElementByID("gsc-i-id1")
input.value := "SetTimer"
input.focus()
event := oDoc.createEvent("KeyboardEvent")
event.initKeyboardEvent("keydown", true, true, oDoc.parentWindow, "Enter", 0, "", false, "en-US")
input.dispatchEvent(event)

FireEvent не поддерживается в IE11 (заменили на dispatchEvent).
По мне так чистить куки и историю бесполезное занятие - приватности это не добавит, кстати в navigate можно отправлять чтобы не сохранялось в историю.
Ну и можно поставить галочку, чтобы при выходе из IE всё подчищалось, если хочется скрыть посещаемые сайты от других пользователей.

17 (изменено: serzh82saratov, 2018-01-08 18:03:34)

Re: AHK: Internet Explorer Platform APIs

Спасибо, но как то не до конца работает, например если в чате Enter отправляет сообщение, то так он просто активирует поле. В Selenium sendKeys отправляет, и focus необязателен.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

18

Re: AHK: Internet Explorer Platform APIs

Ну тут уже пример нужен, чтобы посмотреть.

19

Re: AHK: Internet Explorer Platform APIs

В гугле работает, тут придётся немного подождать загрузки.


oIe := ComObjCreate("InternetExplorer.Application")
oIE.Silent := 1
oIe.Visible := 1
oIE.Navigate("https://join.skype.com/m9y6rpxqvIet")

MsgBox Нажми присоединится - введи любое имя - дождись пока прогрузится чат - нажми ок


input := oIE.document.querySelector("#chatInputAreaWithQuotes")
input.value := "/get uri"

input.focus()
event := oIE.document.createEvent("KeyboardEvent")
event.initKeyboardEvent("keydown", true, true, oIE.document.parentWindow, "Enter", 0, "", false, "en-US") 
input.dispatchEvent(event) 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

20

Re: AHK: Internet Explorer Platform APIs

А где тогда не до конца работает?

21

Re: AHK: Internet Explorer Platform APIs

Так я же код привёл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

22

Re: AHK: Internet Explorer Platform APIs

А зачем там отправлять с помощью event?
Там же простой Click на кнопку отправки работает.

23

Re: AHK: Internet Explorer Platform APIs

Просто чтобы понимать почему так.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

24

Re: AHK: Internet Explorer Platform APIs

Может защита какая стоит.
У меня там на мышь события тоже не вешаются.

25

Re: AHK: Internet Explorer Platform APIs

Любит этот скайп что нибудь отрезать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

26

Re: AHK: Internet Explorer Platform APIs

serzh82saratov пишет:

MsgBox Нажми присоединится - введи любое имя - дождись пока прогрузится чат - нажми ок

Как-то непривычно видеть подобное). А чего с busy случилось, в HTML5 уже не проходит?

Кстати, у меня таким образом Enter тоже не нажимается, причем на любых сайтах. Я еще давно об этом писал в теме про IE.

27 (изменено: Malcev, 2018-01-09 21:18:22)

Re: AHK: Internet Explorer Platform APIs

Stepnoy пишет:

А чего с busy случилось, в HTML5 уже не проходит?

А чего сами не протестируете?

Stepnoy пишет:

Кстати, у меня таким образом Enter тоже не нажимается, причем на любых сайтах.

Версия IE какая? 11.0.9600.18893?

28

Re: AHK: Internet Explorer Platform APIs

Так потому и пишу, что у меня busy не сработал. Это был реальный вопрос, а не способ поумничать, если так показалось)).

Кстати, версия IE - 17843, винда сама не обновляется, если что.

29

Re: AHK: Internet Explorer Platform APIs

Обновляйтесь. Я в теме по ахкспай давал ссылку.

30

Re: AHK: Internet Explorer Platform APIs

Кстати спасибо за ссылку ещё раз. https://www.catalog.update.microsoft.co … =kb4047206
busy с readyState = "interactive" там работает, просто там долгий путь до чата, а я код приводил только для теста нажатий.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

31

Re: AHK: Internet Explorer Platform APIs

IE обновился до 18860, чего еще нужно скачать, чтобы его добить)?

Так все равно не срабатывает.

32

Re: AHK: Internet Explorer Platform APIs

Stepnoy, на 18837 и на 18893 работает.
Сортируете по дате обновления и скачиваете последний апдейт.
https://www.catalog.update.microsoft.co … xplorer+11
Если не поможет удалите полностью IE и поставьте заново.
ЗЫ Не понимаю зачем вам так нужно посылать кнопки на элементы?

33

Re: AHK: Internet Explorer Platform APIs

Malcev
Как то обсуждали "заманчивый и загадочный" WinHttpRequest , как думаешь получится с его помощью войти в чат скайп?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

34

Re: AHK: Internet Explorer Platform APIs

Думаю, можно.
Но я бы не пользовался примером от Xameleon, так как он там сам собирает форму и отправляет её, что ИМХО сложно.
Легче посмотреть, что отправляет IE в постзапросе и откуда берутся эти данные и самому добывать их через регекспы и отправлять.

35

Re: AHK: Internet Explorer Platform APIs

Это запросы?
Ты как смотришь, по Ф12 скапливается куча запросов, не понятно где что.



#SingleInstance Force
#NoEnv


oIe := ComObjCreate("InternetExplorer.Application")
oIE.Silent := 1
; ComObjError(false) 
oIe.Visible := true 

ComObjConnect(oIE, WB_events) 

URL = https://join.skype.com/l4DFbTbAcA0Q

oIE.Navigate(URL)
return

class WB_events {  
    BeforeNavigate2(pDsip, url, flags, TargetFrameName, PostData, headers, cancel)
    {
		MsgBox, , ,  % clipboard := url "`n`n" PostData "`n`n" TargetFrameName "`n`n" flags "`n`n" headers
    } 
}  

	
Escape:: ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

36

Re: AHK: Internet Explorer Platform APIs

Смотрю по F12, убираю always refresh и все остальные подчищения (все кнопки где запись отжаты).
Загружаю ссылку, после ввода имени смотрю какие запросы и что отправляется.
Потом в поиске смотрю откуда они берутся и делаю тоже самое.

37

Re: AHK: Internet Explorer Platform APIs

Это ты про вкладку "сеть". А что в поиске смотришь, и что потом выполняешь, там запросов под сотню.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

38

Re: AHK: Internet Explorer Platform APIs

На этом сайте при нажатии join conversation отправляется по ссылке https://join.skype.com/telemetry/aria постЗапрос с RequestBody:

{"eventProperties":{"client_time":1515770208940,"milestone":"launch_web","result":"guest_user","thread_id":"19:9d7a9c975cc34161a9a4ea2bfce85fae@thread.skype","path":"launcher","uiVersion":"30003/0.9999.0.0","session_id":"d13d147a","user_agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko"},"eventName":"weblauncher_join"}

Ну и дальше ищешь откуда эти значения в массиве берутся.
Например,  19:9d7a9c975cc34161a9a4ea2bfce85fae@thread.skype из https://join.skype.com/api/v2/conversation/ ResponseBody.
Значит тебе сначала надо загрузить https://join.skype.com/api/v2/conversation потом получить thread_id и потом его отправить в  https://join.skype.com/telemetry/aria.

39

Re: AHK: Internet Explorer Platform APIs

Спасибо, схема проясняется.
А как вообще браузер решает какие запросы и в каком виде и главное синтаксисе надо отправлять. Исходя из полученных ответов не понятно откуда логика браузера решает послать именно такие многа букф.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

40

Re: AHK: Internet Explorer Platform APIs

Malcev пишет:

ЗЫ Не понимаю зачем вам так нужно посылать кнопки на элементы?

Да у меня даже busy не отрабатывает нормально, чего уж там об остальном говорить).

А вообще есть пара скриптов, которые в ie работают с input. Выкручиваюсь с помощью фокуса элементу и посыл enter в основной control. Хотя, по-хорошему, нужно на js все переделывать.
Тем более, недавно тему про jquery увидел).

Кстати, про постзапросы тоже интересно. Думал когда-нибудь все переделать с их помощью. Но это уже более высокий уровень, оставлю на будущее, пока просто послежу за темой.

41 (изменено: Malcev, 2018-01-12 21:08:06)

Re: AHK: Internet Explorer Platform APIs

serzh82saratov пишет:

А как вообще браузер решает какие запросы и в каком виде и главное синтаксисе надо отправлять

Не знаю, не интересовался.
Например на нашем сайте токен прописан как элемент формы на странице логина, соответственно броузер когда собирает форму, вместе с логином и паролем отправляет и токен.
Конкретно на сайте скайпа, запрос (что отправлять) формируется через джаваскрипты, как я понимаю.
Stepnoy, чем причитать, что у вас не работает, давно бы взяли и переустановили IE.

42

Re: AHK: Internet Explorer Platform APIs

+ Оф

Да все нормально, было бы критично - давно бы снес все). Просто хочется понять, что к чему, а переустановка всегда успеется.

Надюсь еще одним минусом за оф не наградят)).

43

Re: AHK: Internet Explorer Platform APIs

Stepnoy, вы не сможете понять, что к чему, используя кривой инструмент.
Разве что будете находить новые свои баги и засорять ими форум.
serzh82saratov, вот так можно подключиться через WinHttpRequest:

name := "YourName"
id := "m9y6rpxqvIet"

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "https://join.skype.com/" id, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.send()
HTTP.WaitForResponse()
GetAllResponseHeaders := HTTP.GetAllResponseHeaders()
launcher_session_id := RegexReplace(GetAllResponseHeaders, "s)^.*Set-Cookie: launcher_session_id=(.+?);.*$", "$1")
csrf_token := RegexReplace(GetAllResponseHeaders, "s)^.*Set-Cookie: csrf_token=(.+?);.*$", "$1")

HTTP.Open("POST", "https://join.skype.com/api/v2/conversation", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.send("{""shortId"":""" id """,""type"":""wl""}")
HTTP.WaitForResponse()
ResponseText := HTTP.ResponseText
threadId := RegexReplace(ResponseText, "s)^{""Resource"":""(.+?)"".*$", "$1")
longId := RegexReplace(ResponseText, "s)^.*,""Id"":""(.+?)"".*$", "$1")

HTTP.Open("POST", "https://join.skype.com/api/v1/users/guests", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.setRequestHeader("csrf_token", csrf_token)
HTTP.send("{""name"":""" name """,""threadId"":""" threadId """,""shortId"":""" id """,""longId"":""" longId """,""flowId"":""" launcher_session_id """}")
HTTP.WaitForResponse()
msgbox % HTTP.ResponseText 

44

Re: AHK: Internet Explorer Platform APIs

Большое спасибо, буду разбирать.
Пока свежо, можешь добавить отправку сообщения, и получения списка сообщений в чате?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

45

Re: AHK: Internet Explorer Platform APIs

Наивно полагал, что после входа и запроса web.skype.com/ru/guest получу весь хтмл с сообщениями чата, но увы.

HTTP.Open("GET", "https://web.skype.com/ru/guest", true)
HTTP.send()
HTTP.WaitForResponse()
MsgBox % HTTP.StatusText
msgbox % clipboard := HTTP.ResponseText
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

46 (изменено: serzh82saratov, 2018-01-13 02:57:15)

Re: AHK: Internet Explorer Platform APIs

Выход из чата.


HTTP.Open("GET", "https://join.skype.com/guests/leave?threadId=" threadId, true)
HTTP.send()

Мой чат - pmCXysJVfUJO.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

47 (изменено: Malcev, 2018-01-13 06:33:52)

Re: AHK: Internet Explorer Platform APIs

Тестируй:

name := "YourName"
id := "m9y6rpxqvIet"
message := "Privet"

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "https://join.skype.com/" id, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.send()
HTTP.WaitForResponse()
GetAllResponseHeaders := HTTP.GetAllResponseHeaders()
launcher_session_id := RegexReplace(GetAllResponseHeaders, "s)^.*Set-Cookie: launcher_session_id=(.+?);.*$", "$1")
csrf_token := RegexReplace(GetAllResponseHeaders, "s)^.*Set-Cookie: csrf_token=(.+?);.*$", "$1")

HTTP.Open("POST", "https://join.skype.com/api/v2/conversation", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.send("{""shortId"":""" id """,""type"":""wl""}")
HTTP.WaitForResponse()
ResponseText := HTTP.ResponseText
threadId := RegexReplace(ResponseText, "s)^\{""Resource"":""(.+?)"".*$", "$1")
longId := RegexReplace(ResponseText, "s)^.*,""Id"":""(.+?)"".*$", "$1")

HTTP.Open("POST", "https://join.skype.com/api/v1/users/guests", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.setRequestHeader("csrf_token", csrf_token)
HTTP.send("{""name"":""" name """,""threadId"":""" threadId """,""shortId"":""" id """,""longId"":""" longId """,""flowId"":""" launcher_session_id """}")
HTTP.WaitForResponse()
skypetoken := RegexReplace(HTTP.ResponseText, "s)^.*\{""skypetoken"":""(.+?)"".*$", "$1")

HTTP.Open("POST", "https://client-s.gateway.messenger.live.com/v1/users/ME/endpoints", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.setRequestHeader("Authentication", "skypetoken=" skypetoken)
HTTP.send("{""endpointFeatures"":""Agent""}")
HTTP.WaitForResponse()
registrationToken := RegexReplace(HTTP.GetAllResponseHeaders(), "s)^.*Set-RegistrationToken: registrationToken=(.+?);.*$", "$1")

; отправка
now := A_NowUTC
EnvSub, now,1970, seconds
now .= A_MSec
HTTP.Open("POST", "https://client-s.gateway.messenger.live.com/v1/users/ME/conversations/" threadId "/messages", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.setRequestHeader("RegistrationToken", "registrationToken=" registrationToken)
HTTP.send("{""content"":""" message """,""messagetype"":""RichText"",""contenttype"":""text"",""Has-Mentions"":""false"",""imdisplayname"":""" name """,""clientmessageid"":""" now """}")
HTTP.WaitForResponse()
msgbox % http.responsetext

; получение
HTTP.Open("GET", "https://client-s.gateway.messenger.live.com/v1/users/ME/conversations/" threadId "/messages?startTime=0&pageSize=51&view=msnp24Equivalent|supportsMessageProperties&targetType=Passport|Skype|Lync|Thread|PSTN", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("RegistrationToken", "registrationToken=" registrationToken)
HTTP.send()
HTTP.WaitForResponse()
msgbox % clipboard := http.responsetext

48 (изменено: serzh82saratov, 2018-01-13 13:41:43)

Re: AHK: Internet Explorer Platform APIs

Мой чат - m2FZ7OLzU1GT, чтобы в чужих не мусорить.
Я застрял с RegistrationToken, и насчёт clientmessageid не нашёл где его получение, подумал что там своё значение, но не заметил что оно похоже на время. Я вижу что игнорируешь некоторые заголовки, как ты понимаешь какие именно требуются?
Получение сообщений не понял, в этом массиве нет сообщений.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

49 (изменено: serzh82saratov, 2018-01-13 14:07:20)

Re: AHK: Internet Explorer Platform APIs

Если отправлять в чате через браузер команду "/showmembers" то её даже в поиске не остаётся, через запрос уходит как текст, а в чате оно отображатся не должно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

50

Re: AHK: Internet Explorer Platform APIs

Заголовки я, кроме, отключения кеша и юзер-агента, никакие больше не посылаю.
Но если ответ от сервера отрицательный, то смотрю, где прописан какой-нибудь токен с набором кучи букв - его и отправляю.
У меня все сообщения есть.
После отправки не нажимай сразу OK, а отправь какие-нибудь сообщения через броузер и после нажатия ок ты их получишь.
Команда /showmembers, как я понял обращается напрямую к js-движку, так что наверное можно попробовать проверять различные запросы - может в каком-нибудь из них есть список пользователей.

51

Re: AHK: Internet Explorer Platform APIs

Malcev пишет:

После отправки не нажимай сразу OK, а отправь какие-нибудь сообщения через броузер и после нажатия ок ты их получишь.

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

Malcev пишет:

Команда /showmembers, как я понял обращается напрямую к js-движку, так что наверное можно попробовать проверять различные запросы

Ни в одном не нашёл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

52

Re: AHK: Internet Explorer Platform APIs

Хтмл, думаю, никак.
Не понимаю, что ты хочешь получить?

53

Re: AHK: Internet Explorer Platform APIs

Кстати, апи там расписан.
https://skpy.t.allofti.me/protocol/chat.html
Остальное дело техники.

54

Re: AHK: Internet Explorer Platform APIs

Дело техники для технарей, не для меня.

Malcev пишет:

Не понимаю, что ты хочешь получить?

Как получить список всех участников чата, и как получить список сообщений в чате?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

55

Re: AHK: Internet Explorer Platform APIs

Без пристального изучения апи вряд ли что-то путное выйдет.
Например пишут:

Warning
If you make too many authentication attempts, you may become temporarily rate limited by the Skype API, or be required to complete a captcha to continue. For the latter, this needs to be done in a browser with a matching IP address.
To avoid this, you should reuse the Skype token where possible. A token will usually only last for 24 hours (even web.skype.com forces re-authentication after that time), though you can check the expiry with SkypeConnection.tokenExpiry.

https://skpy.t.allofti.me/usage.html
Как получать сообщения я уже писал.
Пользователей у меня так получает:

HTTP.Open("GET", "https://client-s.gateway.messenger.live.com/v1/threads/" threadId "?view=msnp24Equivalent", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("RegistrationToken", "registrationToken=" registrationToken)
HTTP.send()
HTTP.WaitForResponse()
msgbox % clipboard := http.responsetext

56

Re: AHK: Internet Explorer Platform APIs

Я так пытался, откуда ты взял "?view=msnp24Equivalent", в Group conversations написано только GET https://client-s.gateway.messenger.live.com/v1/threads/(string: id).


HTTP.Open("GET", "https://client-s.gateway.messenger.live.com/v1/threads/" threadId, true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.setRequestHeader("Content-Type", "application/json")
HTTP.setRequestHeader("csrf_token", csrf_token)
HTTP.setRequestHeader("Authentication", "skypetoken=" skypetoken)
HTTP.setRequestHeader("RegistrationToken", "registrationToken=" registrationToken)
HTTP.send()
HTTP.WaitForResponse()
msgbox % http.responsetext
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

57

Re: AHK: Internet Explorer Platform APIs

Я тоже, но сервер прислал ответ, что:

{"errorCode":201,"message":"\"view\" query string parameter must be provided"}

Из чего сделал вывод, что серверу нужно указать параметр view, значение которого указано в других запросах.

58

Re: AHK: Internet Explorer Platform APIs

А как получить полную инфу про контакт, в массиве есть id контакта.
https://skpy.t.allofti.me/protocol/cont … d)-profile

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

59

Re: AHK: Internet Explorer Platform APIs

Не знаю. Я как гость захожу - у меня нету списка контактов.

60

Re: AHK: Internet Explorer Platform APIs

Думал что данные чужого профиля может получить не только регистрированный пользователь.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

61

Re: AHK: Internet Explorer Platform APIs

Там же написано:

The current user is only authorised to request information for users in their contact list

62

Re: AHK: Internet Explorer Platform APIs

Да, точно. Может userLink что то даёт, надо получить хотя бы display_name контакта.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

63

Re: AHK: Internet Explorer Platform APIs

Вот тут обсуждаются различные способы получения информации о контактах.
https://github.com/ocilo/skype-http/issues/20

64

Re: AHK: Internet Explorer Platform APIs

Warning
If you make too many authentication attempts, you may become temporarily rate limited by the Skype API, or be required to complete a captcha to continue. For the latter, this needs to be done in a browser with a matching IP address.
To avoid this, you should reuse the Skype token where possible. A token will usually only last for 24 hours (even web.skype.com forces re-authentication after that time), though you can check the expiry with SkypeConnection.tokenExpiry.

Вообщем как ты и говорил упёрлось в истечение токена после сотни "заходов в гости", помогает смена айпи адреса, или подождать минут пять (кажется не всегда помогает).
Там примеры все на питоне, так понял что и библиотека только для питона существует. Смысл в том что надо постоянно проверять tokenExpiry и выполнять повторную аутентификацию?, но с HTTP такого не видел.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

65

Re: AHK: Internet Explorer Platform APIs

Там на питоне те же самые http запросы.
Они, как я понял, этот апи сами через сниффер писали, так как официального нету.
Token на сутки дают, так что можно не проверять каждый заход.
Просто сохрани токен и используй его при каждом новом запросе.
Можешь посмотреть, что отправляет IE во время логина-логаута разных чатов и повторить тоже самое.

66 (изменено: serzh82saratov, 2018-01-17 02:34:54)

Re: AHK: Internet Explorer Platform APIs

Этот в каждом запросе?


HTTP.SetRequestHeader("csrf_token", csrf_token)

или

HTTP.SetRequestHeader("Authentication", "skypetoken=" skypetoken)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

67

Re: AHK: Internet Explorer Platform APIs

У меня нету таких в каждом запросе.
Сотри весь кеш, и начни записывать свои действия через IE.
Залогинься в 1 чате, отправь сообщение, залогинься во втором чате, отправь сообщение.
И потом изучаешь какие запросы были посланы при логине и отправки сообщения во второй чат.

68 (изменено: serzh82saratov, 2018-01-17 20:01:39)

Re: AHK: Internet Explorer Platform APIs

Ты имеешь ввиду, что сейчас в заголовках что то не отправляется?
Я из Warning так понял что некий токен не надо обновлять в пределах периода его действия. Предположил что надо skypetoken получать только один раз, но нет (статус 403 при следующем заходе в другой чат).
Сейчас при каждом запросе (входе в новый чат) все токены и.т.п. получаются заново. Вроде как и в браузере при входе в новый чат всё это дело тоже обновляется, и могу сказать точно, что примерно при 250 заходах в течении 3 - 5 минут из нескольких браузеров, IP адрес банится, так что в браузере можно и не увидеть решение. При 100 - 110 заходах через HTTPRequest из нескольких процессов течении 1 - 1.5 минут тоже бан.

Отправка сообщений никак не влияет на бан, сейчас тестирую - зашёл гостем в чат - получил список участников - вышел.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

69

Re: AHK: Internet Explorer Platform APIs

Я один раз получаю token в https://join.skype.com/api/v1/users/guests.
После этого он у меня во всех чатах только посылается, либо в хедере либо в боди.
Если в броузере тебя банят по айпи, то и через winhttp точно также банить будут, только, наверное, при  постоянном запросе токена быстрее.

70 (изменено: serzh82saratov, 2018-01-18 00:39:12)

Re: AHK: Internet Explorer Platform APIs

Тогда не пойму где у меня ошибка, какой то запрос лишний?
Вроде об одном говорим, но на второй ссылке и далее ошибка - 403.
Если в if !start вместо start написать if true, то у меня работает.
Если Debug  = 0 и оставить работать, то покажет на какой ссылке бан.


#SingleInstance Force
#NoEnv 
  
OnExit, ExitApp 
Global Debug, HTTP, GuestName, Script, Step

GuestName = GuestMuest

Debug := 1

htmldoc := ComObjCreate("htmlfile")
Script := htmldoc.Script
Script.execScript(" ", "JScript")

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")

; ComObjError(false)

Chats = pCNsoYURMAq0|aKLrwYnxcmG1|A2gtoEAl3CUB|m9FV2t2Sn4pJ|jH0VBIsFNP3m|jHvcFCix6fo4|jIYK7ku8pREf|jIjMtgoVGnDA|jKnF6j5QvDlh|jLF1o9qB81tz|jMfGNxQcqrf2|jN0fQJdKFuwG|jPatxd9BrOiv|jRKJ87IqNPlC|jSQlGYDKN6d3|jSgPUHBhFXg2|jTFnFBjyyuws|jUASyemGxz5b|jV3USvobfZf7|jVtZNPfBmVeB|jXAv9Ut6yQ1O|jXeLtbzT0bvB|jXz0OFJ7Zq4d|jZKKlUsWUvUq|jZmZWDQPHyDp|jcGK2TqThART|jcoD6cfqyUFt|jdAXhaxdO5fa|jdk8FB15pFpm|jePRX7SD8mbq|jeUyLXAhe7dk|jfAtvzCtZA6n|jfJeM0uX5eya|jg72h1XivK8t|jgQzRaIxuv3d|jgvXbPe4JJhm|jhTLH5vvJGXR|jiiAreTYgCNc|jjLQ9vDFPl4a|jjPoHZFzhwAR|jkrRO74XgKuX|jnh35Rjxi8EK|jpKadI9JXUIb|jpVtqUyzPJW1|jqVKNtBJfvLo|jrbYrxAAkmjh|jsvOMSdMA03o|jtYb0TYKt4jX|juyTbgQ4Tu8V|jwPqEhe33UGl|jwR523XOHkNa|jxEmBoORbZNH|k15dhTfO7aRz|k5oXtdNB1hj0|k6Bn9TQclvPg|k7AyVvel3zj5|k7PqxtWeXah5|k9iWHf3Qhfmp|kC59p6UNgarR|kJFUGp3ph8k5|kJKn1zUnDxhe|kJkGYFfx7lBt|kLYw93QJ9XAz|kM6uqGsndIhT|kMxAD08O4bBK|kPbt2OPr2hb3|kQoEEJE6uLLr|kQqfb7nRYv62|kRWp2fskNPWy|kRq0bxN6ilH2|kSSwsKlmnC01|kSidlLhiuIDe|kTsXuBhmeier|kUfqrgctqKc1|kWdeekhWiBAH|kbxGTKKv2VFO|kc1Dnr5SM6Xt|kdtB1QxmErDr|kdzqjiWpKRAt|kedtpEjUiAnv|kf23K4wGskrn|kgXB8ovoJS2c|kgxzVWfFvOmT|khYfTqwNh0wG|ki6OeXfXp1JN|kjOWKKAZMyQr|kjSiWaFP9DdL|kjhDiVjgT3KT|klVzZySxiBe8|km8cgz3hKhGr|kmg3z6hz8Bhp|kmvvgJHV0PYC|ko9sm515zTRK|kofsSdZXTeOn|kp76fJCeNXci|krvA4lxYJz93|ksLgtnJxgNzo|ksvQbfQaI2zh|ktZAdGDiu8uD|kudNuzSMxj1t|kuvhUELDruDx|kvHNo6bGM2L3|kw7stiqhiaVb|kx2dsmpUXawS|kxCJ2RqvuqCu|kzvoe7twcz2F|l0OfPJcLgslP|l1YckSCaAr4a|l2iq5NnB6AIi|l3GUzdbl8XIF|l4DFbTbAcA0Q|l4yMSei95hET|l6r9R1cU26pu|l984HjIsdzhf|l98AAYVIrScG|l9JHUwYDW0k9|lBVgdtg7RvPZ|lBqKwpqc6R5h|lC7WBzDMdKa4|lEDETfxA9uqu|lGmnXwv7HCqt|lHctwvWmxkVp|lITdImCDjbWp|lJFZBlfqCJaz|lJfxsucJaXhm|lLAj4qsKpu9n|lM9BkT1xnJTZ|lMeUcZdKhYZ0|lMlOOdejwlGz|lMr7BynO55NH|lOyTKo5iEhFI|lPpEnjs0Momi|lQCuNQ5bKdt1|lQEIyj30OhBe|lR7YVK3Xg33O|lR8gGsASUxaU|lRxI0wuXz7jU|lUKmd0PqtNyK|lUSCSMth7soB|lXg2JzJexIqx|lXz56a0AjRrI|lb4rb0dBYAt5|lbHa9ozN7X5i|lbcyBCT4dvLJ|lcZzkt9oMek8|lcxzA6FOBAUs|le4Qf0mrJKa2|lekGpuLfvPPO|lexuFQhqtsQs|lfVbuglt4ueB|lhjnz13R0QdU|li67o13EKtgs|liYqhiOtrzG5|lkhWKylflG1L|llWg6Xcy3K6e|lmNpUaen4gDz|lmZetQeCzSTS|lo8eltiCtthD|loSi6rg9kY3C|logzoxTDnjxc|lpwDX02rJVm2|ltEjl00ZMtGW|lvkdUawoZeaK|lw9nCgU7PfN2|lx3uj1KhF4wU|lyCqWQdssqjw|m1Dt7UCKH31k|m1H0cpmy164d|m1yK82J3jaCG|m2hCBBkbKHgo|m3JuEtAFEZko|m4k9Upctdgsc|m7GKANdAVPiN|m7Jmo3iJodLP|m7NFwljOSXjw|m7X3aduov61u|m7vanepvzUrC|m8QkJIjUYyaZ|m99qVyvgo8Ak|m9nJbk7syYhb|m9y6rpxqvIet|mBX6K1Pv4YiG|mDyfhSzz1amx|mEHRzvgrWIx8|mELeGZrKo1VY|mEuAqrjITywZ|mEuDaxSPREwn|mFvaGI1La9N8|mGN1Xc4utQV6|mGh4ha1nPTC2|mGzIEzAdfYjb|mIgpQysOHQ7T|mIrfs4wXQf8L|mL9OdcKwNz3X|mNZ1kjICWQTG|mPX14iEv7kDC|mPZNQWQFPAe|mR2BxZXwqn4C|mReUeeXri2tx|mRxocPLCVb9q|mSCf6d9exPeX|mTNAve0Y4Pgn|mTxBRC3iX5zi|mU8pEbjwjzLb|mUbar08KM7mh|mVGeBpQP4SpH|mWGWFicmi1Ve|mXuVKbExe5cC|mZPOYA9kPMff|mZnV3teerrf1|mbA9WYHQxd80|mbUGs7G7TYWE|mcSzA4cAGN2T|mcSzA4cAGN2TJ|mdZYlduUMFJW|mdjgsr1DJthQ|meZjav0PoTeP|mfOxbe07PVf8|mfpOryGxzAem|miJAv6IlnrE6|miWo5rGbnZl6|miodOfIeyZOb|mitdMkVgaTog|ml2uk9gqF1ej|mlP62jGlymDP|modgtNRLNWGt|mqpIyuVFFzl7|mqwIdLWEID9J|msdOXmlrIgSx|msicKQHuK7ri|mszvCgDlbBM8|mtPDw6KfjPCu|mwPu3JW1mGCK|my5AXuzsFgtV|myaGMyj5V8EW|mzTker8SyfEW|n16hMKKKJNp3|n3x5Z9N1EoAN|n4GKtdNxZwp8|n5bMCdt7g9mR|n5t4KEigaZTC|n7fPDSma4wwU|n8EcixFEho8t|nAlgUlFGVkjn|nDHgRVZKmePo|nFPVGAnkknqj|nGW1O4Q6JgbB|nIXrLJJEs3g0|nNkm5m0adShb|nRxAIFPjs2DG|nSh3KBHfvz3F|nTg2cMq4VxJC|nV9sDbmGe50s|nYeNCq3NgLhN|nYuuYK6BjU68|nZJNdKg6VG8d|nbKOr1oyuXyc|ncUlttCsxCW7|ncZVKbIYYf3O|nd0rHDZGAbcf|nfYPeiBGZQjk|ngZFNHOK1lb9|nhRfTZzttQEd|njxJ2G6xouda|nqCNkkqPWPbd|nrR2GzHb81x5|nrl0c56n7XB7|nu74AW2rZOkj|nv104JC9gv0n|nw4RxT4839rB|nwVZ2WdDvi8B|nzRqGsAB9Axc|o263QHX4CEbt|o34jg2nTXxOW|o38nux5ejFj6|o5BeJijZ89vG|o6dgLv6YlIDu|o7DlohezvgE2|o8yqyB9TwrxY|o99SgKObtfGI|o9V025Qg81na|oAxufjx6FQWG|oBFVqcN5JbP5|oBVUNc0a3Cuu|oCUDF5gNx9Td|oD6noBNMuvlW|oDA1NCEaxKwp|oEb7W3eG79z3|oGFpgdhi9OG3|oHj1O1OhmHVB|oKvD53LVCAX8|oMF7Iq0CMNCS|oMIvgTJ8tfPa|oMzUHaSSCEg4|oNExvtrf9Dtv|oP42LWd46PRQ|oPDcgBIGuIQu|oRztHr4wMUoc|oT2zS5VRQZgM|oTNaLaQ1jrNv|oUnS77caxmtD|oUz1ouSR45f9|oV7lktzx1jPY|oWYoStejrXTu|oXZ1UuEXAdN5|oZTZSlufnl1h|oZWK7gSTLRh8|oa1RfLcx99uX|oah4HCxWXznc|oaivv9IBHw16|oay0M2II4caT|oc4vJypK2abV|oci4aaWfc3v|oecNnCmTCbzr|ojjwLMKd4jVH|oklP3D0d8SqV|okw6DFGlogmj|oljVEvbJFqSi|omgUgvk5S3la|on7PVJf6K7Ih|onNfqVaWH43E|onVjzJeb6oU9|oppbxEM5pi7S|oqaXh8uENgOr|orcvmzvTA5mv|ot50FYRhw6Km|ovXxEhA34FVe|owYtfjcLdA2o|oy8aY5Cq1W1b|ozSSRk1y4G4q|ozTuorCAJNJF|ozzw4MK7TVyy|p18SbE7KdPDX|p1Ew4EjxXpbV|p2AqRFgHAXSR|p2Mm0XTWnbQ7|p3bcpML02yg5|p5DXn0PxD7Zt|p5eTgKjA3BGb|p7qhrjTVikwU|p9gfvhluEt3B|pAGsMiR3QUDL|pBG7kAnLj4nT|pBoMtSTwGvDQ|pCjmdadPnWnT|pCkcihiqszys|pCxWcHMIPq9R|pG3RFi8fTVeM|pGM6aafazJpO|pHFFQMYrEcF6|pHibo8cw8pQa|pI7hRLos9FUk|pIKqIowb3902|pMxtW2UabidU|pNs3jhEdSCfK|pNuKcxUtnh0N|pOUkjlA4ODqF|pObPYMYNtyhz|pOkLWyNkPQX2|pPErz2tba4eK|pRE19GLvU0bv|pSGmx8aS7JKG|pSg0KOXleSWp|pVYiOTxv77A1|pZmKbhbndLaL|pbkPgmgAle2q|pbyjFbaUvWwZ|pcGrcB8T3WtB|pcYGKBdWYmL1|pcw036cfDE9S|pevb3wCc0IRy|pkasMkvC78Co|pmI3LpncARNM|pnUKRQKrIwqo|pnxvkMNeBto2|pvNAeqJlAEWh|pwVhw2XQuajX|px5J5Uubc1jV|pyBaDN4PU1RL|pyqMsma2hqXN|qnZlemxOXgtD|rAhsGEJf2uJc|rFQMFoNAclJI|re5cMs3TU2oz|rpslCNe7GGJ1|sJpUv3zIqupk|sdlbsHWFeNlB|soAfFkkmEiEi|t9KgNAIgPnWK|tDxJnxEc3UbH|tge1DqfVsKgT|uJsSDX06cpBH|uNAZR940JXv1|uRcLjKZT7xyK|vDK7AjHPorVh|vpS6La7175Ix|wDkTyblfro4K|wJ0XBUNKF6fY|wJeC9LIotY0l|wKTLocwnBjCk|wT1Df94fey2P|xH0akv0UL43N|xPenu0bzdouB|xr5GEIQOVq80|y46xSP7byKJr|yTcRRxMllc95|zKQXpWOF7BLJ|zhAh66teGkGd|zjxH1wSFnLIK|zk7unPOIZGjv|zrdX2PfRgLlf|zuyW8sC8aR8q|orlaASiXyumc|ndEa7lIsZcu7|hOem1ANTAQ3e|bP6tGs7v1GNE|kHPXTUlAcKot|czIdk3D45PdW|gfGb7pmwu2bB|cIpji1Kutf0d|c258c1UmjHZt|oO7ByneOs3Yh|noMBVg18bKLJ|oFKbhE2wsw8S|lCJFKGrLorMv|pRGbKEk8IYyN|arixZiNz2D85|iN5cHpGYSy01|kOcymW1pEWou|fVIAtgWfvszw|oBqoKemBhrdI|dtr362L2N5k1|g4A7l0Bx13mv|pVi564BkhVJb|omV4UOeKae9U|nwy39gzhd6Yp|kDAYIm1bj2su|e3XQ3cVzwBNp|cSCDw1ItgwQS|yviKLixtDIeo|AHVMp4xREw5s|oa7MhjultoLb|lfaInW01ZQLS|riGjW9ZrrmAJ|taYfYhFJeteN|bXaz31lFBuEM|itI1ZMjDcS8e|dW7e44XrNzr3|pZSHjvypU52w|a1BnsF21nAX9|e067xrFdHmuK|FRWsWFpVkcs9|v7CiKCXwJrV6|QiuNCWBpzfTG|tneoKzbyyMeS|loRcwaBgCjBc|m09wtxjntfBQ|ddcyzmzkqVB8|faKNZdsvVFTU|gispZiM0VmHo|mEwGOe7Ebkws|oiemjZkQYwNF|pZxNoetgBEek|dvUvBecbC7e1|gJVdB7aI7yL6|det1daq80qgx|eAnz7JCw3RAp|lIXSNFiLqXx7

Loop, Parse, Chats, |
{
	Step := A_Index
	Error := Func(A_LoopField)
	If Error = 2
		msgbox, 4112, , "Ссылка нoмер: " Step "`nСменить айпи"
	Sleep 100
}
msgbox, 4112, , "Завершено: " Step
ExitApp

Func(id) {
	static start, skypetoken, csrf_token, threadId, longId
	
	HTTP.Open("GET", "https://join.skype.com/" id, true)
	SetDefaultHeader()
	If send() 
		Return Error(id, A_LineNumber)
	GetAllResponseHeaders := HTTP.GetAllResponseHeaders()
	launcher_session_id := RegexReplace(GetAllResponseHeaders, "s)^.*Set-Cookie: launcher_session_id=(.+?);.*$", "$1")
	csrf_token := RegexReplace(GetAllResponseHeaders, "s)^.*Set-Cookie: csrf_token=(.+?);.*$", "$1")
	
	HTTP.Open("POST", "https://join.skype.com/api/v2/conversation", true)
	SetDefaultHeader()
	If send("{""shortId"":""" id """,""type"":""wl""}") 
		Return Error(id, A_LineNumber)  
	ResponseText := HTTP.ResponseText
	threadId := RegexReplace(ResponseText, "s)^\{""Resource"":""(.+?)"".*$", "$1")
	longId := RegexReplace(ResponseText, "s)^.*,""Id"":""(.+?)"".*$", "$1")

	if !start
	{
		HTTP.Open("POST", "https://join.skype.com/api/v1/users/guests", true)
		SetDefaultHeader()
		HTTP.SetRequestHeader("csrf_token", csrf_token)
		If send("{""name"":""" GuestName """,""threadId"":""" threadId """,""shortId"":""" id """,""longId"":""" longId """,""flowId"":""" launcher_session_id """}") 
			Return Error(id, A_LineNumber)  
		skypetoken := RegexReplace(HTTP.ResponseText, "s)^.*\{""skypetoken"":""(.+?)"".*$", "$1")
		start := 1
	}
	Else
	{
		HTTP.Open("POST", "https://join.skype.com/api/v1/users/guests", true)
		SetDefaultHeader()
		HTTP.SetRequestHeader("csrf_token", csrf_token)
		If send("{""name"":""" GuestName """,""threadId"":""" threadId """,""shortId"":""" id """,""longId"":""" longId """,""flowId"":""" launcher_session_id """}") 
			Return Error(id, A_LineNumber)   
	}
	
	; MsgBox % GetAllResponseHeaders "`n`n" Script.eval("(" . HTTP.ResponseText . ")").skypetoken "`n`n" skypetoken

	HTTP.Open("POST", "https://client-s.gateway.messenger.live.com/v1/users/ME/endpoints", true)
	SetDefaultHeader()
	HTTP.SetRequestHeader("Authentication", "skypetoken=" skypetoken)
	If send("{""endpointFeatures"":""Agent""}") 
		Return Error(id, A_LineNumber)  
	registrationToken := RegexReplace(HTTP.GetAllResponseHeaders(), "s)^.*Set-RegistrationToken: registrationToken=(.+?);.*$", "$1")

	HTTP.Open("GET", "https://client-s.gateway.messenger.live.com/v1/threads/" threadId "?view=msnp24Equivalent", true)
	SetDefaultHeader()
	HTTP.SetRequestHeader("RegistrationToken", "registrationToken=" registrationToken)
	If send() 
		Return Error(id, A_LineNumber)
	JSON := HTTP.ResponseText
	oJSON := Script.eval("(" . JSON . ")")      ; topic :=  oJSON.properties.topic  ;	 "`n" oJSON.properties.creator
	topic :=  oJSON.properties.topic
	oJSON := Script.eval(oJSON.members)
	Loop % oJSON.length
	{
		str := oJSON[A_Index-1].id
		if !instr(str, ":guest:")
			list .= RegExReplace(str, "i)^8:", "", , 1) "`n"
	}
	if Debug
		MsgBox % "Ссылка нoмер: " Step "`n" topic "`n" list
	
	; SendMessage("text", name, registrationToken, threadId)
	
	; Exit
	; HTTP.Open("GET", "https://join.skype.com/guests/leave?threadId=" threadId, true)
	; send() 
	Return 0
} 

send(body = "") {
	HTTP.send(body) 
	HTTP.WaitForResponse()
	Status := HTTP.Status
	If (Status != 201 && Status != 200) 
		Return 1
	Return 0
}

SetDefaultHeader() {
	HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
	HTTP.SetRequestHeader("Pragma", "no-cache")
	HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
	HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
	HTTP.SetRequestHeader("Content-Type", "application/json")
}

SendMessage(message, name, registrationToken, threadId) {
	now := A_NowUTC
	EnvSub, now, 1970, seconds
	now .= A_MSec
	HTTP.Open("POST", "https://client-s.gateway.messenger.live.com/v1/users/ME/conversations/" threadId "/messages", true)
	HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
	HTTP.SetRequestHeader("Pragma", "no-cache")
	HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
	HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
	HTTP.SetRequestHeader("Content-Type", "application/json")
	HTTP.SetRequestHeader("RegistrationToken", "registrationToken=" registrationToken)
	body = {"content":"%message%","messagetype":"RichText","contenttype":"text/html","Has-Mentions":"false","imdisplayname":"%name%","clientmessageid":"%now%"}
	HTTP.send(body)
	HTTP.WaitForResponse()
}

ExitApp:
	HTTP := ""
	OnExit
	ExitApp 
	
Error(str, Line="") {
	If Debug
		msgbox, 4112, , % "Ссылка нoмер: " Step "`n" str "`n" Line "`n" HTTP.Status "`n" HTTP.StatusText "`n" HTTP.Option(1) "`n" HTTP.GetAllResponseHeaders() "`n" HTTP.ResponseText
	If (HTTP.Status = 429 || HTTP.Status = 503)
		Return 2
	Return 1
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

71 (изменено: serzh82saratov, 2018-01-18 01:14:43)

Re: AHK: Internet Explorer Platform APIs

Malcev пишет:

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

Так в броузере может и банят из за запроса токена, потому что судя по всему он его обновляет при заходе в новый чат.
В питоновской библиотеке так понял всегда при подключении проверяется tokenExpiry в conn.py, по поиску в блокноте Expiry ещё в client.py есть, но по какому запросу оно там работает не разберёшь конечно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

72 (изменено: Malcev, 2018-01-18 02:17:05)

Re: AHK: Internet Explorer Platform APIs

У меня при открытии второго чата https://join.skype.com/m9FV2t2Sn4pJ в кукисы сразу же прописывается инфа полученная ранее:

Cookie csrf_token=1aa5ae1***; MSFPC=GUID=789e7b06cb*****2a2ff24d78d6b5b54&HASH=7***e&LV=20**801&V=**4&LU=1**661432; guest_token_19%3Ae34***76bc4de1ba1de79a71%40thread.skype=lhfs1fBMb*****jZ4j_6H2LGIPtzd27QVHiFtgVFFMVf8pnPwkviSlFIWAQAAAAkwMTk6ZTM0N2ZhNDk1OWZmNGY3NmJjNGRlMWJhMWRlNzlhNzFAdGhyZWFkLnNreXBlLgFPAnGAyPSlCwA%3AeyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZ****IjEzIn0.eyJpYXQiOjE1MTYyMjY0NDIsImV4cCI6MTUxNjMxMjg0Miwic2t5cGVpZCI6Imd1ZXN0OnRlc3RfMDRjMGQxZDYiLCJzY3AiOjc4MiwiY3NpIjoiMTUxNjIyNjQ0MiJ9.U0SasQM5yYfYo3viRqHAlPintiPWCdEhkOThNRagHuafV7p41YnK_er6MGSZsOwHqjjfT8Kj-Akw2SoLcYCOV1ra1r8gVr2gYG37yFmgVCxwO7wHv3dA-2VB42ud0c6uV9zlHByV1mZaGHw-CAoWjHAQxKj8ihNTn4znCJy8VWsf2Pbio17n-Pq804paifQqKOViSg90a7M-giOJ; launcher_session_id=ff7****ac; guest_flow_type=standard; SC=LC=en:TM=1516****43; SWADCC=TS=15162****50:TM=1516*****50

73

Re: AHK: Internet Explorer Platform APIs

Можешь поподробнее, это запуская мой код, из какого запроса инфа, если оставить работать код есть бан.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

74

Re: AHK: Internet Explorer Platform APIs

А возможно я ошибался и для каждого нового чата гостю нужен новый skypetoken.
Так как пишут:

Skype also supports the notion of a guest, who can access a conversation from an invite, without a Skype account.

A guest account differs from regular accounts in that:

    They can only access a single group conversation.

https://skpy.t.allofti.me/protocol/login.html

75

Re: AHK: Internet Explorer Platform APIs

Malcev пишет:

Я один раз получаю token в https://join.skype.com/api/v1/users/guests.
После этого он у меня во всех чатах только посылается, либо в хедере либо в боди.

Так у тебя так работало, или ты ошибался что работало именно так?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

76

Re: AHK: Internet Explorer Platform APIs

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

77

Re: AHK: Internet Explorer Platform APIs

Кстати а где HTTPRequest хранит кеш и.т.п., как затирать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

78 (изменено: Malcev, 2018-01-18 20:15:02)

Re: AHK: Internet Explorer Platform APIs

Не думаю, что где-то сохраняется что-либо если самому специально не сохранять, но чтобы сервер не выдавал ответ из кеша мы отправляем такие заголовки:

HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")

А вот Msxml2.XMLHTTP вроде берет кукисы с IE.

79

Re: AHK: Internet Explorer Platform APIs

Вообщем пришли пока к тому что бана не пойми как избежать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

80

Re: AHK: Internet Explorer Platform APIs

Можно посылать от реального пользователя.
Или работать через список прокси если банят по ай-пи.

81

Re: AHK: Internet Explorer Platform APIs

От реального с авторизацией надо разбиратся, а проксей ненапасёшся.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

82

Re: AHK: Internet Explorer Platform APIs

Ну тут вроде всё понятно расписано:
https://skpy.t.allofti.me/protocol/logi … -microsoft
А если нет, то можно залогиниться через ИЕ и проверить, что отправляется по этим запросах, что описаны в АПИ.

83

Re: AHK: Internet Explorer Platform APIs

А если я залогинился, как мне отправить запрос XMLHttpRequest из IE? Вижу например что отправляется какой то запрос, как мне его воспроизвести?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

84

Re: AHK: Internet Explorer Platform APIs

Не понимаю, через что залогинился и откуда отправлять.

85 (изменено: serzh82saratov, 2019-08-13 13:09:02)

Re: AHK: Internet Explorer Platform APIs

Залогиниться через Internet Explorer. Зашёл на сайт, ввёл логин пароль, вошёл в свою учётку. Далее вопрос - как через объект Internet Explorer отправить запросы аналогичные тем что отправляет HTTP.Open, и получить на них ответ.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

86

Re: AHK: Internet Explorer Platform APIs

Navigate?

87

Re: AHK: Internet Explorer Platform APIs

А зачем именно через Internet Explorer посылать? Отдельным запросом нельзя воспользоваться?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

88

Re: AHK: Internet Explorer Platform APIs

Malcev пишет:

Navigate?

Спасибо, поищу.
teadrinkerНеобходимо визуальное представление, а с HTTPRequest придётся тоже авторизоваться, получится два авторизованных подключения с одного компьютера, а это нежелательно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

89

Re: AHK: Internet Explorer Platform APIs

Основное отличие WinHTTP.WinHTTPRequest.5.1 от Msxml2.XMLHTTP в том, что Msxml2.XMLHTTP подхватывает автоматом кукисы от IE.

90

Re: AHK: Internet Explorer Platform APIs

Точно, авторизовался в IE, потом отправил скриптом запрос через Msxml2.XMLHTTP — остался авторизованным!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

91

Re: AHK: Internet Explorer Platform APIs

Ты имеешь в виду что авторизовавшись через Internet Explorer, можно просто сделать запрос через XMLHTTP? И он подхватывает кукисы копий IE только своего процесса, или всех запущенных?
И XMLHTTP будет удобнее использовать чем Navigate, или ты просто привёл это как альтернативу?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

92

Re: AHK: Internet Explorer Platform APIs

А есть у кого примеры? У меня не получается, XMLHTTP возвращает всегда одинаковый HTML в котором нет ничего полезного, но такой же запрос во вкладке отладчика - сеть возвращает нужную мне Json строку. Привести пример не могу, так как учётка чужая. С Navigate примеров тоже не нашёл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

93

Re: AHK: Internet Explorer Platform APIs

Я просто залогинился в IE на этом форуме, потом сделал запрос страницы через Msxml2.XMLHTTP — судя по тексту остался авторизованным.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

94

Re: AHK: Internet Explorer Platform APIs

teadrinker пишет:

Я просто залогинился в IE

В скрипте, или просто в браузере?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

95

Re: AHK: Internet Explorer Platform APIs

Просто в браузере. Но я думаю, что у всех вариантов запуска куки будут в одном месте.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

96

Re: AHK: Internet Explorer Platform APIs

У меня почему то ответ не авторизованный, а ты как делаешь запрос?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

97

Re: AHK: Internet Explorer Platform APIs

whr := ComObjCreate("Msxml2.XMLHTTP.6.0")
whr.Open("GET", url, false)
whr.SetRequestHeader("Pragma", "no-cache")
whr.SetRequestHeader("Cache-Control", "no-cache, no-store")
whr.Send()
MsgBox, % Clipboard := whr.ResponseText
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

98

Re: AHK: Internet Explorer Platform APIs

Тоже самое.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

99

Re: AHK: Internet Explorer Platform APIs

Чекбокс «Запомнить меня».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

100

Re: AHK: Internet Explorer Platform APIs

Включен.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui