来自.NET的win32应用程序表单上的访问控制文本

时间:2011-02-08 15:00:24

标签: c# .net winapi forms

过去我使用(P / Invoke)方法GetWindowText来获取正在运行的应用程序的窗口标题文本,无论它是Win32,.NET还是其他。

我想弄清楚的是,是否有办法在表单内的实际控件上访问文本。我意识到这可能很难,我可能会通过一些随机的十六进制值来解决控制问题,并且如果软件每次都发生变化都会破坏它(这是我无法控制的)。但是,我只是想这样做,为我的媒体中心设置添加一些数据轮询,并希望能够从没有API的媒体播放器中提取一些信息。

那么,是否有任何类型的API(我想我必须P / Invoke进入它)才允许你这样做?代码示例非常赞赏。

2 个答案:

答案 0 :(得分:0)

我相信GetWindowText将窗口句柄作为参数,许多控件(但不是所有控件)也都有窗口句柄,你应该能够使用相同的API来获取文本。

如何获取子控件的句柄是另一个故事,但Win32拥有您所需要的一切。

答案 1 :(得分:0)

一旦知道其句柄,就将WM_GETTEXT消息发送给控件。

首先要弄清楚它的句柄使用Spy ++或其他一些工具来查找顶级窗口的名称及其窗口类名。将其发送到FindWindow以获取顶级窗口句柄。最后打电话给EnumChildWindows让孩子们走路。 Spy ++还可以告诉您如何识别感兴趣的孩子。

当然你可能运气不好,发现感兴趣的控件是在没有自己的窗口句柄的情况下实现的,但Spy ++也会告诉你。