RT 请教各位大大。C#在不调用API的情况下,能否获取到其他程序隐藏窗口的Label控件文本。我原来是调用API来获取,根据程序需要,用一个线程没2秒循环调用一次GetWindowText,调试程序的时候总是会有错误。所以现在想不调用API,是否能获取得到呢?

解决方案 »

  1.   

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

  2.   

    不调用api是无法获得另一个exe程序的任何信息,除非它主动提供,
      

  3.   

    不用api,这是脑筋急转弯么。让我想想……可以,如果那个程序也是托管程序的话。参考managed spy++的实现。
      

  4.   

    你在worker thread中直接操作界面???
      

  5.   

    不在UI线程执行的时候你给控件赋值当然要报异常了。应该判断
    if(label.InvokeRequired)
    {
       SetCallbak dlgcallbak = new SetCallbak (SetText);
       label.Invoke(dlgcallbak,text)
    }
    else
    {
       label.Text=text;
    }
      

  6.   

    问题解决,不是线程直接操作控件,我已经使用了委托。而是每次调用API的时候都实例化StringBuilder。
      

  7.   

    Mark!
    请问如何获得的?我现在想获取另一个已经打开的程序窗口的界面上面的字