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)

  • 相关阅读:
    linux性能监控三张图
    golang 之 defer(统计函数执行时间)
    golang之匿名函数
    php opcodes运行原理
    Mysql索引的类型
    字符串反转方法收集
    curl模拟请求常用参数
    windows10 使用gitblit搭建git服务器
    PHP程序员解决问题的能力
    mysql中union 查询
  • 原文地址:https://www.cnblogs.com/smallmuda/p/1396054.html
Copyright © 2011-2022 走看看