【发布时间】:2017-08-03 16:37:01
【问题描述】:
如何虚拟激活“MadCatz Strike 7”键盘的特殊功能键?发送其按键代码应该让 MadCatz7 软件像注册物理按键一样操作。
这些功能键是否有键码(或有更好的方法)?我正在编写一个 AutoIt 脚本,它应该让 MadCatz 软件通过激活相应的特殊功能键来完成其余的工作。
【问题讨论】:
如何虚拟激活“MadCatz Strike 7”键盘的特殊功能键?发送其按键代码应该让 MadCatz7 软件像注册物理按键一样操作。
这些功能键是否有键码(或有更好的方法)?我正在编写一个 AutoIt 脚本,它应该让 MadCatz 软件通过激活相应的特殊功能键来完成其余的工作。
【问题讨论】:
试着用这段代码找出关键。通常你的特殊功能键有一个替代热键,如 ctrl+alt+F10 或其他东西。
Opt('GUICloseOnESC', 0)
Global $tState = DllStructCreate('byte[256]')
GUICreate('MyGUI', 200, 200)
$Label = GUICtrlCreateLabel('', 20, 72, 160, 52, 0x01)
GUICtrlSetFont(-1, 32, 800, 0, 'Tahoma')
GUISetState()
$Prev = -1
While 1
Sleep(10)
If GUIGetMsg() = -3 Then
ExitLoop
EndIf
$Key = 0
$Ret = DllCall('user32.dll', 'int', 'GetKeyboardState', 'ptr', DllStructGetPtr($tState))
For $i = 0x08 To 0xFF
Switch $i
Case 0x0A, 0x0B, 0x0E To 0x0F, 0x16, 0x1A, 0x1C To 0x1F, 0x3A To 0x40, 0x5E, 0x88 To 0x8F, 0x97 To 0x9F, 0xB8 To 0xB9, 0xC1 To 0xDA, 0xE0, 0xE8
ContinueLoop
Case Else
If BitAND(DllStructGetData($tState, 1, $i + 1), 0xF0) Then
$Key = $i
ExitLoop
EndIf
EndSwitch
Next
If $Key <> $Prev Then
GUICtrlSetData($Label, '0x' & Hex($Key, 2))
$Prev = $Key
EndIf
WEnd
【讨论】:
如果不直接告诉 MadCatz 软件按下了特殊键,则无法执行此操作,以便软件启动编程的模板。
我使用 AutoIt 脚本解决了问题,完成后将发布代码。
【讨论】: