sdzbhb
小水手

UID 21567
精华
0
积分 1
帖子 1
阅读权限 10
注册 2006-5-8
状态 离线
|
关于PostMessage或者SendMessage发送ctrl组合按键的问题
我需要向一个程序发送ctrl+v的按键消息。用PostMessage或者SendMessage都发现ctrl失效,不知问题出在哪里。现在说明如下:
我以windows的计算器(calc)为例子,选择科学型的16进制。
我的程序:
: ostMessage(AppWnd,WM_KEYDOWN,'C',MapVirtualKey('C',0));
: ostMessage(AppWnd,WM_KEYUP,'C',MapVirtualKey('C',0));
这两句可以正常运行,输入窗口出现C
但是如果组合上ctrl就不行。
: ostMessage(AppWnd,WM_KEYDOWN,VK_CONTROL,MapVirtualKey(VK_CONTROL,0));
::PostMessage(AppWnd,WM_KEYDOWN,'C',MapVirtualKey('C',0));
::PostMessage(AppWnd,WM_KEYUP,'C',MapVirtualKey('C',0));
::PostMessage(AppWnd,WM_KEYUP,VK_CONTROL,MapVirtualKey(VK_CONTROL,0));
这四句运行不正常,ctrl不起作用。也就是说,CTRL C并没有启到copy的作用,或者说,这四句话没有实现向计算器发送ctrl + c的按键消息
我不知道问题出在哪里,所有的按键,比如数字、字母,甚至F1-F12都可以成功发送唯独组合了ctrl或者shift还有alt就不行。
特别提醒:
1. 我知道keybd_event是可以的,我也用keybd_event实现了ctrl + c 的组合功能。在这里,我希望得到不用keybd_event的解决方法。
2. ctrl+c只是一个组合键的例子,所以类似向程序发送剪贴板消息命令的方法就不用了,我需要的是组合按键消息
希望高手们提出自己的思路,万分感谢!!
|
|