Тема: AHK: Поиск и сравнение ключей с серийным номером.
Добрый вечер всем читающим. Дело в том, что никак не могу сделать рабочий скрипт, прошу помощи у тех, кто не занят сильно. Суть проста, он заходит на сайт где есть несколько "ключей" написанных в столбик, нужно что бы он нашел тот, что я вписал в поле ввода и затем сравнил, есть ли он вообще на сайте? Если есть, то далее он должен проверить, совпадает ли серийный номер жесткого диска с ключом, который я ввел в поле ввода и тогда он выдаст "Успешный вход!" и сделает переменную OpenScript := true. Дам небольшой кусочек из него:
#NoEnv
CoordMode, pixel, Window
OpenScript := false
DriveGet, SerialNumber, Serial, C:
url := "https://pastebin.com/raw/yCsSHyNJ" ; PODPISKA
httpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
httpRequest.Open("GET", url, false)
httpRequest.Send()
responseBody := Trim(httpRequest.ResponseText)
Gui, Add, Text, x20 y10 w360 h20, Введите ваш ключ:
Gui, Add, Edit, vUserLogin x20 y30 w200 h30,
Gui, Add, Button, x20 y80 w200 h30 gLoginButton, Войти
Gui, Add, Button, x20 y115 w200 h30 gBuyButton, Купить
GuiClose(GuiHwnd) {
MsgBox 4,, Вы уверены что хотите закрыть скрипт?
ifMsgBox No
return true
ifMsgBox Yes
ExitApp
}
Gui, Show, w250 h150, Вход
return
LoginButton:
GuiControlGet, vUserLogin,, Edit1
Gui, Submit
; Просто проверяем, есть ли введенный ключ на сайте
if !InStr(responseBody, vUserLogin) {
MsgBox, Ключ не найден на сайте!
Gui, Show
Return
}
; Если ключ найден, тогда проверяем серийный номер жесткого диска
keyInfo := RegExMatch(responseBody, "i)(\Q" vUserLogin "\E)\t(.*)", match)
if (keyInfo && match[2] = SerialNumber) {
OpenScript := true
MsgBox, Успешный вход!
} else {
MsgBox, Ключ найден, но серийный номер не совпадает!
Gui, Show
Return
}
return
BuyButton:
Run, https://example.com/ ; тестовая ссылка
Gui, +LastFound
Gui, Destroy
ExitApp
return
Также если возможно, как только введеный ключ удалится на сайте, то с помощью итераций скрипт должен будет закрыться.
SetTimer, CheckKeyAvailability, 5000
CheckKeyAvailability:
httpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
httpRequest.Open("GET", url, false)
httpRequest.Send()
responseBody := Trim(httpRequest.ResponseText)
if (responseBody = "") {
SetTimer, CloseScript, 3000
MsgBox, 0, , У вас закончилась подписка на данный скрипт, чтобы приобрести новую
Return
}
return
CloseScript:
ExitApp
return