1

別のアプリケーションを開始するシステム サービスがあります。このアプリケーション (C# で記述) は、ある時点で、開いているすべてのウィンドウ (アプリケーション) を取得し、それらの名前を一覧表示する必要があります。

私はEnumWindow(Win32から)使用Process.GetProcesses()し、process.MainWindowTitle(C#から)私が得たのはこれだけです:

プロセス: UI0Detect

ウィンドウのタイトル: 対話型サービスの検出

そのアプリケーションを手動で実行すると、必要なすべてのウィンドウが表示されます。しかし、システム サービスがアプリを実行すると、この 1 つのサービスしか得られません。

アプリにアクティブなウィンドウの正しいリストを取得させるにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

1

Windowsサービスは、通常のプログラムと同じ「セッション」で実行されないため、2番目に開始されたプログラムも、サービスの起動時に特別なセッションで開始されます。CreateProcessAsUserを使用して、監視するユーザーセッションで2番目のアプリを作成する必要があります。

詳細については、インタラクティブサービスの作成に関するこのMSDNの記事を参照してください。

于 2012-07-20T13:50:27.207 に答える