Тема: AHK: Чтение .txt и выполнение команды
Есть .txt файл в нем определенное слово, как сделать чтобы это слово читало и начало выполнять команду.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть .txt файл в нем определенное слово, как сделать чтобы это слово читало и начало выполнять команду.
ypppu, это понятно.
Вот мой код, но он не в какую не хочет выполнять команды.
login:= "чек"
FileRead, sms, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
If string contains %login%
(Дальше идут сами действия)
string - это не часть выражения, а имя переменной. Вам следует на место этого слова подставить sms.
Кстати, если так подумать, вы прочитаете все содержимое чатлога. Ваш способ мне кажется не самый безопасный. Так, можно активировать команду любому игроку, что напишет кодовое слово, не так ли?
KenzoHK
Попробуй разбирать каждую строку, да и "чек" может быть частью слова, желательно использовать ключ, например "%чек".
Хотя, если это единственно слово в строке, то не нужно огород городить, а проще использовать:
— простое чтение строк Loop, Read, InputFile [, OutputFile];
— разбор строки Loop, Parse, InputVar [, Delimiters, OmitChars].
Пример самого простого разбора.
Haystack := "C:\AHK Compiler\AHK Compiler.exe"
Needle := "\"
a := InStr(Haystack, Needle , , 0)
vDir := SubStr(Haystack, 1 , a-1)
vFile := SubStr(Haystack, a+1)
MsgBox %vDir% --- %vFile%
Удачи с чеками.
Кстати, если так подумать, вы прочитаете все содержимое чатлога. Ваш способ мне кажется не самый безопасный...
Можно зашифровать содержимое чат-лога, это не сложно.
Например используя функцию расчёта HASH, ключом будет например EXE-file.
Функция поддерживает HASH типы(MD2/MD5/SHA - поддержка всеми Windows, SHA256/SHA384/SHA512 - не поддерживается Windows XP/2000).
;-----------------------------------------------------------------------------------------------------------------
; Функция расчёта контрольной суммы файла
; HASH типы: MD2/MD5/SHA - поддержка всеми Windows, SHA256/SHA384/SHA512 - не поддерживается Windows XP/2000
;-----------------------------------------------------------------------------------------------------------------
;НА ВХОД:
; 1-й параметр(STRING): Полный путь к файлу
; 2-й параметр(STRING): HASH-типы из списка MD2/MD5/SHA/SHA256/SHA384/SHA512
;НА ВЫХОД:
; Или контольная сумма файла(STRING)
; Или слово "ERROR"(STRING)
fnHASH(FilePath, str)
{
CaseSensitive := False ; Не чувствительность к регистру, те Б = б
if (str = "MD2")
vHASH := 1
Else if (str = "MD5")
vHASH := 2
Else if (str = "SHA")
vHASH := 3
Else if (str = "SHA256")
vHASH := 4
Else if (str = "SHA384")
vHASH := 5
Else if (str = "SHA512")
vHASH := 6
Else
Return "ERROR"
CaseSensitive := True ; Чувствительность к регистру, те Б != б
ret := HashFile(FilePath,vHASH)
Return ret
}
/*
HASH types:
1 - MD2
2 - MD5
3 - SHA
4 - SHA256 - not supported on XP,2000
5 - SHA384 - not supported on XP,2000
6 - SHA512 - not supported on XP,2000
*/
HashFile(filePath,hashType=2)
{
PROV_RSA_AES := 24
CRYPT_VERIFYCONTEXT := 0xF0000000
BUFF_SIZE := 1024 * 1024 ; 1 MB
HP_HASHVAL := 0x0002
HP_HASHSIZE := 0x0004
HASH_ALG := hashType = 1 ? (CALG_MD2 := 32769) : HASH_ALG
HASH_ALG := hashType = 2 ? (CALG_MD5 := 32771) : HASH_ALG
HASH_ALG := hashType = 3 ? (CALG_SHA := 32772) : HASH_ALG
HASH_ALG := hashType = 4 ? (CALG_SHA_256 := 32780) : HASH_ALG ;Vista+ only
HASH_ALG := hashType = 5 ? (CALG_SHA_384 := 32781) : HASH_ALG ;Vista+ only
HASH_ALG := hashType = 6 ? (CALG_SHA_512 := 32782) : HASH_ALG ;Vista+ only
f := FileOpen(filePath,"r","CP0")
if !IsObject(f)
return 0
if !hModule := DllCall( "GetModuleHandleW", "str", "Advapi32.dll", "Ptr" )
hModule := DllCall( "LoadLibraryW", "str", "Advapi32.dll", "Ptr" )
if !dllCall("Advapi32\CryptAcquireContextW"
,"Ptr*",hCryptProv
,"Uint",0
,"Uint",0
,"Uint",PROV_RSA_AES
,"UInt",CRYPT_VERIFYCONTEXT )
Goto,FreeHandles
if !dllCall("Advapi32\CryptCreateHash"
,"Ptr",hCryptProv
,"Uint",HASH_ALG
,"Uint",0
,"Uint",0
,"Ptr*",hHash )
Goto,FreeHandles
VarSetCapacity(read_buf,BUFF_SIZE,0)
hCryptHashData := DllCall("GetProcAddress", "Ptr", hModule, "AStr", "CryptHashData", "Ptr")
While (cbCount := f.RawRead(read_buf, BUFF_SIZE))
{
if (cbCount = 0)
break
if !dllCall(hCryptHashData
,"Ptr",hHash
,"Ptr",&read_buf
,"Uint",cbCount
,"Uint",0 )
Goto,FreeHandles
}
if !dllCall("Advapi32\CryptGetHashParam"
,"Ptr",hHash
,"Uint",HP_HASHSIZE
,"Uint*",HashLen
,"Uint*",HashLenSize := 4
,"UInt",0 )
Goto,FreeHandles
VarSetCapacity(pbHash,HashLen,0)
if !dllCall("Advapi32\CryptGetHashParam"
,"Ptr",hHash
,"Uint",HP_HASHVAL
,"Ptr",&pbHash
,"Uint*",HashLen
,"UInt",0 )
Goto,FreeHandles
SetFormat,integer,Hex
loop,%HashLen%
{
num := numget(pbHash,A_index-1,"UChar")
hashval .= substr((num >> 4),0) . substr((num & 0xf),0)
}
SetFormat,integer,D
FreeHandles:
f.Close()
DllCall("FreeLibrary", "Ptr", hModule)
dllCall("Advapi32\CryptDestroyHash","Ptr",hHash)
dllCall("Advapi32\CryptReleaseContext","Ptr",hCryptProv,"UInt",0)
return hashval
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться