
后台组合键困扰了很,我曾经也是。于是查了些资料写了个实现后台Alt组合键的小函数,供大家参考, 懒得隐藏了。postmessage使用方法:[code]
Hwnd = Plugin.Window.MousePoint()
SendAltPlusKey Hwnd,81 //向目标窗口发送alt+q,第二个参数为这个键的按键码acs(”Q“)。postmessage
[/code]
当然这个方法也是有局限性的,比如QQ的Alt+S就不成功,测试了诛仙是可以的。
QQ的Alt+S需要在前台按下Alt,然后再用这个函数:
[code]
KeyDown 18, 1
SendAltPlusKey Hwnd,81
KeyUp 18,1
[/code]
另外看到论坛上有人说USB鼠标没法实现按shift+home选择光标之前的那行文本,这里把解决方案也附加一下:
[code]
KeyDown 16,1
PostMessage hwnd, WM_KEYDOWN, &H24, Eval("&H" & Hex(MakeKeyLparam(&H24, WM_KEYDOWN) or &H01000000)) //Hwnd为记事本句柄
PostMessage hwnd, WM_KEYUP, &H24, Eval("&H" & Hex(MakeKeyLparam(&H24, WM_KEYUP) or &H01000000))// or &H01000000的作用是将Home键的扩展位置1.
KeyUp 16,1
[/code]
以下是函数体:[code]
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Const WM_KEYDOWN = &H100
Const WM_KEYUP = &H101
Const WM_CHAR = &H102
Const WM_SYSKEYDOWN = &H104
Const WM_SYSKEYUP = &H105
Const WM_SYSCHAR = &H106
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_RBUTTONDOWN = &H204
Const WM_RBUTTONUP = &H205
Function MakeKeyLparam(VirtualKey,flag)
Dim s,Firstbyte'lparam参数的24-31位
Select Case flag
Case WM_KEYDOWN
Firstbyte = "00"
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28477-1.html
更不能剥夺狗叫的权利
感谢你把海浪带入MV