0

たとえば、Windowsサービスアプリケーションと、ログオンしている各ユーザーセッションで実行されているウィンドウクライアントアプリケーションがあります。各クライアントアプリでRegisterWindowMessageを呼び出し、そのメッセージをそこでトラップしようとすると。また、サービスアプリで同じメッセージ名を使用してRegisterWindowMessageを呼び出し、それをサービスからのSendNotifyMessageの呼び出しで使用して、各クライアントアプリにシングルファイアイベントを通知しますか?

PS。私はC++/MFCとネイティブWinAPIを使用してプログラムします。

4

1 に答える 1

1

サービス アプリケーションがシステム アカウントで実行されている場合、ユーザー アカウントのアプリケーションにメッセージを送信できません。

次のアプローチを試すことができます。

  • すべてのセッション (WTSEnumerateSessions) を調べて、すべての WindowStation を取得します。
  • これらのステーション (OpenWindowStation) を開き、
  • 1駅あたり
    • プロセスをステーションに関連付けます (SetProcessWindowStation)。
    • すべてのステーション デスクトップ (Enumdesktops) を調べます。
    • アプリケーションのウィンドウの 1 つが見つかるまで、すべてのウィンドウ (EnumdesktopWindows) を調べます。

ただし、おそらくUACに問題があるでしょう。

于 2012-04-18T07:27:30.400 に答える