如何向一窗口发送组合健消息?(100分)

  • 主题发起人 主题发起人 rychu
  • 开始时间 开始时间
R

rychu

Unregistered / Unconfirmed
GUEST, unregistred user!
<br>&nbsp; &nbsp;譬如像ctrl+space这样的组合键消息,希望只发送这个消息给这个特定窗<br><br><br>口,甚至连系统自己也不知道.
 
<br>我知道用keyboard_event可以实现模拟组合键,但是这会首先经过系统的处理,这是我<br><br>不希望的.
 
以"组合键"检索以前答案
 
绕过系统,能行吗?
 
系统不知道你发过去给谁啊?
 
一段英文的TIPS:<br><br>发出一个Alt+Down 组合键 &nbsp;<br>问:Send [Alt]+[Down]?<br>答:<br>Use the keybd_event API function to fake keyboard events. Note that each<br>key down event needs a matching key up or you mess up the key state array.<br><br>&nbsp; keybd_event( VK_MENU, MapVirtualKey( VK_MENU, 0 ), 0 , 0 );<br>&nbsp; &nbsp; // Alt down<br>&nbsp; keybd_event( VK_DOWN, MapVirtualKey( VK_DOWN, 0 ), 0 , 0 );<br>&nbsp; &nbsp; // down arrow key down<br>&nbsp; keybd_event( VK_DOWN, MapVirtualKey( VK_DOWN, 0 ), KEYEVENTF_KEYUP , 0 );<br>&nbsp; &nbsp; // down arrow key up<br>&nbsp; keybd_event( VK_MENU, MapVirtualKey( VK_MENU, 0 ), KEYEVENTF_KEYUP , 0 );<br>&nbsp; &nbsp; // Alt key up<br><br>These key events will go to the window currently having the input focus.
 
你可以先掛Keyboard HOOK攔截組合鍵的消息,<br>再把這個消息送到目標視窗去,類似中文輸入<br>法那樣?
 
1)如果两个窗口都是自己写的。<br>你可以自定义一个消息,如:WM_MY_CTRL_SPACE<br>当接收窗口接收到这个消息时,按Ctrl + Space处理。<br>2)如果接收方不是你的程序<br>只能发送Ctrl + Space,就算你不写在程序里,底层也会帮你发。<br><br>
 
多人接受答案了。
 
后退
顶部