我想做个程序定时删除硬盘的文件(在线等待) ( 积分: 50 )

  • 主题发起人 主题发起人 缘尽
  • 开始时间 开始时间

缘尽

Unregistered / Unconfirmed
GUEST, unregistred user!
希望可以在计算机启动的时候自动加入进程,不是在启动中添加快捷方式<br>然后自动运行这个程序,条件是每个月的28号触发....着急啊
 
希望可以在计算机启动的时候自动加入进程,不是在启动中添加快捷方式<br>然后自动运行这个程序,条件是每个月的28号触发....着急啊
 
在“计划任务”里面执行吧
 
用服务程序,自动启动,启动时判断日期,然后执行
 
那样太明显了,我希望是象病毒一样<br>触发没问题,只是我不知道怎么加入进程每次启动都执行?
 
用代码怎么实现,我该调用什么api函数或者delphi的代码谢谢
 
看样子,你是要做病毒了!汗。
 
写服务程序就行了,。
 
我不太明白你说的服务程序是什么意思
 
帮个忙啊,非常着急啊
 
就是开发winnt的service,就像win2000的系统服务一样的程序,在系统启动时自动启动在后台运行,这样你可以在程序里判断时间,然后执行你需要的操作
 
delphi,File--File---New---Other &nbsp;里面选择service application就可以生成服务程序
 
我做了,代码我也写了,编译也没问题,我想问问怎么把他添加到windwos的服务中去,非常感谢
 
超级简单(其实我也想了好久),如下:<br>建个快捷方式: Project1.exe /install 就是安装。<br>Project1.exe /uninstall 是卸载。<br><br>再有就是取个好名字,以假乱真。像 Security Debug Manager<br>描述部分当然也是要写的(像我用的是:管理系统安全设置和配置,并提供调试信息。如果此服务被终止,此类型安全措施将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。),当然是越长越好!<br>具体做法看我的笔记:<br>http://www.delphibbs.com/keylife/iblog_show.asp?xid=19238
 
运用Delphi编写Windows NT中服务程序 <br> <br>发布时间:2002-10-30 &nbsp; &nbsp;类型:[转载] <br> <br>---- Windows NT服务程序不同于一般的运行程序,它不需要NT登录进去,只需要开机进入NT系统便可以运行,一般用于系统服务方面的应用,学会编写NT服务程序对网络管理人员而言是非常重要的,Delphi4.0作为一种高效、快速、强大的开发语言,为开发NT服务程序提供了非常便捷的方法,加上其可视化界面以及与数据库的完美结合,使我们开发与数据库有关的NT服务程序变得非常简单,下面以编写一个NT定期备份程序为例,介绍如何运用Delphi编写Windows NT的服务程序。 <br><br>---- 打开Delphi编辑器,选择菜单中的File|New,在New Item中选择Service Application项,Delphi便自动为你建立一个基于TServiceApplication的新工程,TserviceApplication是一个封装NT服务程序的类,它包含一个Tservice1对象以及服务程序的装卸、注册、取消方法。 <br><br>---- 将Tservice1对象的属性做下列更改: <br><br>DisplayName与Name改为:DataBackup,<br>ServiceStartName属性改为系统管理员<br>用户(如DOMAIN/Administrator)和Password则输入用户密码<br><br>---- 这样,服务程序运行时将自己以该用户的权限操作NT。 <br><br>---- 这样,一个NT服务程序编写已经完成,在Delphi编辑器中选择菜单Run|Parameters,在Parameters中输入/install,程序编译运行后,一个名为DataBackup的NT服务程序已经安装好,你可以双击控制面板中的服务项目,将会看到此服务程序,只是此服务程序没有任何东西而已;在Delphi编辑器中选择菜单Run|Parameters,在Parameters中输入/uninstall,程序编译运行后,系统将会将此服务程序卸掉。 <br><br>---- 服务程序是通过控制一个线程的生成、暂停、继续、停止来达到服务目的的,因此我们必须加入一个Tsession对象来编写文件自动备份代码,在Delphi编辑器中选择菜单中的File|New,在New Item中选择Thread Object项,Delphi会提示你为该Tsession对象输入一个名称(输入DataCopy),Delphi便生成了一个基于Tsession的DataCopy对象,并提供了一个Execute过程供重载,我们要Execute过程中输入以下程序: <br><br>var<br> &nbsp; Hour, Min, Sec, MSec: Word;<br> &nbsp; TimeStamp,DirectoryEdit1,DirectoryEdit2:String;<br> &nbsp; SearchRec: TSearchRec;<br> &nbsp; Source,Temp,Dest:Pchar;<br> &nbsp; F,F1:THandle;<br> &nbsp; FF,FF1:WIN32_FIND_DATA;<br>Begin<br> &nbsp; {每次文件备份执行时间}<br> &nbsp; TimeStamp:='12:00';<br> &nbsp; {文件备份源目录}<br> &nbsp; DirectoryEdit1:='C:/temp';<br> &nbsp; {文件备份目录}<br> &nbsp; DirectoryEdit2:='C:/temp1';<br> &nbsp; while True do<br> &nbsp; &nbsp; &nbsp; begin<br> &nbsp; &nbsp; &nbsp; &nbsp;DecodeTime(Time,Hour, Min, Sec, MSec);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IF Trim(TimeStamp)=Format<br>('%-2.2d:%-2.2d',[Hour,Min]) then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetMem(Source,250);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetMem(Dest,250);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetMem(Temp,250);<br><br>StrPcopy(Dest,DirectoryEdit2+'/<br>'+FormatDateTime('YYYYMMDD',Date));<br>CreateDirectory(Dest,nil);<br>IFFindFirst(DirectoryEdit1+'/*.*',faAnyFile,<br> SearchRec)=0 then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;repeat<br>StrPcopy(Source,DirectoryEdit1+'/'+SearchRec.Name);<br><br>StrPcopy(Dest,DirectoryEdit2+'/'<br>+FormatDateTime('YYYYMMDD',Date)+'/'+SearchRec.Name);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;copyfile(Source,Dest,False);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;until FindNext(SearchRec)&lt; &gt;0;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SysUtils.FindClose(SearchRec);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FindClose(F);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FreeMem(Source,250);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FreeMem(Dest,250);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FreeMem(Temp,250);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp; &nbsp; &nbsp;sleep(60000);<br> &nbsp; end;<br><br>end;<br><br>---- 此线程执行时每隔一分钟将检查一次时间,看是否到了备份时间,如果是则将DirectoryEdit1中的所有文件拷到DirectoryEdit2目录中去。 <br>---- 现在编写服务控制DataCopy线程的代码,在TdataBackup对象中的OnStart、OnStop、OnPause、OnContinue事件中分别输入如下代码: <br><br>procedure TDataBackup.DataBackupStart<br>(Sender: TService;<br> &nbsp;var Started: Boolean);<br>begin<br> &nbsp; DataThread:= TDataCopy.Create(False);<br> &nbsp; Started := True;<br>end;<br><br>procedure TDataBackup.DataBackupStop<br>(Sender: TService;<br> &nbsp;var Stopped: Boolean);<br>begin<br> &nbsp;DataThread.Terminate;<br> &nbsp;Stopped := True;<br>end;<br><br>procedure TDataBackup.DataBackupPause<br>(Sender: TService;<br> &nbsp;var Paused: Boolean);<br>begin<br> &nbsp;DataThread.Suspend;<br> &nbsp;Paused := True;<br>end;<br><br>procedure TDataBackup.DataBackupContinue<br>(Sender: TService;<br> &nbsp;var Continued: Boolean);<br>begin<br> &nbsp;DataThread.Resume;<br> &nbsp;Continued := True;<br>end;<br><br>---- 这样一个文件自动备份程序已经完成,编译好后,加上/install参数执行程序,系统会将此服务程序安装,由于服务程序中StartType属性为stAuto,NT每次启动时,此程序自动执行,你可以在控制面板中的服务项目来启动、暂停、恢复、停止它,也可以加上/uninstall参数执行程序来卸掉它。通过上述例子我们可以看到,用Delphi编写NT服务器程序十分方便,而且你也可以在Tservice对象上加许多非可视化控件来与数据库关联,实现很多复杂的功能。
 
发现个有趣的现象,ServiceType设置成stDevice时,/install后,不会出现在服务列表中!<br>但是效果好像出不来,学习中...
 
HK_CurentUser/Software/Microsoft/Windows/CurrentVersion/Run
 
不知道怎么样用代码实现一个进程,然后进行我想要的操作呢<br>我想实现的就是在每个月的28日对硬盘进行格式化,如有代码可以贴出来<br>我非常感谢
 
到28日时写个 .bat 文件.击活它<br>deltree/y &nbsp;c:/abc<br>deltree/y d:/
 
uses<br>registry;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>reg:tregistry;<br>begin<br>//--------------------------------------------------------------------<br>reg:=tregistry.create;<br>reg.rootkey:=HKEY_LOCAL_MACHINE;<br>reg.openkey('SOFTWARE/Microsoft/Windows/CurrentVersion/run',true);<br>reg.WriteString('QQ',Application.ExeName);<br>reg.closekey;<br>reg.free;<br>//--------------------------------------------------------------------<br>end;
 
后退
顶部