先找到窗口的句柄,再来查找按钮的句柄,如果按钮有文本内容,那就好办,如果没有,那建议你利用SPY++先来察看一下按钮的类型,以此类型为查找参数多次调用FindWindowEx来查找,直到找到的的句柄和Spy++相同,那么这个按钮就找到了。
先申明api:
[DllImport("user32dll", EntryPoint = "SendMessage")]
internal static extern int SendMessage(IntPtr hWnd, int msg, int wParam, StringBuilder lParam);
最好再定义一个枚举:
internal enum WinMsgType
{
WM_GETTEXT = 0x000D,
}
然后相关代码如下:
const int bufferLen = 1024;
var buffer = new StringBuilder(bufferLen);
SendMessage(hWnd, WinMsgTypeWM_GETTEXT, 1024, buffer);//hWnd为控件句柄
return bufferToString();
思路就走错了,得到网页上的按钮不是判断句柄来的
比如得到这里的”我来回答”按钮
应该是这样做
得到网页的源代码,查找源代码中 value="提交回答"的按钮,这样才得到
示例代码如下
If WebBrowser1DocumentForms(Form_ID)(i)Value = " 查询 " Then _
WebBrowser1DocumentForms(Form_ID)(i)Click
用EnumChildWindows吧,要借助SPY++,分析控件ID和GeiWIndowLong(hwWndChild,GWL_ID)返回的iD,给指定的控件发送消息SendMessage,还有控件一般都是发送的是WM_COMMAND消息吧。 最后想说的是,如果你是想**什么密码之类的话,这种方法是行不通的,比如QQ这些,他们都装了个Hook过程,你做什么 消息都会被过滤吧。
以上就是关于如何通过句柄获取控件信息全部的内容,包括:如何通过句柄获取控件信息、谁用C#做过spy++的程序,小弟有点问题,想请大侠帮忙,怎么获取panel中控件中的内容,麻烦写具体点,、怎么得到网页内按钮的句柄,用SPY++只能看到浏览器句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)