0

このGet active window text (さらにテキストを送信する) のようなコードを使用して、フォアグラウンド ウィンドウにキーを送信しています。コンソールから実行すると、うまく機能します。サービスから実行すると、GetForegroundWindow() 呼び出しは 0 (ゼロ) を返します。サービスからフォアグラウンド ウィンドウ ハンドルを取得するにはどうすればよいですか?

編集:少し調査したところ、サービスが異なるセッションとして実行されていることがわかりました-それが私の問題に関連している場合、コンソール(物理モニター)セッションのフォアグラウンドウィンドウが存在する場合、そのウィンドウを取得する方法を知る必要があります。

編集 #2: 私のユースケースには XP のみが含まれます。

4

1 に答える 1

1

XP では、設定すると GetForegroundWindow が動作します。

サービスがデスクトップと対話できるようにする

サービス プロパティのチェック ボックス ([ログオン] タブ)。これは、Vista 以降では機能しません。

実際、サービスから GetForegroundWindow を呼び出すべきではありません。サービスは、ログインしているユーザーがいない場合でも実行され、複数のユーザーがログオンしている場合にも機能します。

なぜWindowsサービスからこれを行っているのかわかりませんが、トレイに隠されている単純なデスクトップアプリでうまくいくかもしれません。

于 2012-11-06T00:30:50.193 に答える