FindFirstChangeNotification 函数查询中文路径
时间: 2023-08-14 11:02:14 浏览: 107
在使用 `FindFirstChangeNotification` 函数查询中文路径时,需要使用宽字符类型的路径名。以下是一个简单的例子:
```c
#include <stdio.h>
#include <windows.h>
int wmain(void)
{
// 定义中文路径名
wchar_t path[] = L"D:\\中文文件夹\\";
// 创建监视器
HANDLE hMonitor = FindFirstChangeNotification(path, FALSE, FILE_NOTIFY_CHANGE_LAST_WRITE);
if (hMonitor == INVALID_HANDLE_VALUE)
{
wprintf(L"创建监视器失败,错误码:%d\n", GetLastError());
return 1;
}
// 等待监视器事件
wprintf(L"正在监视:%ls\n", path);
DWORD dwWait = WaitForSingleObject(hMonitor, INFINITE);
if (dwWait == WAIT_OBJECT_0)
{
wprintf(L"监视器事件已触发\n");
}
else
{
wprintf(L"等待监视器事件失败,错误码:%d\n", GetLastError());
}
// 关闭监视器
FindCloseChangeNotification(hMonitor);
return 0;
}
```
在定义中文路径名时,需要在路径名前添加 `L` 前缀,表示该字符串是宽字符类型。在调用 `FindFirstChangeNotification` 函数时,直接将宽字符类型的路径名作为函数参数即可。
需要注意的是,如果使用的是 ANSI 编码方式的路径名,则无法正确处理中文路径名。建议在 Windows 平台上使用宽字符类型的路径名。
阅读全文