レジストリが変更されたことを知るには?


taketaka  2002-10-15 16:11:01  No: 50451  IP: [192.*.*.*]

はじめまして。
こちらで提供されているScan98のように、レジストリの内容が変更された場合に変更内容(変更されたレジストリキー)をユーザーに知らせるような機能を、組み込みたいと思っています。
RegNotifyChangeKeyValue(API)に辿り着き、いろいろ調べているのですが、どうも使い方がわかりません。
その辺りのソースは公開されていないでしょうか?

編集 削除
YuO  2002-10-16 16:29:04  No: 50452  IP: [192.*.*.*]

RegNotifyChangeKeyValueのオンラインのヘルプは見ましたか?
http://msdn.microsoft.com/library/en-us/sysinfo/base/regnotifychangekeyvalue.asp
ここにサンプルが載っていますが。

編集 削除
None  2002-10-17 00:27:14  No: 50453  IP: [192.*.*.*]

RegNotifyChangeKeyValue()APIを使うとプロセスがシグナル状態になってしまうので、スレッドを使ってレジストリを監視する方法が良いかと思います。

編集 削除
YuO  2002-10-17 01:03:03  No: 50454  IP: [192.*.*.*]

> RegNotifyChangeKeyValue()APIを使うとプロセスがシグナル状態になってしまうので、

ほへ?
プロセスがシグナル状態になることはないですよ。
プロセスがシグナル状態になるのは,プロセスが終了した後です。

編集 削除
None  2002-10-17 23:55:29  No: 50455  IP: [192.*.*.*]

>プロセス (process) 
 プライベート仮想アドレス空間、 コード、 データ、 およびこれら以外のオペレーティング システム リソース から構成される、 実行中のアプリケーション。
>シグナル状態 (signaled) 
 「待機関数」で同期をとるために使われるオブジェクトが持つ、 2つの状態 (シグナル、 非シグナル) のうちの1つ。
>待機関数 (wait function)
  待機操作の条件が満たされるまで呼び出し側スレッドの実行をブロックする関数。

ちょっときついですね。・・・。
「イベントが待機状態になる」といったほうがよかったのですかね。
また、違ったらごめんなさい。

編集 削除
YuO  2002-10-18 00:39:27  No: 50456  IP: [192.*.*.*]

WaitForSingleObjectを第二引数を0にして呼び出すと,状態をチェックすることができます。
#自動リセットイベントの場合,イベントが非シグナル状態になりますが。
それを利用してポーリングするように組めば,スレッドが待機状態になることはないです。

で,WM_TIMERあたりと組み合わせると,
スレッド使わなくてもなんとかなったりします。


> 「イベントが待機状態になる」といったほうがよかったのですかね。

待機状態になるのはWaitForSingleObjectなどの待機関数を呼び出した「スレッド」です。

編集 削除