UIを使って動作するアプリケーションがあります他のWPFアプリケーションとの自動化API。 同じ機能を使用するWindowsサービスを作成しましたが、サービスがウィンドウhwdを見つけようとすると、NULLを受け取ります。
System.ArgumentException:hwndはIntPtr.Zeroまたはnullにはできません。
System.Windows.Automation.AutomationElement.FromHandle(IntPtr hwnd)で
MyService.Scheduler.GetNotificationWindow(IntPtr hWndtoolBar)
WindowsサービスでUIオートメーションAPIを使用することは可能ですか?
回答:
回答№1は0Windowsサービスはユーザーのデスクトップにアクセスできません。参照: Windowsサービスとデスクトップアプリケーション間の相互作用
つまり、短い答えは「いいえ」です。
解決策は、サービスに "talk"を送信することです。ソケットを介してデスクトップ上のプロセスとこのプロセスに自動化をさせます。 (それはサービスを取り除き、すべてのロジックをデスクトップアプリに移すことにつながるかもしれません)