给外部程序发送按键??

a达哥a 2005-01-16 01:33:25
程序B是个外部EXE, 我的程序A要发送按键Ctrl+C给它, 用了好多方法, 程序A都无动于衷, 好灰心! 请大侠指教:

方法一:

Private Sub Command1_Click()
Dim lngWhd As Long
lngWhd = FindWindow(vbNullString, "程序A")
SendMessage lngWhd, WM_KEYDOWN, Asc("C"), 0& ''结果A没任何反映
End Sub

方法二:
Private Sub Command1_Click()
Call AppActivte("程序A")
SendKeys "^C" ''结果A还是没任何反映
End Sub
...全文
176 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在还是人类 2005-01-16
  • 打赏
  • 举报
回复
不好意思没试出来
唯一我试有反映的信息参数是BM_SETSTYLE
而且是向目标按钮发送完信息后,手动将焦点已到目标按钮的窗口
然后在屏幕上任意按下鼠标左键,按钮便启动事件。呵呵,没办法
SendMessage My2hWND, BM_SETSTATE, 1, 0

如果先调用完
SendMessage My2hWND, BM_SETSTATE, 1, 0
再用
SendMessage My2hWND, BM_SETSTATE, 0, 0
结果无效
a达哥a 2005-01-16
  • 打赏
  • 举报
回复
哦, 谢谢! 在线等你!
现在还是人类 2005-01-16
  • 打赏
  • 举报
回复
帮你看看,等等...
a达哥a 2005-01-16
  • 打赏
  • 举报
回复
晕,就没人知道吗?
Fashionxu 2005-01-16
  • 打赏
  • 举报
回复
看看这个能搞定吗?

Private Sub Command1_Click()
hhwnd = FindWindow(vbNullString, "联系方式.txt - 记事本")
If hhwnd <> 0 Then
SetForegroundWindow hhwnd
Sleep 200‘要不要都行
SendKeys "^c"
End If
End Sub
sirious 2005-01-16
  • 打赏
  • 举报
回复
学习
sworddx 2005-01-16
  • 打赏
  • 举报
回复
小弟只不过没能力解决这个问题而已,要是真是诚心送200分,小弟还是很乐意接受底~
老猫 2005-01-16
  • 打赏
  • 举报
回复
Call AppActivte("程序A") 应该是
Call AppActivte("程序B")吧
a达哥a 2005-01-16
  • 打赏
  • 举报
回复
唉! 想送200分都难啊!
sworddx 2005-01-16
  • 打赏
  • 举报
回复
dongge2000(※秋日私语※:非[版务].灌!) 同学别什么拉起来就贴,那帖子根本没涉及如何发送APPCOMMAND_COPY消息,连APPCOMMAND_COPY这个参数都没涉及到。
sworddx 2005-01-16
  • 打赏
  • 举报
回复
哪位能写一点的高手来帮下忙,我搞不定。
已知Const APPCOMMAND_COPY=36,仅能在ME/2K/XP下使用
dongge2000 2005-01-16
  • 打赏
  • 举报
回复
http://tech.99soft.net/h/2003-1-29/104076.htm
sworddx 2005-01-16
  • 打赏
  • 举报
回复
可行的方案我试试看,我对这些东西也仅限于理论性的理解。
熊孩子开学喽 2005-01-16
  • 打赏
  • 举报
回复
我用这个方法可以对OUTLOOK操作,别的程序没有试过,应该可以的。
如果不行,也可以试试在步骤二和步骤三之间用SLEEP停顿一小段时间
熊孩子开学喽 2005-01-16
  • 打赏
  • 举报
回复
一:用FINDWINDOW找到要发送按键的程序的HWND
二:用SENDMESSAGE把该程序设为活动
三:用SENDKEYS发送按键
viena 2005-01-16
  • 打赏
  • 举报
回复
up
a达哥a 2005-01-16
  • 打赏
  • 举报
回复
各位大哥,别考验小弟的理解能力了,给个可行的方案吧,给200分!
sworddx 2005-01-16
  • 打赏
  • 举报
回复
你也可以发送WM_HOTKEY消息,并带上参数来实现你的功能:
(以下内容来自MSDN,中文部分是我翻译的)

lParam
The low-order word specifies the keys that were to be pressed in combination with the key specified by the high-order word to generate the WM_HOTKEY message. This word can be one or more of the following values.
/*低位字节指定组合键中与高位字节所指定的按键同时按下的按键的keycode,例如ALT,CTRL等。低位字节可以由下面的一个或者多个复合而成:*/
MOD_ALT Either ALT key was held down. //任何一个alt键按下
MOD_CONTROL Either CTRL key was held down. //任何一个ctrl键按下
MOD_SHIFT Either SHIFT key was held down. //任何一个shift键按下
MOD_WIN Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo. //任何一个windows键按下


The high-order word specifies the virtual key code of the hot key.
/*高位字节指定按键的虚拟键代码,你的情形中,应该是C*/
sworddx 2005-01-16
  • 打赏
  • 举报
回复
MSND里面认为,如果是在WinXP下,可以通过发送WM_APPCOMMAND消息并带上参数APPCOMMAND_COPY即可实现你的功能。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧