Windows XP、VC++6.0で開発しております。
現在、PCにUSBカードリーダーを接続すると
処理を行う常駐プログラムを作成しております。
Windows XPでは一台のPCで多数のユーザーがログオン
状態可となります。多数のユーザーがログオン状態&この常駐
プログラムを起動している場合、PCにUSBカードリーダーを接続すると
アクティブ状態以外のユーザーまでもの常駐プログラムが
PCにUSBカードリーダーが接続されたと認識して処理を行ってしまうのです。
本来ならばアクティブユーザーのみの常駐プログラムが
処理を行ってほしいのですが・・・。
何かユーザー状態の見分け方など良い方法がありましたら教えてください。
お願い致します。
ユーザー切換が行われてDISCONNECTされた際にフラグを立て、
RECONNECTされた際にフラグを寝かせ、フラグが立っているときは
処理をしない、というのはどうですか?
いもちぃさんご返答ありがとうございます。質問なのですが、ユーザー切換が行われた
際に飛んでくるメッセージでフラグの上げ下げを考えているのですが、ユーザー切り替
えで飛んでくるメッセージが見当たりません。ご存知でしたら教えてください。お願い
します。
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/shellcc/platform/Shell/programmersguide/shell_new/fastuserswitching.asp
ここの
Registering for Session Switching Notification
に、丁寧に書いてあります。
いもちぃさんへ
センションの切り替えで飛んでくるメッセージ(WM_WTSSESSION_CHANGE)は分かったの
ですが、ユーザーがアクティブ、ディレクティブ状態に関わらずセッションの切り替え
があるたびにこのメッセージが飛んできて困ってます。アクティブユーザーの時だけこ
のメッセージが飛んできてくれたらフラグを設けてこの問題は回避できるのです
が・・・。何かいい方法がありましたらご教授ください。
すいません。管理人の方のらららです。
(質問されている、らららさんではないです)
質問者の方、本当に申し訳ないですが
ハンドル名が、私とかぶってしまいますので
変えて頂けないでしょうか。
管理人と同じハンドル名だと混乱を招きそうなので
お願いします。
管理人のらららさんすいません。ハンドルネームをらららから
ボブに変えたいと思います。
管理人のらららさんだと思ってた! ( ̄□ ̄;
本題ですが、WM_WTSSESSION_CHANGEのwParamに、なんの要因で
メッセージが送られているか判別する番号が入ってきます。
詳しくはWM_WTSSESSION_CHANGEの説明をMSDNで見てください。
管理人のららら、いもちぃさんに誤解を招き、本当に申し訳ございませんでした。
本題なのですが、この問題は解決しました。
原因は通知ウィンドウを登録するWTSRegisterSessionNotification関数の第2引数で
NOTIFY_FOR_THIS_SESSIONと設定しなくてはならないところに
NOTIFY_FOR_ALL_SESSIONSと設定してました・・・。
これじゃあ他のユーザーのセンション切り替えもメッセージが飛んできますよ
ね・・・。
いもちぃさん長々とお付き合いいただきまして本当にありがとうございました。