2008-12-04 309 views
4

從API調用時,Windows API :: FindWindow函數失敗。 GetLastError()也返回0(成功?)。這是一些特權訪問權限問題嗎?你認爲這是設計問題,我應該使用另一種IPC方法?:: FindWindow從服務應用程序失敗

+0

是的,這是一個設計問題。您肯定需要使用IPC機制,而不是在Windows上運行。 – 2009-06-17 01:47:50

回答

6

leppie的權利,Windows服務通常被拒絕與桌面交互。你可以在XP和更早版本中繞過它,但在Vista和更高版本中將無法做到。您最好將桌面和用戶交互委託給GUI應用程序。有關詳細信息,請參閱document

5

服務在會話0中運行。在XP和更早版本上,第一個登錄用戶也在會話0中運行,並且後續用戶在會話1和更高版本中運行。如果服務設置爲「與桌面交互」,則它可以訪問在會話0中運行的任何用戶窗口。但是,從Vista開始,用戶從不再運行會話0。 FindWindow()只能在調用它的Session的上下文中工作,因爲窗口不能跨越Session邊界訪問。

相關問題