zoukankan      html  css  js  c++  java
  • 批处理自己更新自己

    class procedure TVTUpgrader.UpdateSelf(const FileName: TVTString);
    var
      LBatchFile: TextFile;
      LBatchFileName: TVTString;
      LProcessInfo: TProcessInformation;
      LStartUpInfo: TStartupInfo;
    begin
      //批处理文件名
      LBatchFileName := ExtractFilePath(ParamStr(0)) + '_deleteme.bat';

      //打开文件,设置覆盖模式
      AssignFile(LBatchFile, LBatchFileName);
      Rewrite(LBatchFile);

      //写入批处理内容
      Writeln(LBatchFile, ':try');
      Writeln(LBatchFile, 'del "' + ParamStr(0) + '"');
      Writeln(LBatchFile, 'if exist "' + ParamStr(0) + '"' + ' goto try');
      Writeln(LBatchFile, 'copy "' + FileName + '" "' + ParamStr(0) + '"');
      Writeln(LBatchFile, 'del "' + FileName + '"');
      Writeln(LBatchFile, 'del %0');

      //关闭文件
      CloseFile(LBatchFile);

      //创建新进程运行批处理文件
      FillChar(LStartUpInfo, SizeOf(LStartUpInfo), $00);
      LStartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
      LStartUpInfo.wShowWindow := SW_HIDE;
      if CreateProcess(nil, PChar(LBatchFileName), nil, nil, False,
        IDLE_PRIORITY_CLASS, nil, nil, LStartUpInfo, LProcessInfo) then
      begin
        CloseHandle(LProcessInfo.hThread);
        CloseHandle(LProcessInfo.hProcess);
      end;
    end;

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/mikemao/p/2207377.html
Copyright © 2011-2022 走看看