zoukankan      html  css  js  c++  java
  • 守护进程杀死自己的进程再重新启动自己

     

    全部源代码如下(无窗体结构,最后面有说明):
    program Project1;



    uses
    Winprocs,SysUtils,Tlhelp32;//注意添加单元文件



    function KillTask(ExeFileName:string):integer;//杀进程函数KillTask
    const
    PROCESS_TERMINATE = $0001;
    var
    ContinueLoop: BOOLean;
    FSnapshotHandle: THandle;
    FProcessEntry32: TProcessEntry32;
    begin
    Result :=0;
    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
    ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);



    while Integer(ContinueLoop) <> 0 do
    begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
    UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
    UpperCase(ExeFileName))) then
    Result := Integer(TerminateProcess(
    OpenProcess(PROCESS_TERMINATE,
    BOOL(0),
    FProcessEntry32.th32ProcessID),0));
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
    end;
    CloseHandle(FSnapshotHandle);
    end;



    //调用上面的函数KillTask
    begin
    //杀进程,停止程序
    KillTask('abc.exe');//调用函数,杀你的程序abc.exe
    //重新启动程序
    WinExec('abc.exe',SW_SHOW);//然后再重新启动abc.exe
    Exit;
    end.
    //=========================================

    //【说明】编译后的Project1.exe是一个无窗体的EXE程序
    //方法:创建一个CONSOLE application 把{$APPTYPE CONSOLE}删了,这个就是一个基本的应用程序框架,
    //不显示任何东西,再在里面写东东,程序很小。写在这里共享,怕日后在自己电脑里找不到^_^(笔记,2006.11.23)

  • 相关阅读:
    Windows编程系列:Windows中的消息
    python 日志 logging模块
    wx-xcx
    大坑:perspectiveTransform
    在移动硬盘上装系统
    Django
    双边滤波(Bilateral filter)
    Mesh Deformation with Laplacian Coordinates
    C++五十一篇 -- VS2017开发人员新闻无法联网
    idea 修改Git密码和账号后,Git提交账号的没有改变
  • 原文地址:https://www.cnblogs.com/smallmuda/p/1396054.html
Copyright © 2011-2022 走看看