HANDLE hDir = NULL;
HANDLE hThread = NULL;
bool bStop = false;
bool bExit = false;
char Buff[1024];
OVERLAPPED ov;
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
DWORD Read = 0;
memset(&ov, 0, sizeof(ov));
= CreateEvent(NULL, false, NULL, NULL);
while (!bStop)
{
if (!ReadDirectoryChangesW(hDir,
Buff,
1024,
false,
FILE_NOTIFY_CHANGE_FILE_NAME,
&Read,
&ov,
NULL))
{
break;
}
if (WaitForSingleObject(, INFINITE) == WAIT_OBJECT_0 )
{
if (!bStop)
{
ShowMessage( "Change ");
}
}
}
CloseHandle();
bExit = true;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hDir = CreateFile( "c:\\xxx ", //文件目录
FILE_LIST_DIRECTORY,
FILE_SHARE_READ |FILE_SHARE_WRITE |FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS |FILE_FLAG_OVERLAPPED,
NULL);
if (hDir == INVALID_HANDLE_VALUE )
{
return;
}
hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0 , NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
bStop = true;
SetEvent(); //使可以退出
while (!bExit)
{
Application-> ProcessMessages();
Sleep(100);
}
CloseHandle(hThread);
CloseHandle(hDir);
}