2011-10-18 18 views
4

看看這幅畫獲得所有窗口:enter image description hereC#中如何使用MainWindowHandle

我這是怎麼了由黑盒子包圍的窗口的句柄。

  Process[] processes = Process.GetProcessesByName("TopazChat"); 
      foreach (Process p in processes) 
      { 

       MessageBox.Show(p.MainWindowHandle.ToString()); 
       List<IntPtr> test = GetChildWindows(p.MainWindowHandle); 
       foreach (IntPtr IGotIt in test) 
       { 
        MessageBox.Show("I got the child windows"); 
       } 
      } 

我的問題是:如何獲得被紅色框包圍的窗口句柄? ,我的方法有什麼問題嗎?

有什麼建議?我只是使用這種方法,因爲它是我唯一熟悉的方法。

回答

2

另一個窗口是另一個在同一個進程中實現應用程序中可見窗口之一的頂級窗口。這是一個古老的Delphi 7應用程序,它實現了隱藏的頂層窗口,它位於可見的窗口層次結構之外。那個隱藏的窗口是你找到的那個,用黑色突出顯示,類名是TApplication。

如果我是你,我會調用EnumWindows調用來獲取所有頂層窗口,這些窗口將包含該應用程序的可見主窗口。這將以與您的GetChildWindows方法非常類似的方式實現。

+0

感謝您的快速回復,我會試試看 – user848682