AutoHotkey v2.0-a127版本的代码,用最新v2正式版需要修正代码

Plain text
复制到剪贴板
Open code in new window
EnlighterJS 3 Syntax Highlighter
#Requires AutoHotkey v2.0-a127
class KeyboardHook {
Ptr := 0, VK := 0, SC1 := 0, NFP := 0, KeyUp := 0
__New(Event := unset) {
if IsSet(Event)
this.DefineMethod('OnEvent', Event)
}
__Delete() => (this.Stop(), true)
Stop() {
DllCall('UnhookWindowsHookEx', 'Ptr', this), CallbackFree(this.cb)
}
OnEvent(wParam, lParam) => false
Start() {
this.Ptr := DllCall('SetWindowsHookEx', 'Int', WH_KEYBOARD_LL := 13, 'Ptr', this.cb := CallbackCreate('LowLevelMouseProc', 'F'), 'Ptr', DllCall('GetModuleHandle', 'UInt', 0, 'Ptr'), 'UInt', 0, 'Ptr')
LowLevelMouseProc(nCode, wParam, lParam) {
this.VK := NumGet(lParam + 0, "UInt")
Ext := NumGet(lParam + 0, 8, "UInt")
this.SC1 := NumGet(lParam + 0, 4, "UInt")
this.NFP := (Ext >> 4) & 1
this.KeyUp := Ext >> 7
return this.OnEvent(wParam, lParam) ? true : DllCall('CallNextHookEx', 'Ptr', 0, 'Int', nCode, 'UInt', wParam, 'UInt', lParam)
}
}
}
#Persistent
hk := KeyboardHook.New(Func('hookcallback'))
hk.Start()
hookcallback(self, wp, lp) {
static altdown := false
if (self.NFP)
return false
if (self.VK = 164 || self.VK = 165) {
if (!altdown && self.KeyUp)
Send('{LAlt Up}')
altdown := !self.KeyUp
return true
} else if (altdown) {
altdown := false
Send('{LAlt Down}')
}
}
#Requires AutoHotkey v2.0-a127 class KeyboardHook { Ptr := 0, VK := 0, SC1 := 0, NFP := 0, KeyUp := 0 __New(Event := unset) { if IsSet(Event) this.DefineMethod('OnEvent', Event) } __Delete() => (this.Stop(), true) Stop() { DllCall('UnhookWindowsHookEx', 'Ptr', this), CallbackFree(this.cb) } OnEvent(wParam, lParam) => false Start() { this.Ptr := DllCall('SetWindowsHookEx', 'Int', WH_KEYBOARD_LL := 13, 'Ptr', this.cb := CallbackCreate('LowLevelMouseProc', 'F'), 'Ptr', DllCall('GetModuleHandle', 'UInt', 0, 'Ptr'), 'UInt', 0, 'Ptr') LowLevelMouseProc(nCode, wParam, lParam) { this.VK := NumGet(lParam + 0, "UInt") Ext := NumGet(lParam + 0, 8, "UInt") this.SC1 := NumGet(lParam + 0, 4, "UInt") this.NFP := (Ext >> 4) & 1 this.KeyUp := Ext >> 7 return this.OnEvent(wParam, lParam) ? true : DllCall('CallNextHookEx', 'Ptr', 0, 'Int', nCode, 'UInt', wParam, 'UInt', lParam) } } } #Persistent hk := KeyboardHook.New(Func('hookcallback')) hk.Start() hookcallback(self, wp, lp) { static altdown := false if (self.NFP) return false if (self.VK = 164 || self.VK = 165) { if (!altdown && self.KeyUp) Send('{LAlt Up}') altdown := !self.KeyUp return true } else if (altdown) { altdown := false Send('{LAlt Down}') } }
#Requires AutoHotkey v2.0-a127

class KeyboardHook {
  Ptr := 0, VK := 0, SC1 := 0, NFP := 0, KeyUp := 0
  __New(Event := unset) {
    if IsSet(Event)
      this.DefineMethod('OnEvent', Event)
  }
  __Delete() => (this.Stop(), true)
  Stop() {
    DllCall('UnhookWindowsHookEx', 'Ptr', this), CallbackFree(this.cb)
  }
  OnEvent(wParam, lParam) => false
  Start() {
    this.Ptr := DllCall('SetWindowsHookEx', 'Int', WH_KEYBOARD_LL := 13, 'Ptr', this.cb := CallbackCreate('LowLevelMouseProc', 'F'), 'Ptr', DllCall('GetModuleHandle', 'UInt', 0, 'Ptr'), 'UInt', 0, 'Ptr')

    LowLevelMouseProc(nCode, wParam, lParam) {
      this.VK := NumGet(lParam + 0, "UInt")
      Ext := NumGet(lParam + 0, 8, "UInt")
      this.SC1 := NumGet(lParam + 0, 4, "UInt")
      this.NFP := (Ext >> 4) & 1
      this.KeyUp := Ext >> 7
      return this.OnEvent(wParam, lParam) ? true : DllCall('CallNextHookEx', 'Ptr', 0, 'Int', nCode, 'UInt', wParam, 'UInt', lParam)
    }
  }
}
#Persistent
hk := KeyboardHook.New(Func('hookcallback'))
hk.Start()
hookcallback(self, wp, lp) {
  static altdown := false
  if (self.NFP)
    return false
  if (self.VK = 164 || self.VK = 165) {
    if (!altdown && self.KeyUp)
      Send('{LAlt Up}')
    altdown := !self.KeyUp
    return true
  } else if (altdown) {
    altdown := false
    Send('{LAlt Down}')
  }
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。