1 (изменено: Indomito, 2019-12-05 20:20:27)

Тема: AHK: реализация функции Press any Key

Приветствую.
Я конечно читал тему Серый форум → Коллекция скриптов и идей → AutoHotkey → AHK: Определение символов, посылаемых с клавиатуры.
А можно это сделать проще?

И не так.

+ VkScCode_64.ahk
#Persistent 
#SingleInstance Ignore 

Global verVC64 := 1.2

fnTray()

 hHookKeybd := DllCall("SetWindowsHookEx"
  , Int, WH_KEYBOARD_LL := 13
  , Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
  , Ptr, DllCall("GetModuleHandle", UInt, 0, "Ptr")
  , UInt, 0, "Ptr")
Return
  
LowLevelKeyboardProc(nCode, wParam, lParam)  {
    Critical
    SetFormat, Integer, H
    vkCode := NumGet(lParam+0, 0, "UInt") 
;    If (GetKeyState("LCtrl", "P") && GetKeyState("LShift", "P") && GetKeyState("Esc", "P"))
;        ExitApp 
        
    ToolTip, % Clipboard := wParam . "| vkCode: " . vkCode . " scCode: " . NumGet(lParam+0, 4, "UInt")
                    . " Extended: " . NumGet(lParam+0, 8, "UInt") & 1 . " Time: " . NumGet(lParam+0, 12, "UInt")
    Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
} 

fnTray()
{
global ;Установки трея для скрипта

    Menu1  := "Выход"

    Menu, tray, NoStandard  ; меню в трее будет не стандартным - своим
      
      ;Добавляем пункт меню по ПКМ
      Menu, tray, add, %Menu1%, lEnd_VkScCode

      
      ; Задаём свою выноску "балон"
      vTip := " ——VK  and  SC Code x86/x64——`n Версия: " verVC64 "`n Автор: Indomito©"
      Menu, tray, tip, %vTip%
      Menu, tray, default, %Menu1%  ; Этот пункт меню по умолчанию двойной щелчёк ЛКМ по иконке в трее для его вызова
      ;Menu, Tray, Click, 1          ; Переназначаем двойной на одиночный ЛКМ      
Return      

}

^+Esc::
ExitApp

lEnd_VkScCode:
  ExitApp

Ну очень много кода, хочется по проще.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

2

Re: AHK: реализация функции Press any Key

Можно так:

#Persistent
Hook := InputHook("V")
Hook.KeyOpt("{All}", "N")
Hook.OnKeyDown := Func("AnyKey")
Hook.Start()
Return

AnyKey(Hook, vk, sc) {
   ToolTip % "key «" . GetKeyName( Format("vk{:X}sc{:X}", vk, sc) ) . "» has been pressed"
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: реализация функции Press any Key

teadrinker
Спасибо, вопрос закрыт.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download