执行后,改同目录下的A.exe扩展名为A.dll,同时改目录下的A.dll扩展名为A.exe,即互换同目录下A.dll和A.exe的扩展名,然后查进程里有无B.exe,若有,则对话框"需重启B程序方有效",用户"确定"后杀掉内存中B.exe进程,并重启B程序。

解决方案 »

  1.   

    RenameFile 改名改名时可能需要中转一下,如:A.exe-->A_.dll  A.dll-->A.exe   A_.dll-->A.exe
    function IsProcessRunning(const ProcessName: string): THandle;  //查找进程
    const
      PROCESS_TERMINATE = $0001;
    var
      ContinueLoop: BOOL;
      FSnapShotHandle: THandle;
      FProcessEntry32: TProcessEntry32;
    begin
      Result := 0;
      FSnapShotHandle := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0);
      FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
      ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
      while WordBool(ContinueLoop) do
      begin
        if AnsiPos(LowerCase(ProcessName), LowerCase(FProcessEntry32.szExeFile)) > 0 then
        begin
          Result:= FProcessEntry32.th32ProcessID;
          Break;
        end;
        ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
      end;
      CloseHandle(FSnapshotHandle);
    end;