请问postmessage(sendmessage)向其它窗口发送CTRL+A等组合按键的方法!

在多个地方,搜索引擎进行过搜索!但好象目前没有任何答案,希望各位老师能在这里帮帮我到底要怎么做?!这个问题好象一直以来就有,但一直无解!!(只要postmessage或者sendmessage的解)。如果真的不可以的话,我也就死心了!

谢谢各位!

PostMessage(thehwnd,WM_KEYDOWN,VK_CONTROL,0x001D0001);
PostMessage(thehwnd,WM_KEYDOWN,'A',0x001E0001);
PostMessage(thehwnd,WM_KEYUP,'A',0xC01E0001);
PostMessage(thehwnd,WM_KEYUP,VK_CONTROL,0xC01D0001);

SendMessage(WM_KEYDOWN, (WPARAM)17, (LPARAM)0x001d0001); // 按下Ctrl
SendMessage(WM_KEYDOWN, (WPARAM)38, (LPARAM)0x01480001); // 按下上键
SendMessage(WM_KEYUP, (WPARAM)38, (LPARAM)0xc1480001); // 放开上键
SendMessage(WM_KEYUP, (WPARAM)17, (LPARAM)0xc01d0001);
这些都不起作用!
谢谢楼上朋友的热心回答。
但我要的是复合键,如:ctrl+a.ctrl+f等,不是单一按键。
请继续指教,谢谢!!

===============
不好意思,我晚上抽空试了一下,似乎真的不太容易实现,搜索网上好像也没有什么可用的信息
我的感觉是是否不能把多个按键的消息分开来发送?
就像吃饭可以撑死人,如果我一次性给一个人一吨食物吃,就可以至他于死地,但是如果我每天都请他吃饭,可能他活的更痛快了,哈哈
乱打比方
我的意思是,也许接受消息的对象不能把一连串消息当成一个消息来处理,形成不了组合键,所以达不到效果
你可以尝试这样(我没试)
先发个wm_setfocus消息让对象获得焦点,然后改用keybd_event来发送按键

=================
Private Const WM_SETFOCUS = &H7

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-01-27
这个问题可以实现
到要搞清楚
用Vb psotmessage 时 参数hwnd 必须是要接受消息的窗口的句柄
但 如果程序有子窗口 就要把信息发到要接受消息的的子窗口的hwnd上
楼上的Text1.hwnd就是text1.hwnd 但对于其他程序 你要自己枚举出窗口的hwnd

请问postmessage(sendmessage)向其它窗口发送CTRL+A等组合按键的方法...
乱打比方 我的意思是,也许接受消息的对象不能把一连串消息当成一个消息来处理,形成不了组合键,所以达不到效果 你可以尝试这样(我没试)先发个wm_setfocus消息让对象获得焦点,然后改用keybd_event来发送按键 === Private Const WM_SETFOCUS = &H7 Private Declare Sub keybd_event Lib "user32...

如何用SENDMESSAGE发送组合键如CTRL+A
在VB里怎么用sendmessage实现组合键ctrl end,要确实可行的办法,请写下详细代码 Private Declare Function PostMessage Lib

关于PostMessage或者SendMessage发送ctrl组合按键的问题
我需要向一个程序发送ctrl+v的按键消息。用PostMessage或者SendMessage都发现ctrl失效,不知问题出在哪里。现在说明如下:我以windows的计算器(calc)为例子,选择科学型的16进制。我... 我需要向一个程序发送ctrl+v的按键消息。用PostMessage或者SendMessage都发现ctrl失效,不知问题出在哪里。现在说明如下:我以windows的...

...通过sendMessage或postMessage给指定窗体发送组合键? 比如 ALT+F4...
方法:定义键盘钩子。(调用API函数)引入命名空间 using System.Runtime.InteropServices;public delegate int HookProc(int nCode, int wParam, IntPtr lParam);\/\/定义钩子过程委托(钩子函数原型)

VB PostMessage或者SendMessage怎么发送一个组合键?
这个问题一开始也困扰了我好几个月,后来终于解决了,怪自己笨。搜索了很多资料,没找到解决方案,我的解决办法是:由于ctrl是公共的,无所谓窗口激活不激活,所以采用keybd_event先给他按住,然后再对某窗口句柄发送第二个键即可。当然,最后得松开它。

如何向另一个程序发快捷键
PostMessage将消息放入其他程序消息队列.SendMessage则越过消息队列直接调用目标窗口的窗口过程.在此.两个api应该效果是一样的,你的代码发送消息也是正确的.具体情况我不是很明白.但是消息处理系统我还比较清楚.应该不会错,要错也是findwindow错了,即发送的窗口不对.也有可能是快捷键定制的有问题.快捷键在...

求VB用向其他程序发送键值的方法!
SendKeys 语句 将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。语法 SendKeys string[, wait]SendKeys 语句的语法具有以下几个命名参数:部分 描述 string 必需的。字符串表达式,指定要发送的按键消息。Wait 可选的。指定等待方式的 BooleandefBooleanDataType@veendf98.chm 值。如果...

使用Windows API向指定窗口发送模拟鼠标及键盘消息
Windows API中的SendMessage和PostMessage功能可以用来向特定窗口发送模拟鼠标和键盘消息,但实现时需要注意一些问题。首先,发送消息时可能会遇到目标窗口不响应的情况,这可能是权限问题。使用管理员权限运行程序后,确保目标窗口在发送消息时处于可接收状态是关键。其次,参数处理不可忽视,尤其是wParam和lParam...

在VB里怎么用sendmessage实现组合键ctrl+end,要确实可行的办法,请写下...
PostMessage Text1.hwnd, WM_KEYUP, VK_RETURN, 0 'Text1.SetFocus End Sub 这是在本地窗口上试验的,先在窗口上添加一个文本框和一个命令按钮,然后把上面的代码复制进去就可以了,如果是其他程序窗口中的文本框,先用findwindowex找到该文本框的句柄,替换掉上面的Text1.hwnd就行了 对于记事本...

SendMessage VB 怎么写发送CTRL+S保存命令。
别使用SendMessage(要等目标返回),要使用PostMessage(无需等目标返回)PostMessage handle,WM_KEYDOWN,VK_CTRL,0& PostMessage handle,WM_KEYDOWN,VK_S,0& PostMessage handle,WM_UP,VK_S,0& PostMessage handle,WM_UP,VK_CTRL,0& 以上代码供参考 ...

相似回答