问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何向另一个程序中的按钮发送单击消息?

发布网友 发布时间:2022-04-22 02:39

我来回答

5个回答

热心网友 时间:2023-06-24 05:35

SendKeys 语句

将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。

语法

SendKeys string[, wait]

SendKeys 语句的语法具有以下几个命名参数:

部分 描述
string 必需的。字符串表达式,指定要发送的按键消息。
Wait 可选的。指定等待方式的 BooleandefBooleanDataType@veendf98.chm 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。

说明

每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 "A" 作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 "ABC" 作为 string。

对 SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。方括号 ([ ]) 对 SendKeys 来说并不具有特殊意义,但必须将它们放在大括号中。在其它应用程序中,方括号有特殊意义,在出现动态数据交换 (DDE) 的时候,它可能具有重要意义。为了指定大括号字符,请使用 {{} 及 {}}。

为了在按下按键时指定那些不显示的字符,例如 ENTER 或 TAB 以及那些表示动作而非字符的按键,请使用下列代码:

按键 代码
BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} 或 {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}或 ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} 或 {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:

按键 代码
SHIFT +
CTRL ^
ALT %

为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 "+(EC)"。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用 "+EC"。

为了指定重复键,使用 {key number} 的形式。必须在 key 与 number 之间放置一个空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。

注意 不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。Sendkeys 也无法将 PRINT SCREEN 按键 {PRTSC} 发送到任何应用程序。

参考资料:MSDN

热心网友 时间:2023-06-24 05:36

这个简单的,是要求获得控件的句柄才能发送按键消息

我具体不知道你要发什么按键消息,就分别用sendmessage和postmessage来给你写个例子!2009QQ采用的自绘控件技术就连SPY+都找不到其控件。。

你自己添加2个按钮就行了我以记事本为例:
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Const WM_SETTEXT = &HC '设置文本的消息
Const VK_F5 = &H74 '发送F5的消息
Const WM_KEYDOWN = &H100 '发送KEYDOWN事件的消息
Dim h1 As Long 'h1是TXT窗口的句柄
Dim h2 As Long 'h2是TXT文本编辑区域的句柄

Private Sub Command1_Click()
SendMessage h2, WM_SETTEXT, 0, ByVal CStr("哈哈")
End Sub

Private Sub Command2_Click()
PostMessage h2, WM_KEYDOWN, VK_F5, 0&
End Sub

Private Sub Form_Load()
Shell "notepad.exe"
h1 = FindWindow(vbNullString, "无标题 - 记事本") 'vbNullString 是类名,"无标题 - 记事本" 是窗体名
h2 = FindWindowEx(h1, 0&, "edit", vbNullString) '父窗口句柄 子窗口句柄,如果为NULL就从第一个开始找(0& 表示无) 类名 窗体名
End Sub

热心网友 时间:2023-06-24 05:36

发送按键的方式有很多
比如
PostMessage 或 keybd_event 是利用API
SendKeys 是系统内建语句

但是都是发送的虚拟按键码
有很多软件是不接受虚拟按键码的

最常见的就是ctrl + alt +del
这个按键组合就是不接受虚拟按键码的
你无论用以上那种方式模拟这个组合键都是无效的

热心网友 时间:2023-06-24 05:37

先是findwindow 再 sendmessage,不过现在QQ2009和2008的结构有了极大的变化...

热心网友 时间:2023-06-24 05:38

Sendkey
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
遇到碰瓷怎么办 导致碰瓷者伤亡用负法律责 最新电子防盗装置 3个LED的小夜灯电路 买不到小功率3伏变压器,如何降压做个3伏70毫安电源 小夜灯按钮坏了怎么拆 哪里有各种定做手提袋 如图,我这个配置玩逆战为何会卡?pvp200左右,pve75左右,ping二三十,网... 女孩问你是的时候怎么回答 自习课 同学都睡着了 男同桌问我让我跟他比赛 比谁撒尿尿得远 问他... 想把一个女同学上了,又不想负责任,毕竟她对我没意思,我对她也没意思... 有一个晚上,女同学叫我一起玩,玩着玩着到了半夜,回自己的宿舍太远就... 如何向另一个进程发送信号 一个人做错了事要如何向另一个人道歉 爱是不保留的,要怎样向另一半传达爱意呢? 在两个人的感情中,应该怎么向另一半传达爱意呢? 怎样向自己的另一张银行卡转账 负面情绪应该怎么向另一半倾诉呢?你有什么看法? 现在的情侣都是如何向另一半表达爱意的? 恋爱中,要如何向另一半传达爱意呢? 怎么向另一半表白爱意? 嘴唇干裂起皮是脾胃虚弱的原因吗? 我的嘴唇总是干,红红的,请问和胃有关吗? 嘴唇干裂是什么原因?是哪个器官有问题? 嘴唇干裂是什么原因 嘴唇干裂,脾热所致,如何治疗? 嘴唇干裂大便塘稀都是脾虚的表现吗 脾虚会导致嘴唇干裂吗 每天喝水也不少,为什么嘴唇还会有干裂的情况? 喝水不少但总是嘴唇干裂,是不是脾燥呢? 不管喝多少水还是嘴唇干裂,是为什么呢? 嘴唇干裂和内脏有什么关系 怎么才能从一台电脑向另一台没有网的电脑传文件 恋爱期内,如何向另一半表达负面情绪? 怎么向另一个没有网的电脑传歌啊 还没有线 怎样用网络向另一台计算机发送文件 一个银行卡怎么往另一个银行卡转钱 手机如何向另一个手机充值 怎么向另一个玩家求婚 幻影路由器如何用手机设置无线密码? 幻影路由器d126怎么进入设置页面 手机幻影wifi怎么使用 安卓手机打不开幻影wifi怎么办 幻影路由d126怎么设置成网关模式? 幻影路由D126漏油管理关闭双频合一设置 安卓7.0怎么使用幻影WiFi 幻影wifi怎么操作防 幻影路由d128如何设置 幻影WiFi怎么用? 三顾茅庐的意思是什么? 三顾茅庐什么意思? 悦刻5幻影怎么连接手机