1 (изменено: MedveD, 2014-01-30 20:03:34)

Тема: AHK: Как сделать проверку с текстового файла.

Доброго времени суток, дорогие умельцы . Сделал довольно-таки интересную (в узких кругах) программу на ahk, чтобы не было безконтрольной передачи моей программы, возник вопрос о ее защите.

И так, программа после запуска должна выполнять команду, например:

Sendinput {F3}тестирование запуска{ENTER}

То, что она введет, отобразится в текстовом файле в самой нижней строке, с персональным идентификатором. В этом текстовом файле будет выглядеть примерно так: "QWERTY12345: тестирование запуска", программа должна считать этот идентификатор, и если он совпадает с тем, что записан в программе, то программа продолжает свои алгоритмы, предварительно выполнив команду:

Sendinput {F3}тестирование прошло успешно, программа запущена{ENTER}

Если не удовлетворяет условиям программы - то

 Sendinput {F3}тестирование закончилось не  удачей, программа прекратила свою работу{ENTER}

и прекращает выполнения алгоритмов.

2

Re: AHK: Как сделать проверку с текстового файла.

А вопрос в чём?

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

3

Re: AHK: Как сделать проверку с текстового файла.

Вопрос в том, как поместить "loop"  в проверку идентификатора.

4

Re: AHK: Как сделать проверку с текстового файла.

Не понятно, нужен код, демонстрирующий проблему.

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

5 (изменено: MedveD, 2014-01-31 20:00:12)

Re: AHK: Как сделать проверку с текстового файла.

Код не моего скрипта, но похож на него.

; <COMPILER: v1.1.13.00>
MsgBox, Bubusik - korol. Подробная информация в "Помощь".
menu, tray, NoStandard
menu, tray, add , Помощь
menu, tray, add , Выход
#IfWinActive GTA:SA:MP
Filename=%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
block=0
Numpad0::
on=1
SendInput {f6}/b Bubusik korol{enter}
Loop, read, %Filename%
nstroki=%A_Index%
start:
if on=2
return
if block=1
goto start
FileReadLine, stroka, %Filename%, %nstroki%
if ErrorLevel
{
nstroki-=1
goto start
}
if stroka=
{
nstroki+=1
goto start
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "нарко"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/give drugs %idigroka1% 20 {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "eagle"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% eagle {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "m4"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% m4 {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "shot"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% shotgun {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
nstroki+=1
goto start
return
~$F6 UP::
if block=0
{
block=1
return
}
if block=1
{
sleep 600
block=0
}
return
~$enter UP::
if block=1
{
sleep 600
block=0
}
return
Помощь:
msgbox 32,,
(
Этот скрипт автоматически выдает нарко, и ганы, увидев просьбу о них в пм. Доступные команды: "нарко"; "eagle"; "m4"; "shot". И помните, что Bubusik - король!

Активация: num0.
)
return
Выход:
exitapp
Return

Под проверку надо поставить это:

Loop, read, %Filename%
nstroki=%A_Index%
start:
if on=2
return
if block=1
goto start
FileReadLine, stroka, %Filename%, %nstroki%
if ErrorLevel
{
nstroki-=1
goto start
}
if stroka=
{
nstroki+=1
goto start
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "нарко"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/give drugs %idigroka1% 20 {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "eagle"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% eagle {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "m4"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% m4 {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "shot"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% shotgun {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
nstroki+=1
goto start
return
~$F6 UP::
if block=0
{
block=1
return
}
if block=1
{
sleep 600
block=0
}
return
~$enter UP::
if block=1
{
sleep 600
block=0
}

Как я понимаю, надо сделать так, но у меня не работает само "сердце" моей программы :C

; <COMPILER: v1.1.13.00>
MsgBox, Bubusik - korol. Подробная информация в "Помощь".
menu, tray, NoStandard
menu, tray, add , Помощь
menu, tray, add , Выход
#IfWinActive GTA:SA:MP
Filename=%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
block=0
Numpad0::
on=1
SendInput {f6}/b тестирование запуска.{enter}

IfInString, stroka, (( Bubusik[
{
if (InStr(stroka, "]: тестирование запуска. ))"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/c тестирование прошло успешно.{ENTER}

Loop, read, %Filename%
nstroki=%A_Index%
start:
if on=2
return
if block=1
goto start
FileReadLine, stroka, %Filename%, %nstroki%
if ErrorLevel
{
nstroki-=1
goto start
}
if stroka=
{
nstroki+=1
goto start
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "нарко"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/give drugs %idigroka1% 20 {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "eagle"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% eagle {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "m4"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% m4 {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
IfInString, stroka, >> ПМ от
{
if (InStr(stroka, "shot"))
{
RegExMatch(stroka, ".*\((.*)\):", idigroka)
Sendinput {F6}/sellgun  %idigroka1% shotgun {ENTER}
Sleep 300
nstroki+=1
goto start
}
}
nstroki+=1
goto start
return
~$F6 UP::
if block=0
{
block=1
return
}
if block=1
{
sleep 600
block=0
}
return
~$enter UP::
if block=1
{
sleep 600
block=0
}

}
}
return
Помощь:
msgbox 32,,
(
Этот скрипт автоматически выдает нарко, и ганы, увидев просьбу о них в пм. Доступные команды: "нарко"; "eagle"; "m4"; "shot". И помните, что Bubusik - король!

Активация: num0.
)
return
Выход:
exitapp
Return

6

Re: AHK: Как сделать проверку с текстового файла.

teadrinker пишет:

Не понятно, нужен код, демонстрирующий проблему.

То, что приведено, это не код, демонстрирующий проблему. Думаете, кто-то будет разбираться в скрипте, который запустить невозможно (у меня, например, нету файла Filename=%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt), да ещё и написанном без форматирования? Напишите короткий пример текстового файла, который нужно проверять, и укажите, какие строки конкретно.

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

7 (изменено: MedveD, 2014-02-02 16:27:08)

Re: AHK: Как сделать проверку с текстового файла.

В архиве ahk исходник и пример чатлога.
3-я строка: Пишет после нажатия num0 (что-то вроде биндера)
4-я строка: Проверка написанного текста, и разрешение на запуск программы.

6-я строка: Запуск программы левым лицом.
7-я строка: Проверка текста. (Написано не тем, кто вписан в код, по этому запуск программы запрещен, и она закрывается)

P.S. Забыл, надо еще добавить время, которое дается на проверку текста, после нажатия num0 (К примеру 500 мсек).

Post's attachments

пример.rar 1.14 kb, 2 downloads since 2014-02-02 

You don't have the permssions to download the attachments of this post.