发表回复 
ahk_class对ATOM无效?
2017-08-05, 09 : 27
ahk_class对ATOM无效?
硬件环境:thinkpad t440s
软件环境: win10 64bits, atom, notepad++, ahk 1.1.25.01
开启触摸板的双指滑动功能。

目标:当使用 atom, notepad++等IDE或编辑器时,自动禁用触摸板的双指滑动功能,切换到其他窗口时,自动启用双指滑动。
因为笔记本打字,常常两个大拇指放在触摸板上构成了双指滑动。

我以前没用过AHK,也是昨天看了一天的帮助,写了个脚本,但是遇到一些问题。
先贴脚本。
代码: (全选)
;RAlt::RButton
;PrintScreen

SetTitleMatchMode 2
GroupAdd, GrpEditor, ahk_class Notepad++
;GroupAdd, GrpEditor, ahk_class Chrome_WidgetWin_1
GroupAdd, GrpEditor, ahk_exe C:\Users\Administrator\AppData\Local\atom.exe

#IfWinActive ahk_group GrpEditor
{
  RAlt::AppsKey
  PgUp::return
  PgDn::return  

  
; define some variable
; lSynAPIProperty
SE_ConnectionAny   := 0
SE_DeviceTouchPad  := 2
    
; lSynDeviceProperty
; Boolean:
SP_IsTapEnabled         := 268435789 ; tap enable/disable
SP_IsDragEnabled        := 268435790 ; drag disable/enable
SP_IsDragLockEnabled    := 268435791 ; draglock enable/disable
SP_IsCornerTapEnabled   := 268435792 ; tap zones enable/disable
SP_DisableState         := 268435825 ; touchpad disable/enable

; Integer:
SP_ZTouchThreshold      := 268435752 ; touchpad Sensitivity setting
SP_2FVerticalScrollingFlags     := 268435844
SP_2FHorizontalScrollingFlags   := 268435845
SP_2FingerVerticalScrollSpeed   := 268435847
SP_2FingerHorizontalScrollSpeed := 268435848

; initialization
SynAPI := ComObjCreate("SynCtrl.SynAPICtrl")
SynDev := ComObjCreate("SynCtrl.SynDeviceCtrl")
SynAPI.Initialize
DeviceHandle    := SynAPI.FindDevice(SE_ConnectionAny, SE_DeviceTouchPad, -1) ; obtain devicehandle to be used by SynDeviceCtrl
SynDev.Select(DeviceHandle) ; must be call first, before the use of other SynDeviceCtrl Function

; now we can modify touchpad setting/feature
; Example :
; Enable/disable touchpad:
;   SynDev.SetLongProperty(SP_DisableState, 1) ; disable touchpad
;   SynDev.SetLongProperty(SP_DisableState, 0) ; enable touchpad
;
; Enable/disable tapping:
   SynDev.SetLongProperty(SP_IsTapEnabled, 1) ; disable tapping
;
; Modify touchpad sensitivity setting (it range between 22-62)
;   SynDev.SetLongProperty(SP_ZTouchThreshold, 22) ; lightest touch
;   SynDev.SetLongProperty(SP_ZTouchThreshold, 42) ; moderate touch
;   SynDev.SetLongProperty(SP_ZTouchThreshold, 62) ; heaviest touch,

;SynDev.SetLongProperty(SP_2FVerticalScrollingFlags, 0)
;SynDev.SetLongProperty(SP_2FingerVerticalScrollSpeed, -1)

}

现在遇到的问题有几个:
1.窗口组的用法不知是否正确;
2.我做的窗口判断,在notepad++中有效,但在ATOM中无效,第一次用 ahk_class,没有作用,第2次用 ahk_exe,同样没用。不知道原因何在。
3.触摸板的控制使用了COM(复制与老外写的代码),我试了无效,估计thinkpad的驱动和通用驱动有所不同,或者是代码本身有问题。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢roro4ever
2017-08-06, 21 : 36 (这个帖子最后修改于: 2017-08-06 21 : 37 by robertL.)
RE: ahk_class对ATOM无效?

  1. 窗口组的使用,看着正确。
  2. 对ahk_exe,不带路径试试。
    先粗匹配,测试通过后,再限定/细匹配。
    窗口的类,看看目标窗口是不是内外多层..要看实际使用中激活的是哪一层。
    可以在实际使用环境中,使用热键获取当前实际的控件/上下文环境信息。
  3. 找找有无适用于你触摸板驱动的命令行工具,或者,使用支持更丰富的第三方驱动。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合