2009-09-04 51 views
0

運行時,我想測試我的winform應用程序作爲構建(運行作爲服務)的一部分。我使用GetDesktopWindow和EnumChildWindows找到我感興趣的控制。這工作完全當我運行它在交互式會話從控制檯,調試器等,但失敗時,作爲構建的一部分運行找到任何控制。作爲服務運行時,我可以使用什麼來替代查找所有窗口?GetDesktopWindow替代的服務

回答

1

典型的Windows服務完全不允許(不自推出的Windows Vista),與桌面互動 - 你考慮改變你的構建過程,以作爲計劃任務運行?爲什麼你仍然使用GetDesktopWindow?這聽起來像你正在嘗試做一些奇怪在這裏,如果你試圖枚舉所有桌面的窗口,找到你的應用程序。

+0

最初我用我的應用程序的主窗口來查找子控件(這絕對是更明智的事情),但它沒有找到自定義模態對話框 - 即使在正常運行條件下(使用Form .ShowDialog())。 Btw。其通常的做法有作爲服務運行構建服務器,它的第一次,我想雖然測試WinForm的GUI。 – Grzenio 2009-09-04 09:03:51

0

可以FING allong正在運行的進程?不是很好,但它可能有用?

+0

我該怎麼做?我的Win api技能很低。 – Grzenio 2009-09-04 09:29:45

+0

使用System.Diagnostics中的Process.GetProcesses()可以枚舉整個過程。 – Toto 2009-09-04 09:39:31

+0

但是,如何獲得該過程的所有窗口? – Grzenio 2009-09-04 10:27:22

0

聽起來像你可以(如果你有適當的訪問權限)在默認的交互式桌面上使用EnumDesktopWindows