[リストへもどる]
一括表示

投稿時間:2003/10/27(Mon) 21:02
投稿者名:イエロー
Eメール:
URL :
タイトル:
ディレクトリの監視
お力をお貸し下さい。

実は、VB6.0を使用し、共有のディレクトリを監視し、ファイルが置かれたら、
自分のローカルフォルダにコピーするツールを作成しています。
その大まかな処理を以下に書きます。

------処理の流れ---------

[監視実行]、[監視中止]ボタンがあり、[監視実行]ボタンを押すと以下の処理
をします。

監視するフォルダを指定し、ハンドルを返します。
TargetDirには、"\\(コンピュータ名)\(監視ディレクトリ)\"を入れています。
hand = FindFirstChangeNotification(TargetDir, False, FILE_NOTIFY_CHANGE_FILE_NAME)

  ↓

2秒間待ちます。
ret = WaitForSingleObject(hand, 2000) (※)

  ↓

WaitForSingleObjectの戻り値が、WAIT_OBJECT_0と等しい場合、監視している
ディレクトリの自分のローカルフォルダに、ファイルをコピーし、以下を実行
し、※に戻ります。
ret = FindNextChangeNotification(hand)

  ↓

[監視中止]ボタンが押されたら以下を実行し、終了します。
FindCloseChangeNotification(hand)

-------------------------

このプログラムを実行すると、自分のマシンから共有フォルダに対し、ファイ
ルを置いた場合は、※部分でWAIT_Object_0が返ってくるので、監視している
ディレクトリのファイルを、ローカルマシンにコピーすることができるのです
が、共有側のマシンで、共有しているフォルダ(監視しているフォルダ)にフ
ァイルを置くと、ファイルが追加されているにも関わらず、※部分でWAIT_Obj
ect_0が返ってこないので、ローカルマシンにコピーする事ができません。

どうして自分のマシンからアクションを起こした時にはファイルをコピーでき
るのに、外部からのアクションに対し、コピーができないのかがわかりません。

皆様のお力をお貸し下さい。
返信宜しくお願い致します。

投稿時間:2003/10/28(Tue) 14:05
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: ディレクトリの監視
> どうして自分のマシンからアクションを起こした時にはファイルをコピーでき
> るのに、外部からのアクションに対し、コピーができないのかがわかりません。

このあたりとか。
http://support.microsoft.com/default.aspx?scid=kb;ja;188321

投稿時間:2003/10/28(Tue) 15:17
投稿者名:イエロー
Eメール:
URL :
タイトル:
Re^2: ディレクトリの監視

魔界の仮面弁士様、回答ありがとうございます。

> > どうして自分のマシンからアクションを起こした時にはファイルをコピーでき
> > るのに、外部からのアクションに対し、コピーができないのかがわかりません。
>
> このあたりとか。
> http://support.microsoft.com/default.aspx?scid=kb;ja;188321

↑の感じだと、共有フォルダを監視する場合、FindFirst
ChangeNotificationのAPIを使用しない方がいいのでし
ょうか?

一応デバッグモードで確認した結果、ハンドル自体はとれ
ているのですが…。

そうすると、共有ファイルの内容が更新された場合は、毎
回毎回フォルダ内を見て、新しいファイルがあるかどうか
を判断して、処理するみたいな感じにしなければいけない
(監視するAPIを使用しない)のでしょうか…。

すみませんが、回答を宜しくお願いします。