procedure TRegMonitorThread.Execute;
begin
// 创建一个没有命名的事件对象,并返回该对象的句柄
FEvent := CreateEvent(nil, True, False, 'RegMonitorChange');
// 监视注册表里的变化,如有变化则让FEvent变成有信号
// 他是不是一直处于监视状态
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
// 检测进程是不是结束,如没结束则运行以下代码
while not Terminated do
// 检测Fevent是不是有信号.如果有,则运行以下代码
if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
begin
FChangeData.RootKey := RootKey;
FChangeData.Key := Key;
SendMessage(Wnd, WM_REGCHANGE, RootKey, Longint(PChar(Key)));
ResetEvent(FEvent);
// 如果上面的那个一直处于监视状态,那这个是不是多余的
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
end;
end;
帮我看看我的注释是不是对的.如果不对,请指出.谢谢!
begin
// 创建一个没有命名的事件对象,并返回该对象的句柄
FEvent := CreateEvent(nil, True, False, 'RegMonitorChange');
// 监视注册表里的变化,如有变化则让FEvent变成有信号
// 他是不是一直处于监视状态
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
// 检测进程是不是结束,如没结束则运行以下代码
while not Terminated do
// 检测Fevent是不是有信号.如果有,则运行以下代码
if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
begin
FChangeData.RootKey := RootKey;
FChangeData.Key := Key;
SendMessage(Wnd, WM_REGCHANGE, RootKey, Longint(PChar(Key)));
ResetEvent(FEvent);
// 如果上面的那个一直处于监视状态,那这个是不是多余的
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
end;
end;
帮我看看我的注释是不是对的.如果不对,请指出.谢谢!
解决方案 »
- 如何释放已终止进程的资源
- 为什么我在用Shellexecute打开网页时,却提示出错呢?
- 关闭程序的时候,TDataSet的BookMark需不需要FreeBookMark 200411
- DCOM连接系统的一个怪问题,数据无法提交?
- 在前台调用存储过程出错什么原因?
- 关于mdi主窗口背景显示的问题,100分及时结帐!
- 大家都用ADO吗?还有很多关于ADO和三层结构的问题。
- 用delphi做组件是如何和asp进行交互的呢?(能给段简单的代码看看么?)
- 求购delphi6开发人员指南
- 大学以下学历的程序员进来报个到!
- DELPHI7中,没有clientsocket和 serversocket?在哪了呢?
- 不知大家遇过这样的没有?
FEvent := CreateEvent(nil, True, False, 'RegMonitorChange');
貌似这个事件你命名了吧..
begin
FEvent := CreateEvent(nil, True, False, nil);
while not Terminated do
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
begin
FChangeData.RootKey := RootKey;
FChangeData.Key := Key;
SendMessage(Wnd, WM_REGCHANGE, RootKey, Longint(PChar(Key)));
ResetEvent(FEvent);
end;
end;我把上面的代码改成了这样改了二个东西:
1.把 FEvent := CreateEvent(nil, True, False, 'RegMonitorChange');后面创建的一个事件对像改成了nil
2.把RegNotifyChangeKeyValue移到了not Terminated的里面。把下面的一个RegNotifyChangeKeyValue给删了这里面我有二个问题:
1.就是createevent这个函数里面的创建一个事件对像名,我改成了nil。我想知道这个对像名到底有什么用。
2.改成这样是对还是错。
如果这个名字的Event对象已经存在,你用CreateEvent创建事件对象的时候,等于用OpenEvent打开了一个已存在的事件对象.
单独的进程使用.用nil就可以了。没有必要命名