日期:2014-05-17  浏览次数:20978 次

api获取控件句柄以及内容的一些疑问

 IntPtr intpt = FindWindow("notepad", null);
 MessageBox.Show(v.MainWindowHandle.ToString());
 IntPtr intptr = FindWindowEx(intpt, v.Handle, null, null);

我现在想获取我在桌面上代开的记事本里面的内容 
目前的做法是 我去遍历 进程列表,找到 记事本的进程,获取记事本进程的句柄 现在只能获取到记事本的标题
如果调用 FindWindowEx 方法的话 后面两个参数该如何去获取, 也就是控件的句柄 和 标题   而且我如何判断某一个句柄代表的是记事本里面的文本控件?有没有谁做过这一类的东西的,给点意见或者指导
API 句柄

------解决方案--------------------
也就可以获取内容了
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

也就可以获取内容了
现在我的问题是如何通过 窗体控件的句柄去获取到里面的子控件的句柄 只要获取到子控件的句柄我就能获取到里面的内容

你可以通过一些子控件的特性去获取。

UI Automation中有AutomationID这样的唯一标识。

如果是FindWindowEx, 在父窗口中查找字窗口,可以通过你要查找的子窗口的class name或其他一些属性来判断。这些属性你可以通过spy++, UISpy 去查看一下。

我现在就是通过spy++查看的,但是我很纳闷的是现在Edit控件的句柄我获取到了,但是通过GetWindowText方法返回的sb还是空的


sb.Capacity的值是多少,不会是0吧。

不是0 是16  但是sb.length是0


那你确定你的句柄是正确的。
我现在没有VS环境,没办法去做一下。
下面的链接你参考一下吧:http://pinvoke.net/search.aspx?search=GetWindowText&namespace=[All]
里面有提到:If the window does not have a caption, the return value is a null string. This behavior is by design.不知道你是不是这样的情况。