ctrl+home 用postmessage怎么写?PostMessage m_hScrWindow, WM_KEYDOWN, 17, 0
PostMessage m_hScrWindow, WM_KEYDOWN, 36, 0这样只会使home键生效,ctrl键没有生效.为讨论sendkeys和sendmessage.就关于postmessage.哪位老大能给个测试通过的语句吗?以前你们回复的都不行啊.
PostMessage m_hScrWindow, WM_KEYDOWN, 36, 0这样只会使home键生效,ctrl键没有生效.为讨论sendkeys和sendmessage.就关于postmessage.哪位老大能给个测试通过的语句吗?以前你们回复的都不行啊.
我也试验了,发现确实不可以。可能是以下情况。ctrl+home判断的地方,用的GetKeyStatus这个api,这个应该是检查key的状态的。所以可能和post的message没有很多关系(不确定,但是结果显示可能如此)所以,没什么法子了。。
如果用sendkey能用也可以(不知道行不)另外这种组合的按键,应该是一个id,而响应的是这个id的command。这个应该是个加速键而已,所以可以发command消息和这个加速键id(对于findwindow的东西有点难度地说)如果用的sendmessage可以先setkeystatus,把ctrl设定为按下,然后再传那个home的键。(post不推荐,因为发了队列,不便于控制)send之后把ctrl复位到原来的状态。(findwindow应该也能这样用。)另外就是如果自己的程序可以发送一个消息(比如WM_USER+1234).这个消息就是设定ctrl状态的。这个也可以。以上猜想没有代码,不好意思。
SET是一个全局的,整个KEYBOARD。SetKeyboardState。。名字差不多,有点忘记了。
get这个全局的之后,然后更改byte[VK_CONTROL]=1,然后在SET用完了以后,再SET回原来的状态。
BYTE lpKeyState[256];
GetKeyboardState(lpKeyState);//Save the Shift,Ctrl,Alt State.
BYTE ControlState = lpKeyState[VK_CONTROL];
//Set Ctrl KEY Down
lpKeyState[VK_CONTROL] = 1;
SetKeyboardState(lpKeyState);
//自己的处理,比如sendmessage//Recover
lpKeyState[VK_CONTROL] = ControlState;
SetKeyboardState(lpKeyState);
dim keys(256) as Byte
GetKeyboardState keys(0)'得到键盘状态
keys(17)=1'control状态
SetKeyboardState keys(0)'设置键盘状态
....处理
SetKeyboardState keys(0)'恢复状态 或许可以使用。
API自己声明,自己的程序容易处理,别人的就不好说了。