Что нового

[Мышь, клавиатура] Выполнение скрипта при нажатие "\"

zelich

Новичок
Сообщения
149
Репутация
0
Есть скрипт:
Код:
HotKeySet('???', 'Click')

Global $var = 2
    
While 1
    Sleep(10)
WEnd

Func Click()
    $var = 0
    While $var < 3
        MouseClick('LEFT')
        $var = $var + 1
        Sleep(15)
    WEnd
 EndFunc


Что дописать, чтоб скрипт выполнялся при нажатии "\" (Обратный слэш)

Заранее спасибо!
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
Это я пробовал. Но проблема в том, что на клаве этих кнопок- 2-е штуки:
3a2e6e29940d360e982e9d8ee423b82c.jpg
Когда делаешь
Код:
HotKeySet('\', 'Click')

Работает (2), а мне хотелось бы (1)...
Подскажите ПЛЗ
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
zelich
Это я пробовал. Но проблема в том
Неужели сложно было сразу об этом написать?

Запустите этот скрипт и покажите коды, выводимые в консоль при нажатии клавиш (1) и (2)
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>

OnAutoItExitRegister("Cleanup")

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)

While 1
  Sleep(1000)
WEnd

Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If $nCode < 0 Then
        Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndIf
    If $wParam = $WM_KEYDOWN Then ConsoleWrite("0x" & Hex(DllStructGetData($tKEYHOOKS, "vkCode"), 4) & @CRLF)
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc   ;==>_KeyProc

Func Cleanup()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
EndFunc   ;==>Cleanup
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
zelich
Тройной клик с интервалом 15мс в координатах курсора мыши при нажатии клавиши с кодом 0xE2
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>

Opt("MouseClickDelay", 15)
OnAutoItExitRegister("Cleanup")

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), _WinAPI_GetModuleHandle(0))

While Sleep(1000)
WEnd

Func _KeyProc($nCode, $wParam, $lParam)
  Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
  If $nCode >= 0 And $wParam = $WM_KEYDOWN Then
    If DllStructGetData($tKEYHOOKS, "vkCode") = 0xE2 Then
      MouseClick("", Default, Default, 3)
      Return -1
    EndIf
  EndIf
  Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func Cleanup()
  _WinAPI_UnhookWindowsHookEx($hHook)
  DllCallbackFree($hStub_KeyProc)
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
zelich,
Смотрите в моей подписи HotKey.au3, но, у меня, например, только ноутбуки, а на них (у меня) нет такой клавиши.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
zelich
Ещё вариант
Код:
#include <WinAPISys.au3>
#include <WindowsConstants.au3>

OnAutoItExitRegister("OnAutoItExit")
Opt("MouseClickDelay", 15)

$hWnd = GUICreate("")
GUIRegisterMsg($WM_HOTKEY, 'WM_HOTKEY')

_WinAPI_RegisterHotKey($hWnd, 1, 0, 0xE2)

While Sleep(1000)
WEnd

Func WM_HOTKEY($hWnd, $iMsg, $wParam, $lParam)
  MouseClick("", Default, Default, 3)
EndFunc

Func OnAutoItExit()
  _WinAPI_UnregisterHotKey($hWnd, 1)
EndFunc
 
Верх