Тема: AHK: Определенное выполнение действий при зажатой клавише
Здравствуйте. Пытаюсь сделать скрипт что бы при зажатой клавише например vk58 (X) в адресе памяти записывался 0 байт то есть включено, а при отжатой X в адресе памяти записывалось значение = 1 байт то есть выключено.
Адрес куда вписывать значение = 0xB6EC2E.
Значение вписывать в byte то есть Char 1 - выкл, 0 - вкл.
processName := "процес.exe"
Address := 0xB6EC2E
vk58::
Loop {
ProcessWriteMemory(0, baseAddressPointer, processName, "Char") ; включено
If(GetKeyState("vk58", "P")=0)
ProcessWriteMemory(1, baseAddressPointer, processName, "Char") ; выключено
}
ProcessWriteMemory(data, address, processIDorName, type := "Int", numBytes := 4) {
VarSetCapacity(buf, numBytes, 0)
NumPut(data, buf, 0, type)
Process Exist, %processIDorName%
if !processID := ErrorLevel
throw Exception("Invalid process name or process ID:`n`n""" . processIDorName .
"""")
if !processHandle := DllCall("OpenProcess", "Int", 40, "UInt", 0, "UInt", processID,
"Ptr")
throw Exception("Failed to open process.`n`nError code:`t" . A_LastError)
result := DllCall("WriteProcessMemory", "Ptr", processHandle, "Ptr", address, "Ptr",
&buf, "Ptr", numBytes, "UInt", 0, "UInt")
if !DllCall("CloseHandle", "Ptr", processHandle, "UInt") && !result
throw Exception("Failed to close process handle.`n`nError code:`t" . A_LastError)
if !result
throw Exception("Failed to write process memory.`n`nError code:`t" . A_LastError)
return result
}Когда зажимаю X то нормально работает, но когда я отжимаю X то видно что оно то врубается то вырубается.
Можно как-то сделать что бы, когда я зажал клавишу X он вписал в память 1 раз 0 байт - включено, а когда я отжал X - вписал 1 байт - выключено?

