Re: AHK: Internet Explorer Platform APIs
Тогда не знаю, может у тебя настройка очищать куки?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Тогда не знаю, может у тебя настройка очищать куки?
Cбросил на настройки по умолчанию, не помогло.
Navigate?
Так и не понял как его использовать. Ввожу в него адрес запроса, и браузер выдаёт "Вы хотите покинуть страницу?".
Я его не использовал.
Но нужно так:
https://www.tutorialrepublic.com/codela … ;file=form
IE := ComObjCreate("InternetExplorer.Application")
IE.Visible := True
IE.Navigate("https://www.tutorialrepublic.com/examples/actions/confirmation.php",,, BinArr_FromString("username=user&userpass=pass"), "Content-Type: application/x-www-form-urlencoded")
BinArr_FromString(str) {
oADO := ComObjCreate("ADODB.Stream")
oADO.Type := 2 ; adTypeText
oADO.Mode := 3 ; adModeReadWrite
oADO.Open
oADO.Charset := "UTF-8"
oADO.WriteText(str)
oADO.Position := 0
oADO.Type := 1 ; adTypeBinary
oADO.Position := 3 ; Skip UTF-8 BOM
return oADO.Read, oADO.Close
}
У тебя что-то не то с IE, так как должно с Msxml2.XMLHTTP и сайтом script-coding.com всё получаться.
Но с некоторыми не выходит, например с inbox.lv.
Там сразу выскакивает ошибка в праве доступа и если прописать в настройках security - access data sources across domains - enable, то кукисы о логине возвращаются, но логина в responsetext не происходит.
Даже если отпралять все кукисы вручную, то с Msxml2.XMLHTTP логина всё-равно не произойдет, а с WinHTTP.WinHTTPRequest.5.1 логинится ОК.
Наверное какая-то политика безопасности за это отвечает.
Можешь еще получать все кукисы с IE через апи и отправлять их через WinHTTP.WinHTTPRequest.5.1.
Написал скрипт для авторизации на inbox.lv.
Через WinHTTP.WinHTTPRequest.5.1 логинится, а через Msxml2.XMLHTTP нет.
Странно.
login := "login"
pass:= "pass"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
; HTTP := ComObjCreate("Msxml2.XMLHTTP.6.0")
HTTP.Open("GET", "https://login.inbox.lv", false)
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()
salt := RegexReplace(HTTP.ResponseText, "s)^.+?<input name=""salt"" type=""hidden"" value=""(.+?)"".+$", "$1")
data := "mailplus=0&language=ru&passhash=&redirect_url=https%3A%2F%2Fwww.inbox.lv%2F%3FactionID%3Dimp_login&redirect_vars=&salt=" salt "&imapuser=" login "&pass=" pass
HTTP.Open("POST", "https://login.inbox.lv/login/login", false)
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/x-www-form-urlencoded")
HTTP.SetRequestHeader("Referer", "https://www.inbox.lv/")
HTTP.Send(data)
msgbox % http.getallresponseheaders
msgbox % clipboard := HTTP.ResponseText
А не трудно сделать такой же пример с начальной авторизацией в Internet Explorer?
И такой вопрос, судя по всему на интересующем меня сайте с помощью запросов периодически меняется токен. Как то можно отслеживать запросы которые браузер делает сам, также как это происходит во вкладке сеть.
И бывают ли входящие запросы, от сервера к клиенту, или о всех изменениях на сервере можно узнать только посылая ему запросы?
А не трудно сделать такой же пример с начальной авторизацией в Internet Explorer?
Так я же уже приводил пример как отправлять пост-запросы в IE.
Как то можно отслеживать запросы которые браузер делает сам, также как это происходит во вкладке сеть
Да, через снифферы.
бывают ли входящие запросы, от сервера к клиенту, или о всех изменениях на сервере можно узнать только посылая ему запросы?
Можно через вебсокеты:
https://habr.com/ru/post/162301/
Так я же уже приводил пример как отправлять пост-запросы в IE.
Да, уже забыл, в 104.
Да, через снифферы.
Через AHK никак?
Можно через вебсокеты:
Запросы по сокетам тоже снифферы могут определить?
Через AHK никак?
Сомневаюсь. Проще найти устраивающий сниффер и парсить его лог.
Запросы по сокетам тоже снифферы могут определить?
Могут, но не все.
Надо тестировать - их достаточно много.
А ты какие используешь?
Я встроенный в IE на win7, так как IE на Win10 не всё показывает, либо, когда надо посмотреть, какие бинарные данные отправляются, то на той же семерке HttpWatch Professional, так как для win10 народной версии нету.
А на win10 через хром пару раз смотрел, когда с IE на сайт не зайти было.
Ясно.
Встречал где нибудь блокировку от имитации кликов по элементам.
По идее это должно работать там, где не работает метод click(). Или javascript может проверять физические состояния кнопок.
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()
Element := oDoc.getElementsByClassName("gsc-search-button gsc-search-button-v2")[0]
; Element.click()
MsgBox MouseEvent
event := IE.document.createEvent("MouseEvent")
event.initMouseEvent("click", true, true, IE.document.parentWindow, _, _, _, _, _, _, _, _, _, _, _)
Element.dispatchEvent(event)
Мы когда-то общались о событиях.
Сейчас все нюансы уже и не вспомню.
http://forum.script-coding.com/viewtopic.php?id=9183
https://www.autohotkey.com/boards/viewt … mp;t=59637
Не помогает.
А есть вариант мониторить какие функции JS запускаются, например при клике по какому то элементу.
И в одной теме и во второй об этом написано:
http://forum.script-coding.com/viewtopi … 28#p130328
Если вписать в поиск какой-то текст и поставить на эту кнопку в консоле мониторинг событий monitorEvents($0, "key"), то там отлавливаются события нажатия enter.
Я читал, но не пойму, "monitorEvents($0, "key")" это надо ввести в консоль и нажать ентер? У меня так пишет - "undefined".
Не пойму в какой поиск вбивать, как "поставить на эту кнопку в консоле мониторинг событий".
Что то сразу не работает..
Выбираешь какой-то элемент стрелочкой в верхнем левом углу, потом заходишь в консоль, вписываешь monitorEvents($0), после чего водишь по элементу мышкой.
Понял, я думал надо ентер нажать после ввода команды.
А у тебя работает по твоей ссылке?
3. Поиск обработчиков событий, привязанных к элементу
Ну так тоже самое.
Выбираешь элемент и вписываешь getEventListeners($0).
И энтер нажимать надо.
А, видимо теперь тот синтаксис не работает.
getEventListeners(document.querySelector(".RNmpXc"))
У меня работает.
Можно еще так:
getEventListeners($(".RNmpXc"))
Понял откуда ноги растут у этой проблемы:
Написал скрипт для авторизации на inbox.lv.
Через WinHTTP.WinHTTPRequest.5.1 логинится, а через Msxml2.XMLHTTP нет.
Странно.
Для авторизации там нужно указывать referer.
А Msxml2.XMLHTTP не может его указать из-за политики безопасности Microsoft.
Проверял так:
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
; HTTP := ComObjCreate("Msxml2.XMLHTTP.6.0")
HTTP.Open("GET", "https://www.whatismyreferer.com/", false)
HTTP.SetRequestHeader("Referer", "malcev")
HTTP.Send()
msgbox % HTTP.ResponseText
У меня работает.
Можно еще так:
У меня с $ ничего не работает, только как в 124.
Через WinHTTP.WinHTTPRequest.5.1 логинится, а через Msxml2.XMLHTTP нет.
А есть смысл в Msxml2.XMLHTTP, в тех случаях когда он не подхватывает куки.
http://forum.script-coding.com/viewtopi … 72#p135572
https://docs.microsoft.com/en-us/previo … 3(v=vs.85)
Всё таки не пойму логику как делать запрос через Navigate.
Например я нахожусь по адресу https://server.com/PD/#SUBMISSION.
Вижу что делается запрос по адресу https://server.com/PD/Operation/count.pd, с телом запроса "{}", тело ответа содержит Json.
Headers указал в переменной из данных выбранных через пункт меню на запросе "Копировать заголовки запроса".
PostData оставляю пустое.
Если ввожу url отличный от "https://server.com/PD/#SUBMISSION" или oIE.document.Url, пишет что покинет страницу.
То есть даже не понятно куда вводить адрес запроса, и где искать ответ на запрос.
Ну в принципе логично.
Само название метода об этом говорит.
Может как-то через ajax можно, он не рефрешит страницу.
Но лично я не понимаю, что ты пытаешься добиться.
А есть смысл в Msxml2.XMLHTTP, в тех случаях когда он не подхватывает куки.
Он всегда подхватывает куки, кроме тех случаев когда нужно отправлять referer либо использовать redirect.
Может как-то через ajax можно
Не нашёл примеров на анк.
Но лично я не понимаю, что ты пытаешься добиться.
Да вроде всё просто, браузер делает раз в минуту запросы, я хочу сам делать эти запросы по чаще.
И если делать через WinHTTPRequest, то где в IE искать нужные данные для заголовков.
Наверное через execScript.
Не проверял.
А зачем посылать чаще?
Почему именно через браузер?
Цель какая всего этого?
где в IE искать нужные данные для заголовков
Для каких заголовков?
Наверное через execScript.
Получать значения каких то переменных, или как?
А зачем посылать чаще?
Надо чаще знать какие данные именились на сервере.
Почему именно через браузер?
Надо чтобы было открыто в браузере, и чтобы было одно подключение.
Мутное задание какое-то.
execScript выполняет какой-либо скрипт.
Может он сможет выполнить и ajax запрос, не знаю.
Зачем использовать WinHTTPRequest, если есть Msxml2.XMLHTTP?
Что значит одно подключение и почему нельзя использовать несколько?
Может он сможет выполнить и ajax запрос, не знаю.
Ты это когда то делал, я что то не могу понять как это должно выглядеть.
Зачем использовать WinHTTPRequest, если есть Msxml2.XMLHTTP?
Видимо нужен referer, иначе не авторизованный.
Что значит одно подключение и почему нельзя использовать несколько?
Ну например если запустить в двух браузерах одну учётку, то сервер это видит как 2 подключения, и начинает рвать соединение.
Не, не делал.
Видимо нужен referer, иначе не авторизованный.
Проверить можно с помощью авторизации на winhttp и проверки нужен ли referer (как я сделал с inbox).
А возможно как то узнать что XMLHTTP "подхватил куки", не делая запрос, просто проверить какое-то его свойство.
А с чего вдруг он не должен их подхватывать?
Просто интересно как это сделать. Ну или например на одном ресурсе в IE открыты две учётки, перед запросом надо как то понять из под какой из них запрос пойдёт.
Никогда этим не интересовался.
Попробуй через internetgetcookieex.
ЗЫ если ты хочешь обмануть сервер, то не получится - по фингерпринту в миг вычислят.
https://www.autohotkey.com/boards/viewtopic.php?t=29519
Как то мало информации в ответе.
MsgBox % InternetGetCookieEx("http://forum.script-coding.com")
; Requires Internet Explorer 8.0 or later.
InternetGetCookieEx(URL) {
Loop, 2 {
if (A_Index = 2) {
VarSetCapacity(cookieData, size, 0)
}
DllCall( "Wininet.dll\InternetGetCookieEx"
, "ptr", &URL, "ptr", 0, "ptr", &cookieData, "int*", size
, "uint", 8192 ; INTERNET_COOKIE_HTTPONLY
, "ptr", 0 )
}
return StrGet(&cookieData)
}
В смысле должно быть HTTPOnly кукисов больше?
Как то не похоже что этого хватит для того чтобы отправить WinHTTPRequest с заголовками как при полной авторизации.
Нужно имея авторизацию в браузере, отправить запрос, но не запрашивая новую аутентификацию в WinHTTPRequest .
А ты проверял?
ext-locale=s%3Aen-US; ext-expires=d%3AFri%2C%2014%20Aug%202020%2015%3A11%3A46%20GMT
Там где мне интересно, этого мало.
Так в чем проблема посмотреть чего не хватает?
Имеешь ввиду какие то постоянные заголовки?
Смотришь все кукисы в IE, вставляешь их в winhttp, отправляешь без всяких заголовков - проверяешь залогинился или нет, если да, то убираешь по-одному кукису.
Если нет, то копируешь заголовки, отправляешь, пока не поймешь, что из заголовков надо отправлять, после чего убираешь по одному из кукисов.
Не вижу никаких тут проблем.
Смотришь все кукисы в IE, вставляешь их в winhttp
А где их смотреть? Я вижу только заголовки.
Это как заголовки отпралять?
Там же написано - куки.
На форуме уже обсуждали, что такое куки и как их отправлять.
Примеров много, все немного отличаются, но везде в SetRequestHeader заголовок Cookie.
отправляешь без всяких заголовков - проверяешь залогинился или нет
Но я привёл пример на картинке, а там нет ни логина ни пароля, как же оно сразу залогинится.
Но я привёл пример на картинке, а там нет ни логина ни пароля, как же оно сразу залогинится.
Ну а куки для чего по-твоему нужны? ))))
Один заголовок отправляешь с куками.
Ну а куки для чего по-твоему нужны? ))))
В гугле очень много написано.
Один заголовок отправляешь с куками.
Так я и не пойму где ты его сразу находишь такой, после которого сразу можно быть авторизованным.
Отправляй сначала все кукисы, потом по-одному убирай, чтоб понять какой нужен именно.
HTTP.SetRequestHeader("Cookie", "ext-expires=1; ext-locale=2; jsessid=3")
А что значит не нужен, как понять, если авторизации всё равно не будет.
Тогда не знаю. Не вижу смысла гадать без конкретного сайта.
Не знаю как ты это делаешь, я раз уже третий пытаюсь на разных сайтах.
Хорошо. Залогинься в IE на нашем форуме.
И запусти следующий код.
Работает?
link := "http://forum.script-coding.com"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", link, true)
HTTP.SetRequestHeader("Cookie", InternetGetCookieEx(link))
HTTP.Send()
HTTP.WaitForResponse()
msgbox % clipboard := http.responsetext
; Requires Internet Explorer 8.0 or later.
InternetGetCookieEx(URL) {
Loop, 2 {
if (A_Index = 2) {
VarSetCapacity(cookieData, size, 0)
}
DllCall( "Wininet.dll\InternetGetCookieEx"
, "ptr", &URL, "ptr", 0, "ptr", &cookieData, "int*", size
, "uint", 8192 ; INTERNET_COOKIE_HTTPONLY
, "ptr", 0 )
}
return StrGet(&cookieData)
}
InternetGetCookieEx - пусто.
---------------------------
=Test.ahk
---------------------------
Error: 0x80070057 - Параметр задан неверно.Specifically: SetRequestHeader
Line#
009: Menu,Tray,MainWindow
010: Menu,Tray,Disable,GuiClose
012: i := 0
059: link := "http://forum.script-coding.com"
060: HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
061: HTTP.Open("GET", link, true)
062: MsgBox,InternetGetCookieEx(link)
---> 063: HTTP.SetRequestHeader("Cookie", InternetGetCookieEx(link))
064: HTTP.Send()
065: HTTP.WaitForResponse()
066: MsgBox,clipboard := http.responsetext
069: {
070: Loop,2
070: {
071: if (A_Index = 2)Continue running the script?
---------------------------
Да Нет
---------------------------
Попробуй удалить IE, отрестартиться, и поставить заново.
Такое решение не всем подойдёт.
Первый запрос
http://forum.script-coding.com/login.php
с куки
PHPSESSID: 1gipdj4tblgpfd9cv8fmlke4m6
punbb_cookie: MXwyNjU4M2Q4ZXwxNTY3Mzc1NjkwfDgwZDUwNzA5
Если у всех глючнутые IE с различными настройками безопасности - откажись от затеи.
Вчера настройки по умолчанию ставил.
Надо снести IE и поставить заново.
И тогда уже проверять.
Примеры с WinHTTPRequest работают.
А зачем InternetGetCookieEx, я не понимаю как на этом сайте авторизоватся без IE.
Я опять не понимаю, что ты хочешь добиться.
То у тебя возвращаются куки, то нет.
То ты хочешь передать куки из IE в WinHTTPRequest, то спрашиваешь зачем InternetGetCookieEx...
То у тебя возвращаются куки, то нет.
Теперь пропали.
То ты хочешь передать куки из IE в WinHTTPRequest, то спрашиваешь зачем InternetGetCookieEx...
Видимо это сложно.
Надо сначала понять как оно от начала до конца проходит.
Вот написал пример запуска через ajax.
Правда, как вернуть данные из js в ahk, не создавая какого-либо события cвязанного с DOM не знаю, поэтому использовал глобальную переменную в JS.
link := "http://forum.script-coding.com/viewtopic.php?id=8336"
js=
(
function loadXMLDoc(url) {
window.responseText = 'noAnswer'
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE) { // XMLHttpRequest.DONE == 4
if (xmlhttp.status == 200) {
window.responseText = xmlhttp.responseText;
}
else if (xmlhttp.status == 400) {
window.responseText = 'There was an error 400';
}
else {
window.responseText = 'something else other than 200 was returned';
}
}
};
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("Cache-Control", "no-cache, no-store");
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlhttp.send();
}
)
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("http://forum.script-coding.com")
while ie.busy
sleep 50
IID := "{332C4427-26CB-11D0-B483-00C04FD90119}" ;// IID_IHTMLWindow2
window := ComObj(9,ComObjQuery(ie,IID,IID),1)
window.eval(js)
return
f11::
window.eval("loadXMLDoc('" link "')")
loop
{
ResponseText := window.responseText
if (responseText != "noAnswer")
break
sleep 50
}
msgbox % ResponseText
Нечто похожее я сегодня тоже делал, но не нашёл этому применения в плане авторизованных запросов.
Насчёт переменной, не понял зачем ассинхронный запрос, если потом в цикле ждёшь. К какому то элементу событие можно не привязывать, можно добавить пустой скрипт с айди, но я знаю как его добавлять только через appendChild, а он на этом сайте выдаёт ошибку.
#SingleInstance Force
#NoEnv
link := "http://forum.script-coding.com/viewtopic.php?id=8336"
js=
(
function loadXMLDoc(url) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, false);
xmlhttp.send();
return xmlhttp.responseText;
}
)
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("http://forum.script-coding.com")
while ie.busy
sleep 50
IID := "{332C4427-26CB-11D0-B483-00C04FD90119}" ;// IID_IHTMLWindow2
window := ComObj(9,ComObjQuery(ie,IID,IID),1)
window.eval(js)
return
1::
MsgBox % html := window.eval("loadXMLDoc('" link "')")
Gui, Add, ActiveX, Border voDoc x0 y0 w866 h666, HTMLFile
Gui, Show
oDoc.Write(html)
return
Esc::
GuiEscape:
GuiClose:
ExitApp
А у тебя мой скрипт, если ты залогинен на нашем сайте, после нажатия f11 выдает, что ты не залогинен?
Ни после, ни до.
Ты запускаешь скрипт, после появления сайта сам ручками логинишься, потом нажимаешь f11.
Насчёт переменной, не понял зачем ассинхронный запрос, если потом в цикле ждёшь
Да, ассинхронный запрос тут не нужен.
Я просто первый попавшийся код перенес.
Ну и если через jquery работать, то там тоже callback функцию надо указывать.
Ты запускаешь скрипт, после появления сайта сам ручками логинишься
Хорошо что уточнил. У меня видимо из за того что висела копия IE на которой тоже был вход, что то было не так. Если ввести ручками, то 9 из 10 по нажатию вылазят ошибки, потом посмотрю, но бывает что выскакивает авторизованная страница. Если ввести пароли, закрыть скрипт, запустить, то сразу авторизованный, по кнопке тоже.
У меня таких ошибок нету.
Можно и дальше отлавливать ошибки и разбираться в их причине, но на кривом IE в этом нету смысла.
new XMLHttpRequest();
По моему это аналог
ActiveXObject("Msxml2.XMLHTTP");
На старых IE 6 версии и ниже использовался ActiveXObject("Msxml2.XMLHTTP").
Значит я старые примеры смотрел, но оно и на 11 работает.
А плюшки есть?
В смысле в XMLHttpRequest есть referer, в отличие от Msxml2?
Ну так проверь.
Сайт, где показывается реферер я уже постил.
Пример с вызовами ajax тоже есть.
Осталось в код вставить какой-нибудь referer и посмотреть ответ сервера.
Надо будет, я не у компа, думал может ты посмотрел.
Ну и с этими запросами всё как то сложно, может тут реферер работает, а другое что то не работает, и результат тот же, в каком то случае. В общем MSDN это не для всех.
Для успешного логина требования в реферере я встретил только на inbox.lv, хотя имел дело с достаточно большим количеством сайтов.
А так как Msxml2.XMLHTTP не использую, то и забыл, что у него referer не отсылается.
И раньше, до его редизайна, такого требования не было.
Ну или взять filemail.com.
Больше года скрипт работал исправно и пару недель назад перестал.
Пришлось заново смотреть отправляемые заголовки и оказалось, что теперь сервер требует отправлять:
HTTP.SetRequestHeader("Source", "Web")
Так что, дело не всегда в MSDN.
Ну и вообще на Win10 IE глючнее.
Например если следующий код запустить на Win7 и во время его выполнения вручную потыкать по ссылкам, то он будет работать.
На Win10 выдаст ошибку: 0x800700AA - The requested resource is in use.
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
loop
{
ie.Navigate("http://forum.script-coding.com/")
while ie.busy
sleep 50
sleep 3000
}
teadrinker на оффоруме привел более правильное получение результата с колбеков:
Ajax=
(
var xhr = new XMLHttpRequest();
xhr.open("GET", 'http://forum.script-coding.com/viewtopic.php?id=8336', true);
var response;
xhr.onload = function () {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200)
response = '|' + xhr.responseText + '|';
};
xhr.send();
)
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("http://forum.script-coding.com/viewtopic.php?id=8336")
while ie.busy
sleep 50
IID := "{332C4427-26CB-11D0-B483-00C04FD90119}" ;// IID_IHTMLWindow2
window := ComObj(9,ComObjQuery(ie,IID,IID),1)
window.eval(Ajax)
while !res := window.eval("response")
Sleep, 50
window.eval("response = '';")
MsgBox, % res
Ну и вообще на Win10 IE глючнее.
Да, это я сразу понял как поставил 10, и дело касается практически всего. Но что остаётся делать, через пол года поддержки 7 не будет. Новое не допилили, а прежнее выпиливают.
teadrinker на оффоруме привел более правильное получение результата с колбеков
Засланный казачок, помогает только своим.
Но непонятно, зачем нужны такие гибриды. Почему то не работает waitForResponse, но при желании думаю это можно допилить, или установить кэлбек на анк функцию. Также не ясно почему java не может сразу вернуть объект, то есть почему так не работает
return new XMLHttpRequest();
Тут вроде про метод этого объекта https://docs.microsoft.com/en-us/previo … 5(v=vs.85).
Ajax=
(
var xhr = new XMLHttpRequest();
)
ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("http://forum.script-coding.com/viewtopic.php?id=8336")
while ie.busy
sleep 50
IID := "{332C4427-26CB-11D0-B483-00C04FD90119}" ;// IID_IHTMLWindow2
window := ComObj(9,ComObjQuery(ie,IID,IID),1)
window.eval(Ajax)
xhr := window.eval("xhr")
xhr.open("GET", "http://forum.script-coding.com/viewtopic.php?id=8336", 0)
xhr.send()
xhr.waitForResponse()
MsgBox Wait
MsgBox % xhr.responseText
ie.quit()
ExitApp
waitForResponse - это метод не XMLHttpRequest, а ServerXmlHttpRequest.
А его в джаваскрипт использовать не выйдет:
https://www.c-amie.co.uk/technical/emul … avascript/
Чтобы отправить ответ, вы должны войти или зарегистрироваться