永发信息网

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

答案:1  悬赏:80  手机版
解决时间 2021-04-01 17:55
如何向另一个程序中的按钮发送单击消息
最佳答案
先用FindWindow函数找到程序句柄,再用findWindowEx扭句柄,然后调用sendmessage函数发送消息即可

  Declare Function SendMessage Lib “user32" Alias “SendMessageA" (ByVal hwnd
  As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  SendMessage函数的hwnd参数为接收消息的窗口或控件的hwnd句柄。wMsg参数指定具体的消息值。要发送鼠标左键按下和释放的消息,wMsg的取值分别为WM_LBUTTONDOWN和WM_LBUTTONUP,这两个常量定义如下:

  Const WM_LBUTTONDOWN = &H201
  Const WM_LBUTTONUP = &H202
  把这两个消息发送给一个按钮,按钮就会像真的被鼠标左键单击了一样。SendMessage函数中的后两个参数在本例中可以不理,简单置0即可。
  还有一点细节需注意。如果连续给按钮发送一对WM_LBUTTONDOWN和WM_LBUTTONUP消息,Windows会来不及进行一些必要的系统操作,这样在视觉上就看不出按钮被按下后又放开的效果,好像按钮没有按动。但按钮的Click事件处理过程被激活执行表明按钮确实被按过。为了达到视觉上的完美效果,我们不妨在WM_LBUTTONDOWN和WM_LBUTTONUP两个消息之间插入一段短短的延时,比如说200毫秒,在这段延时期间,把处理权交给Windows,这样Windows就有时间显示按钮被按下的效果了。插入延时的办法有很多,可以加入一段空循环或利用计时器控件,这里再介绍一个API函数GetTickCount,该函数获取自Windows启动至被调用时所经过的毫秒数。利用这个函数控制延时,不仅精确,而且节省资源。
  GetTickCount 函数的接口声明如下:
  Declare Function GetTickCount Lib “kernel32" () As Long

  ====================CODE:
  Private eclare Function GetTickCount Lib “kernel32" () As Long

  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) 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
  Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  Dim tWnd As Long, bWnd As Long, ncWnd As Long

  Const WM_LBUTTONDOWN = &H201
  Const WM_LBUTTONUP = &H202

  Private Sub Command1_Click()
  tWnd = FindWindow("Shell_TrayWnd", vbNullString)
  bWnd = FindWindowEx(tWnd, ByVal 0&, "BUTTON", vbNullString)
  SendMessage bWnd, WM_LBUTTONDOWN, 0, ByVal O&
  GetTickCount
  SendMessage bWnd, WM_LBUTTONUP, 0, ByVal O&
  End Sub这个例子展示点“开始”按扭
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
制动片背板怎么和活塞连在一起
苏教版语文六年级上册第十三课段意
钓鲤鱼中鱼以后口不正是怎么回事
古代张姓女名人
请教,乌子怎么烧
CPSM考试通过率高吗?国内现在有多少人获得CP
植物大战僵尸无尽模式一共有几关
ppp项目建设既然是项目公司,是否建设期利息
在现实生活中好听的情侣姓名、、、、、
全名养牛20元能提现出来吗
测名字 周怡然 女
宫口快开了阵痛5分钟一次需要多久
说明文作文400字冰箱解释段意
因为我工作忙~我和我女朋友好久没见了..
武汉什么专科高校会计专业比较好?
推荐资讯
云南首富马永升
含有厌恶和憎恨感情色彩的词语有哪些?
怎么计算Excel2013中当前日期所在的周数
蜜三刀是什么?
地质剖面图 剖面线方向与岩层倾向不一致时 填
有没有关于宫女丫鬟或者这一类型女主的小说
道家左手心压右手背表示什么意思
黄历中 见贵是什么意思
沉香叶子泡水喝,对身体有什么好处
吉隆坡至甲米AK868是哪个航空公司的?
什么车空间大点,不管是头部空间还是腿部空间
检察院文员日常工作要做些什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?