使用
SendMessage(hwnd, 0x10, 0, 0)可以关闭按钮 //VM_CLOSE
但是使用,sendmessage(hwnd, 0xF5, 0, 0)却点击不了按钮。 //BM_CLICK
求助!!!
------解决思路----------------------
那也得看人家是什么窗体。腾讯的窗体就得点击窗体坐标。 而不是去找按钮。
------解决思路----------------------
如果是弹窗 你的sendmessage 可能会卡在这。不往下执行。 你需要异步 或者开线程去操作。
还有
SendMessage(hwnd_bt, 0x0201, 0, 0);
SendMessage(hwnd_bt, 0x0202, 0, 0);
是发送给按钮的句柄。 不是窗体。
------解决思路----------------------
从这里看出,你的hwnd明显不对。具体看我一楼的回复。
在窗体程序里,不仅窗体有句柄,几乎每一个控件都有自己的句柄,它们都是Windows系统中所谓的Window,都有自己的消息处理函数。你能发送关闭消息关闭窗体,只能说明你的窗体句柄找对了,但这和关闭按钮的句柄对不对完全没关系。
PS1:关于对话框会线程阻塞的说法也是错误的,弹出对话框只是"阻塞"了对该消息处理的"子函数",另外会对键盘,鼠标消息做一些"额外"的处理。最简单的例子:Form1中弹出对话框Form2,在Form2中你是可以对Form1中的控件进行操作的,比如:改变TextBox中的Text属性,而不用Invoke。
PS2:SendMessage是同步的。它会等"对方"将消息处理完毕才返回。可以做一个实验,比如:A程序中的button1点击后会一个复杂的运算,需要10秒,那你用SendMessage向这个按钮发送点击消息,要10秒后才会返回。PostMessage才是异步的。