私がしたいこと:指定されたフォルダとすべてのサブフォルダのファイル内容の変更(WindowsではC++を使用)を監視します。私が試してみました何ファイル変更のフォルダとサブフォルダを監視しても変更が検出されない
:「:/ myfolderなどD」
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
void WatchFileChanges(char *dir) {
while (true)
{
HANDLE dwChangeHandles[1];
dwChangeHandles[0] = FindFirstChangeNotification(
dir, // directory to watch
FALSE, // do not watch subtree
FILE_NOTIFY_CHANGE_LAST_WRITE); // watch file name changes
auto res = WaitForSingleObject(dwChangeHandles, INFINITE);
switch (res)
{
case WAIT_OBJECT_0: std::cout << "changed" << std::endl; break;
case WAIT_TIMEOUT: std::cout << "time's up" << std::endl; break;
}
}
}
int main()
{
WatchFileChanges("D:/myfolder");
return 0;
}
を私は上記のコードを実行し、作る(および保存)してみてください、フォルダ内に置くファイルに変更されます。しかし、私のプログラムでは何も起こりません。メッセージは表示されず、「変更されました」と表示されます。
私は間違っていますか?
'bWatchSubtree:TRUE'を使用するとどうなりますか? – Dai
@Dai何も変わりません。それでも私は何の変更も受け入れません。 – Juddy
多くのプログラムは決してファイルを変更しません。テキストエディタは決してそうではありません。それはあまりにも危険です。ファイルの名前を変更するには、FILE_NOTIFY_CHANGE_FILE_NAMEをインクルードする必要があります。 –