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

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

先用FindWindow函卜腊数找到程序句柄,再用findWindowEx扭句柄,然后调用sendmessage函数发送消息即可\x0d\x0a\x0d\x0aDeclareFunctionSendMessageLib“user32"Alias“SendMessageA"(ByValhwnd\x0d\x0aAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong\x0d\x0aSendMessage函数的hwnd参数为接收消息的窗口或控件的hwnd句柄。wMsg参数指定具体的消息值。要发送鼠标左键按下和释放的消息,wMsg的取值分别为WM_LBUTTONDOWN和WM_LBUTTONUP,这两个常量定义如下:\x0d\x0a\x0d\x0aConstWM_LBUTTONDOWN=&H201\x0d\x0aConstWM_LBUTTONUP=&H202\x0d\x0a把这两个消息发送给一个按钮,按钮就会像真的被鼠标左键单击了一样。SendMessage函数中的后两个参数在本例中可以不理,简单置0即可。\x0d\x0a还有一点细节需注意。如果连续给按钮发送一对WM_LBUTTONDOWN和WM_LBUTTONUP消息,Windows会来不及进行一些必要的系统 *** 作,这样在视镇键觉上就看不出按钮被按下后又放开的效果,好像按钮没有按动。但按钮的Click事件处理过程被激活执行表明按钮确实被按过。为了达到视觉上的完美效果,我们不妨在WM_LBUTTONDOWN和WM_LBUTTONUP两个消息之间插入一段短短的延时,比如说200毫秒,在这段延时期间,把处理权交给Windows,这样Windows就有时间显示按钮被按下的效果了。插入延型旅滑时的办法有很多,可以加入一段空循环或利用计时器控件,这里再介绍一个API函数GetTickCount,该函数获取自Windows启动至被调用时所经过的毫秒数。利用这个函数控制延时,不仅精确,而且节省资源。\x0d\x0aGetTickCount函数的接口声明如下:\x0d\x0aDeclareFunctionGetTickCountLib“kernel32"()AsLong\x0d\x0a\x0d\x0a====================CODE:\x0d\x0aPrivateeclareFunctionGetTickCountLib“kernel32"()AsLong\x0d\x0a\x0d\x0aPrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsInteger,ByVallParamAsAny)AsLong\x0d\x0aPrivateDeclareFunctionFindWindowExLib"user32"Alias"FindWindowExA"(ByValhWnd1AsLong,ByValhWnd2AsLong,ByVallpsz1AsString,ByVallpsz2AsString)AsLong\x0d\x0aPrivateDeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong\x0d\x0aDimtWndAsLong,bWndAsLong,ncWndAsLong\x0d\x0a\x0d\x0aConstWM_LBUTTONDOWN=&H201\x0d\x0aConstWM_LBUTTONUP=&H202\x0d\x0a\x0d\x0aPrivateSubCommand1_Click()\x0d\x0atWnd=FindWindow("Shell_TrayWnd",vbNullString)\x0d\x0abWnd=FindWindowEx(tWnd,ByVal0&,"BUTTON",vbNullString)\x0d\x0aSendMessagebWnd,WM_LBUTTONDOWN,0,ByValO&\x0d\x0aGetTickCount\x0d\x0aSendMessagebWnd,WM_LBUTTONUP,0,ByValO&\x0d\x0aEndSub这个例子展示点“开始”按扭

一般来说在常用的 *** 作系统中有以下几种方式实现进程间通信

管道法(芹祥即把一个程序的输入和另一个程序的输出对接起来,实现方式根据自己使用编程语言的不同各异)

信号法,(利用 *** 作系统自带的信号 *** 作,让一个程序给另一个发信号....但是信号隐伏的种类有嫌携搏限,所以很少用

共享数据库,安装数据库软件,两个程序能访问同一个数据库,在数据库里放消息

共享网络端口,(可以理解成一个进程使用一个网络端口,另一个想跟他通信的时候就直接去访问这个端口

一个应用对应一个进程,那么应用之间发送消息就是进程间通信。毁轿州可以使用发送广播

在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿帆掘广播电台来做个比方。我们平常使用收音机收音纤蔽是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8238212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存