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

C#获取其他程序隐藏窗口的控件文本
RT 

请教各位大大。

C#在不调用API的情况下,能否获取到其他程序隐藏窗口的Label控件文本。

我原来是调用API来获取,根据程序需要,用一个线程没2秒循环调用一次GetWindowText,调试程序的时候总是会有错误。

所以现在想不调用API,是否能获取得到呢?

------解决方案--------------------
你以为你不调用API
.NET就不调用了吗?
你的程序一起来
就已经调用几百个API了



------解决方案--------------------
不调用api是无法获得另一个exe程序的任何信息,除非它主动提供,
------解决方案--------------------
不用api,这是脑筋急转弯么。让我想想……

可以,如果那个程序也是托管程序的话。参考managed spy++的实现。
------解决方案--------------------
不在UI线程执行的时候你给控件赋值当然要报异常了。应该判断
if(label.InvokeRequired)
{
   SetCallbak dlgcallbak = new SetCallbak (SetText);
   label.Invoke(dlgcallbak,text)
}
else
{
   label.Text=text;
}