背景:
应用程序的配置文件被其它程序修改后,
应用程序需要根据修改重新读取配置信息,
因为不能重启该应用程序,
故只能在配置文件更新后重新读入该文件。问题:
应用程序如何得知文件被修改?(类似windows文件保护功能)要求:不使用定时检测,因为定时周期不好设定,太短影响影性能,且无意义(谁闲着没事老是改配置文件呀)。太长不利于及时更新。
应用程序的配置文件被其它程序修改后,
应用程序需要根据修改重新读取配置信息,
因为不能重启该应用程序,
故只能在配置文件更新后重新读入该文件。问题:
应用程序如何得知文件被修改?(类似windows文件保护功能)要求:不使用定时检测,因为定时周期不好设定,太短影响影性能,且无意义(谁闲着没事老是改配置文件呀)。太长不利于及时更新。
解决方案 »
- 请问WINPCAP开发必须用UNICODE环境吗?求帮忙急
- 关于创建文本的问题
- 分用光了,好心人回答,如何录系统当前播放的声音,谢谢!
- 请问:如何在对话框中做一个自适应大小的控件来显示很大的DIB位图
- 请问如何实现虚拟打印机?
- 我的困惑__路在何方_迷茫
- 好消息:8块钱买了本108块的书!块去啊!!!http://www.china-pub.com/temporary/tejia_book/tejiabook.asp
- 小弟3000分求助修复硬盘!
- 关于桌面路径的问题,谢谢
- VC编写的控件不能被vb引用,送分200!!!
- 侯俊杰的《深入浅出 MFC》,大家觉得这本书怎么样?
- 装了QQ最新版后,程序会莫名载入一个QQ的网页搜索动态库,出错!
更改配置文件的程序很多,任何文本编辑工具都可以修改。例如:Notepad、 UtralEdit、WinHex,
Edit ...
if( dwChangeHandle != INVALID_HANDLE_VALUE )
{
for( ; ; )
{
DWORD dwWaitStatus = ::WaitForSingleObject( dwChangeHandle, 1000 );
if( dwWaitStatus == WAIT_TIMEOUT )
{
if(bWaitingForExit)
{
FindCloseChangeNotification( dwChangeHandle );
break;
}
}
else if( dwWaitStatus == WAIT_OBJECT_0 ) // file changed
{
::PostMessage( hMainWnd, WM_FILECHAGNE_NOTIFY, 0, 0 );
if( !FindNextChangeNotification( dwChangeHandle ) )
{
FindCloseChangeNotification( dwChangeHandle );
break;
}
}
else // error
{
FindCloseChangeNotification( dwChangeHandle );
break;
}
}
}
非常感谢!
虽然,还是有设定间隔时间的问题,但目前确实是一种不错的方法。