守护线程的具体代码:创建DLL文件
新建一个工程,选DLL Wizard 保存为usbdll,再新建单元文件,添加如下代码:
//守护线程
procedure ThreadProc;
begin
while true do //一直监视U盘锁进程
begin
//查找U盘锁窗体句柄
FindWnd:=FindWindow(nil,'U盘锁');
//如果没有查找到重新启动计算机
if FindWnd=0 then
ResetComput;
end;
end;
initialization
//创建守护线程
hThreadHandle:=CreateThread(nil, 0, @ThreadProc, nil, 0, dwThreadID);
finalization
if hThreadHandle <> 0 then
TerminateThread(hThreadHandle, 0);
最后建立U盘锁窗体的OnCreate事件处理过程:
procedure TForm1.FormCreate(Sender: TObject);
begin
//远程线程插入
AttachToProcess('Explorer.exe', extractfilepath(paramstr(0))+'usbdll.dll');
end;
本文例程中的其它功能请读者详见本文附带源代码。(略)
4 结语
本文例程不具有自动运行和隐藏窗体的功能,读者可使用写注册表和注册热键的方法实现不足的功能。
本文程序在Windows XP+Delphi 6.0下测试通过。其例程可普遍使用在学校计算机机房和办公计算机中。
参考文献
[1]飞思科技编著.Delphi下深入Windows核心编程.电子工业出版社.
[2]董富治.USB存储设备监控程序的开发.电脑编程技巧与维护.2008年第5期.
|