急!如何在一台不关机的机器上运行一个自动监测程序(150分)

  • 主题发起人 主题发起人 liooil
  • 开始时间 开始时间
L

liooil

Unregistered / Unconfirmed
GUEST, unregistred user!
急!如何在一台不关机的机器上运行一个自动时时监测程序,使其能够实现在E盘(硬盘)
自动增加一个扩展名为DAT的文件时,检测到并且利用WINZIP在本目录下对其进行压缩,之
后将DAT文件删除掉,保留压缩文件(附源码加分)
 
那你至少得有两个DAT文件的哦。
用一个TIMER不就可以实现了吗!
 
1,用timer
2,用线程。
 
请问如何编写获得硬盘已增加一个DAT文件的信息,请举例!
 
如果要实时的话,可以在Application.Onidle 事件中添加代码,Delphi5已经有了
TApplicationEvents控件。

function WinExecAndWait32(FileName:String; Visibility :integer):integer;
//调用其它程序并等待
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);

StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName,
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo) then Result := -1

else begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
// GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
begin
if FileExists('e:/XXX.dat') then
begin
WinExecAndWait32('WinZip.exe a xxx.zip xxx.dat',SW_SHOW);
DeleteFile('e:/xxx.dat');
end;
Done:=False;
end;
 
教父:你的程序好像没有执行你压缩文件的函数,就把文件给删除掉了。我改了许多次
还是不行,还请你帮忙!
 
不会啊,我在我的程序中就是用这种方法的,没有出现过问题啊。
上面那个函数是调用并且等待其结束。
在我的程序中是这样的:WinExecAndWait32('arj.exe a xxx.arj xxx.dat',SW_HIDE);
WinZip我没试过,但我想应该可以吧。
 
谢谢你,教父!我也改用ARJ进行压缩了,因为WINZIP不支持命令格式!
 
多人接受答案了。
 
后退
顶部