VC++ でサービスを作成しました。ここのチュートリアルに従いました。現在、最上位ウィンドウを持つ通常のアプリケーションのように、DBT_DEVICEEARRIVAL、DBT_DEVICEREMOVECOMPLETE、WM_COPYDATA などのメッセージを受信する方法を見つけようとしています。それを検索すると、このMSDNの記事に出くわしました
「メッセージのブロードキャスト」セクションの最後の段落:
アプリケーションは、最上位ウィンドウのウィンドウ プロシージャを介してメッセージを受け取ります。メッセージは子ウィンドウに送信されません。サービスは、ウィンドウ プロシージャまたはそのサービス コントロール ハンドラを介してメッセージを受信できます。
しかし、それを行う方法の例を見つけることはほとんど不可能です.
メッセージを受信できるように、WndProc をサービスに関連付けるにはどうすればよいですか?
または、Windows メッセージを受信するようにサービス コントロール ハンドラー関数を作成するにはどうすればよいですか? 私のサービス コントロール ハンドラには、WndProc の UINT、WPARAM、LPARAM などではなく、DWORD パラメータが 1 つしかありません。
1) 非表示ウィンドウの使用、2) メッセージのみのウィンドウなどについて読みましたが、サービスで使用できるとは思いません。したくない。MSDN が言及している 2 つの方法のいずれかでそれを達成できれば幸いです。
サービスの説明:
このサービスは、USB デバイスの挿入を検出し、いくつかのファイルを USB デバイスにコピーします。また、いくつかのディレクトリとファイルへの変更を追跡して、どれをコピーするかを把握する必要があります。
この基本機能は、将来、他のものを含むように拡張される可能性があります。そのため、現在認識していない他の多くの Windows メッセージを受信できるようにする必要があるかもしれません。
上記のメッセージの例は、通常の Windows アプリを開発するときに私が慣れ親しんだものから取ったものです。サービスを作成するときに、それらが適切でないか安全でないかを理解しています。