1

Тема: AHK: Определение состояния клавиши путём команды DllCall(GetKeyState)

Доброго времени суток. Подскажите пожалуйста как правильно реализовать команду "DllCall(GetKeyState)"для определения состояние клавиши в коде приведённом ниже.

*~lbutton::
Loop 
{
GetKeyState, state, LButton, P    ;вместо этой строки
if state = U
break
DllCall("Sleep", UInt, Time)
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
DllCall("Sleep", UInt, Timee)
}
Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2

Re: AHK: Определение состояния клавиши путём команды DllCall(GetKeyState)

Похоже, никак. У вас там Р стоит, а эта функция не определяет физическое состояние (судя по её описанию). Про кнопки мыши в описании тоже ничего нет.

А для чего это надо вообще?

3

Re: AHK: Определение состояния клавиши путём команды DllCall(GetKeyState)

Хотя бы для защиты кода
Вот такой вот пример использует DllCall, хоть так сразу и не скажешь.

#:="chr",#@:=(#_:=(##:=($:=(#$:=(_:=!"")<<_)<<_)<<_)<<_)<<#$,@:=#_<<_|#@,_#:=%#%(@|#$|_),__:=%#%(@|$|_),_@:=%#%(@|#_|#$|_),_$:=%#%(#@|_),@#:=%#%(@|_),@_:=%#%(@|##|$|#$|_),@@:=%#%(@|#_|$|_),@$:=%#%(@|#_|$),$#:=%#%(@|##|$|#$),$_:=%#%(@|#_|#$),$@:=%#%(@|##|#$|_),$$:=%#%(#@|##),###:=%#%(@|$),##_:=%#%(@|##|$),%###%%##_%%##_%%_#%%@#%%##_%%##_%(%#%(#@|##|$|_) __ _@ _@ @# %#%(@|$|#$|_) __ %#%(#@|#$) @_ %#%(@|#_|##),%#%(#@|@|##|_) $# @$,!_,_@ @$ $_,%#%(#@|##|#$) @@ _@ @$ " " _$ $# @_ @$ %#%(@|##) __ $_ " " _$ @@ @$ @_ $$ @_ @$ $@ __ %#%(@|#_|##|_) " " $$ @# _# $@ __ $_,_@ @$ $_,"",%#%(#@|@|##|_) $# @$,!_)

4

Re: AHK: Определение состояния клавиши путём команды DllCall(GetKeyState)

Кошмар. Мусье знает толк в извращениях.

5

Re: AHK: Определение состояния клавиши путём команды DllCall(GetKeyState)

В общем-то, все оказалось проще.

*~lbutton::
Loop 
{
   State:=DllCall("GetAsyncKeyState", "Int", 1, "UShort") ; 1 = 0x1 = VK_LButton
   if !State
      break
   DllCall("Sleep", UInt, Time)
   DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
   DllCall("Sleep", UInt, Timee)
}
Return

Функция найдена, как ни странно, совсем рядом.

Ядрён, обрати внимание на оформление кода (форматирование) - облегчишь жизнь себе и тем, кто будет твой код читать.

6

Re: AHK: Определение состояния клавиши путём команды DllCall(GetKeyState)

Огромное спасибо всё работает.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).