• ベストアンサー

フォルダ内の更新を監視する

こんにちは、honiyonです。  Windowsについて質問です。  Explorerであるフォルダを表示しておいた場合に、フォルダ内にファイルの作成・削除等の変更があると自動的に再表示されます。  これはどのような仕組みになっているのでしょうか?  もしかして数秒単位でスキャンを行っているだけ?  任意のフォルダ内の変更を検知するプログラムを作りたいと考えています。  何か数秒単位でスキャンより効率の良い方法は無いかと考えているのですが...  宜しくお願いします(..  

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.2

書き間違い。 FindNextChangeNotification(hNotification); ↓ FindNextChangeNotification(hNotification[1]);

honiyon
質問者

お礼

こんにちは、honiyonです。  ご回答ありがとうございます。  各APIを調べて早速実験&成功しました(^^)  ありがとうございました(..

その他の回答 (1)

noname#30727
noname#30727
回答No.1

かなり適当に書きますが、やりたい事はわかってもらえると思います。 ---- メイン側 ---- HANDLE hNotification[3]; void Start() { hNotification[0] = CreateEvent(NULL, TRUE, FALSE, NULL); hNotification[1] = FindFirstChangeNotification(... hNotification[2] = CreateThread(... } void Stop() { SetEvent(hNotification[0]); WaitForSingleObject(hNotification[2]); FindCloseChangeNotification(hNotification[1]); CloseHandle(hNotification[0]); CloseHandle(hNotification[2]); } ---- 通知取得スレッド ---- for(;;) { switch (WaitForMultipleObjects(2, hNotification, FALSE, INFINITE)) { case WAIT_OBJECT_0: // 終了イベント ExitThread(0); case WAIT_OBJECT_0 + 1: // 通知イベント <何らかの方法でメイン側に通知する>; FindNextChangeNotification(hNotification); } }

関連するQ&A

  • フォルダの共有

    こんにちは。Win98に関する質問です。 ワークグループでフォルダを共有したいのですが 任意のフォルダを右クリックしても   ・開く   ・エクスプローラ   ・検索   ・個別に書庫を作成   ・書庫を作成   ・ウィルススキャン   ・送る   ・切り取り   ・コピー   ・ショートカットの作成   ・削除   ・名前の変更   ・プロパティ というメニューのみで   ・共有 が出てきません。 ネットワークのプロパティでは プリンタとファイルの共有ができるようにしてあります。 どのようにすれば、共有フォルダを作れますか? よろしくお願いします。

  • エクスプローラーの最初のフォルダ

    エクスプローラーを開くと、マイドキュメントを開きますが、 これを任意のフォルダーに変更するにはどうしたらいいですか?

  • フォルダを開いて、閉じるのプログラムを教えてください

    はじめまして。プログラムがあまり分からないのですが書き込みさせていただいています。 Windows2000 Serverのサーバーで、 ある特定のフォルダを”開くー数秒そのままー閉じる”という処理を自動で行いたいのです。 どなたかこのような処理をするコマンド(プログラム)ご存知でしょうか。 ”開く”というコマンドは、 explorer "C:\xxxx\yyy start c:\xxxx と、いくつかあるようですが、指定のフォルダを閉じるコマンドがわかりません。 下記にも同様の質問があるのですが、指定のフォルダを閉じるという結果が得られていなかったので、書き込みさせていただいています。 http://oshiete1.goo.ne.jp/qa4024982.html ご協力お願いします。

  • フォルダを隠したい

    ローカルディスク及び MOなどにある任意のフォルダのみを 隠し表示できるソフトをさがしています。 エクスプローラからでは隠し表示したくないファイルまで みえなくなるため不便なのです。

  • マイピクチャーのフォルダー表示が古いのですが更新は?

    XPのSP2です。エクスプローラーで見るときマイピクチャーを縮小版表示にしています。フォルダーアイコンは そのフォルダー内の4つの画像の絵ですが、すでに削除した古い写真がその4つの中に含まれています。つまり表示が古いのですが更新はどうしたら?右クリック>最新の… ではだめなようです。よろしくおねがいします。

  • 特定のフォルダを更新毎に自動的にバックアップしたい

    特定のフォルダを更新毎に自動的にバックアップしたい Windows7 Home Premium を事務所で使っているのですが、任意の特定のフォルダを、別の任意の特定のフォルダに自動的に(=更新がある度に)バックアップしたいのです。 希望としては、以下のような環境です(数値などは例です)。 ---------- バックアップ元:C:\Users\Admin\Documents バックアップ先:D:\Backup バックアップ元のフォルダ内が更新されれば、その都度バックアップ元ファイルに自動的にコピーが作成されるようにしたい。  ※できることなら、さらに、  BU元で更新(変更)したファイルも、BU先に上書きコピーではなく別ファイルとして、  また、BU元で削除したファイルは、BU先からは削除しない。 ---------- といった設定ができれば良いです(変更・削除前のファイルも、何らかの形で残っていればよいです)。 できれば、ソフトを使わずに、Windows自体の機能や設定でできないものかと思っていますが、 ソフトを使う方法でも構いません。 LANを構築しているので(PCは10台程度)、BU元とBU先のPCが異なっても構いません(ただ、その場合のBU先PCのOSは、WindowsVistaです)。 現在は、Dropboxを利用して、特定のフォルダをバックアップしています。 Dropboxだと、BU元でファイルを更新(変更)・削除しても、更新・削除前のファイルもバックアップされていて後からそれを復元することができ、上記のことがほぼ実現できているのですが、 無料環境だと10件以上前の更新ファイルを表示させるのに時間がかかったり(というより、ローディング状態が続くだけで、ほとんどの場合見れない)、一般のネットワーク経由なので時間がかかりすぎてしまう面で、困っています。 以上のことを実現できる、何かよい方法はありませんでしょうか。 よろしくお願いします。

  • フォルダー名の変更、削除、移動が出来ない

    ホームエディションです 共有フォルダー内にある とあるフォルダーですが(任意に作成したもの) 変更、移動、削除が出来なくなりました 「あるプログラムで使用の可能性がある・・・」という ダイアログが出ます 思い当たる事をお願いします

  • フォルダの名前やアイコンの表示・更新が遅い!!

    フォルダの名前やアイコンの表示・更新が遅い!! 今年の4月あたりに新しいノートPCを購入しました。細かい点かもしれないですが、使ってみて気になる点があります。 まず、ウィンドウズのスタートボタンを押すと「すべてのプログラム」→いろいろなプログラムやフォルダの絵の一覧が表示されますが、その中のどれかフォルダをクリックしますと、フォルダの中身がさらに一覧の表示で出てくるじゃないですか? その一覧の表示が遅いんです。 すべてのアイコンの絵がパッと出てくるのではなく、2,3秒のタイムラグがあり、それぞれのアイコンがばらばらのタイミングで表示されます。絵が表示されるまでの間は、白いアイコンになってます。 私が前まで使っていたPCは一覧を展開していっても表示のタイムラグはほとんどなく、一瞬で表示されていました。 2点目は、マイドキュメント等のエクスプローラーのなかのフォルダやファイルを削除したり、名前を変更すると、すぐには更新されず1分くらい後にやっと最新の状態になるという問題もしょっちゅう起こります。この場合、手動で右クリック→更新をすると最新の状態になります。 こんなもん気にしなければいいだけかもしれないですが、最近買ったばかりのPCであること、まだそんなにソフトをインストールしていないこと、ウィルス等の可能性もほとんどないこと、スペック的が不足しているとも考えづらいということから、初期不良を心配してます。もしかしたらメモリの不良?!かと思ってたりするんですけど、どうなんでしょうか。 それとも64bitだから不安定なんでしょうか。 あんまり、OSの再インストはやりたくないので、それ以外でなにか対処方法があれば教えていただきたいと思います。 また、似たような経験をしている方の知恵や考えられる原因の考察もお待ちしております。 古いPCだったらどーでもいいんですけど、まだ保証修理できる期間なので・・。 lenovo G560 windows7 64bit メモリ:2G CPU:core i3 グラフィックメモリはオンボードのようです わかりにくい文ですみませんが、よろしくお願いします。

  • フォルダの削除

    RemoveDirectory(DirPath)を使ってフォルダの削除を行ないたいのですが、   ・C:\Documents and Settings\All Users\スタート メニュー\プログラム内のゲームフォルダ   ・任意にフォルダを作成し、プロパティでアイコンを変更したフォルダ が削除出来ません。 何かほかの方法はないのでしょうか? SHFileOperationも使ってはみたのですが... 環境は以下の通りです。 WindowsXP VisualC++V6 SP 以上、よろしくお願いします。

  • 色々なフォルダ、アプリケーションを開くまで時間が掛かる

    パソコンを起動した直後なのに、フォルダを開いたり、IEを起動するのにかなりの時間が掛かります。 IEでは40秒程経つと漸く起動、Outlook Expressは80秒、受信したメールを開くまで40秒、その他のフォルダは20秒~30秒掛かります。 ダブルクリック後、砂時計が数秒出た後消え、数十秒後に漸く起動し始めます。その間HDDへのアクセスランプは灯らないので何をしているのかも分かりませんし、駐留しているプログラムもありません。 それと、MS-DOSモードでスキャンディスクを行なったにも関わらず起動後に何故か 「不正な処理を行ないました。プログラムの製造元に....」が出ます。 OKを押してもメッセージが消えるだけで特に何も起きません。 Spybotでスパイウェアは削除しましたが、一向に直りませんので対処法を教えて下さい。