亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? upgrader3.pas

?? AutoUpgraderPro是一個非常優秀的自動升級控件
?? PAS
字號:
{****************************************************************************
USAGE:
  Upgrader3.exe [exename] +[arguments][upgrade method ID]
  [exename] is original exe-file with full path (without quotes)
  [arguments] is command-line arguments required for restarting of main app
  [upgrade method ID] "0" or "1". If "1", then we should copy setup program
                      to the temporary folder and start it from there
                      skipping normal upgrade.
EXAMPLE:
  Upgrader3.exe c:\Program Files\My Company\My Program\Prog.exe +/restart1
-----------------------------------------------------------------------------
How does it works?
 1. Locate program directory by exe-name transmitted as command-line parameter
 1.1. Check whether the AutoUpgrader uses the external setup program (#method=1)
 1.2. Split the file name and parameters
 1.3. Split the file name and path
 2. Test whether an exe-file exists + get the filename with correct charcase
 3. Awaiting for termination of the main program
 4. Test whether newer (downloaded) exe-file exists
 5. Find all downloaded (.uTMP) files
 5.1. If this is executable AND newest exe still not found -- trying to
      use another suitable EXE. (This may happends if program was renamed
      by user, or local update should be done by external setup.)
 5.2. Rename .uTMP file to its normal name
 6. Re-execute main program (or setup file).
// new steps added in AutoUpgrader Pro v3.1.1
 7. IF the local update should be done by external setup THEN (else terminate)
 7.1. Wait until termination of setup program
 7.2. Delete the setup (we don't need it anymore after installation?)
 7.3. Restart the original main app
-----------------------------------------------------------------------------
(c) 2001, Utilmind Solutions (http://www.utilmind.com)
Built with Virtual Pascal v2.1 (http://www.vpascal.com)
NOTE: must be compiled to Win32 platform and linked as GUI application.
*****************************************************************************}
{$Optimise+}  // Optimisation enabled
{$SmartLink+} // Decrease executable size due to smart linking
{$Speed-}     // Optimisation for size (speed is not important)
{$AlignCode-} // Don't align code
{$AlignData-} // Don't align data
{$H+}         // Huge strings (PChar) allowed
{$X+}         // Extended syntax allowed (discard results of functions)
{$D-}         // Debug information disabled
{$S-}         // Stack overflow checking disabled
program Upgrader3;

uses Windows;

var
  I: Integer;
  ExeFound: Boolean = False;
  ExeFileName: String = '';
  OriginalExeFileName,
  ExePath, ExeName, Params, St: String;
  UseExternalSetup: Boolean;
  FindHandle: THandle;
  FindData: TWin32FindData;

  procedure WaitForTermination;
  var
    Msg: TMsg;
    FileHandle: THandle;
//    iPriorityClass,
    iPriority: Integer;
  begin
//    SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_LOWEST);
    repeat
      { 'Application.ProcessMessages' emulation }
      while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
      FileHandle := CreateFile(PChar(ExeFileName), GENERIC_WRITE, FILE_SHARE_WRITE, nil,
                               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

    until FileHandle <> INVALID_HANDLE_VALUE;
    SetThreadPriority(GetCurrentThread, iPriority);
//    SetPriorityClass(GetCurrentProcess, iPriorityClass);
    CloseHandle(FileHandle);
  end;

  procedure StartMainApp;
  begin
    WinExec(PChar(ExeFileName + ' ' + Params), SW_SHOWNORMAL);
  end;

begin
  I := ParamCount;
  if I = 0 then
  begin
    MessageBox(0, PChar('Self-upgrading mechanism for AutoUpgrader component.'#13#10 +
                        '(c) 1999-2001, Utilmind Solutions (www.appcontrols.com)'),
               'Upgrader v3.4', MB_OK or MB_ICONINFORMATION);
    Halt;
  end;


  { 1. Locate program directory by exe-name transmitted as command-line parameter }
  for I := 1 to I do ExeFileName := ExeFileName + ParamStr(I) + #32;

  { 1.1. Check whether the AutoUpgrader uses the external setup program (#method=1) }
  UseExternalSetup := ExeFileName[Length(ExeFileName) - 1] = '1';

  { 1.2. split the file name and parameters }
  I := Pos('+', ExeFileName);
  if I <> 0 then
  begin
    Params := Copy(ExeFileName, I + 1, Length(ExeFileName) - I - 2); // -1
    SetLength(ExeFileName, I - 1); // add 1 byte for upgrade methid ID
  end;


  { 1.3. split the file path and name }
  for I := Length(ExeFileName) downto 1 do
   if ExeFileName[I] = '\' then
   begin
     ExePath := Copy(ExeFileName, 1, I);
     Break;
   end;

  { 2. test whether an exe-file exists + getting the filename in correct charcase }
  FindHandle := FindFirstFile(PChar(ExeFileName), FindData);
  if FindHandle <> INVALID_HANDLE_VALUE then
  begin
    ExeName := FindData.cFileName; { exe-name match case }
    FindClose(FindHandle);

    { 3. awaiting for its termination }
    WaitForTermination;
  end
  else
    { if main app already terminated -- getting the file name from argument string }
    ExeName := Copy(ExeFileName, I + 1, Length(ExeFileName) - I);

  { 4. Test whether newer (downloaded) exe-file exists }
  FindHandle := FindFirstFile(PChar(ExeFileName + '.uTMP'), FindData);
  if FindHandle <> INVALID_HANDLE_VALUE then
  begin
    FindClose(FindHandle);
    ExeFound := True;
  end;


  { 5. Find all downloaded (.uTMP) files}
  FindHandle := FindFirstFile(PChar(ExePath + '*.uTMP'), FindData);
  if FindHandle <> INVALID_HANDLE_VALUE then
  begin
    repeat
      St := FindData.cFileName;
      St := Copy(St, 1, Length(St) - 5);
      { 5.1. If this is executable AND newest exe still not found --
             trying to use another suitable EXE (this may happends
             if program was renamed by user, or local update done by
             external setup) }
      if not ExeFound and (Copy(St, Length(St) - 2, 3) = 'exe') then
       begin
        if not UseExternalSetup then
          St := ExeName
        else
         begin
          OriginalExeFileName := ExeFileName;
          ExeFileName := ExePath + St;
         end;
        ExeFound := True;
       end;

      { 5.2. Rename .uTMP file to its normal name. }
      St := ExePath + St;
      { delete old file first }
      SetFileAttributes(PChar(St), FILE_ATTRIBUTE_NORMAL);
      DeleteFile(PChar(St));
      { rename! }
      MoveFile(PChar(ExePath + FindData.cFileName), PChar(St));
      { set normal file attributes (unhide it) }

      if UseExternalSetup and (St = ExeFileName) then
        SetFileAttributes(PChar(St), FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_ARCHIVE)
      else
        SetFileAttributes(PChar(St), FILE_ATTRIBUTE_ARCHIVE);
    until not FindNextFile(FindHandle, FindData);

    FindClose(FindHandle);
  end;


  { 6. Restart main program (or setup-file) }
  StartMainApp;

  { 7. IF the local update should be done by external setup THEN (else terminate) }
  if UseExternalSetup then
   begin
    { 7.1. Wait until termination of setup program }
    WaitForTermination;

    { 7.2. Delete the setup (we don't need it anymore after installation?) }
    DeleteFile(PChar(ExeFileName));

    { 7.3. Restart the original main app }
    ExeFileName := OriginalExeFileName;
    StartMainApp;
   end;
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国久久99热| 日韩一区二区三区视频| 亚洲天堂网中文字| 91在线观看污| 亚洲最新视频在线观看| 欧美日韩成人一区| 激情丁香综合五月| 欧美韩日一区二区三区| 91日韩一区二区三区| 亚洲18色成人| 久久免费精品国产久精品久久久久| 国产乱码字幕精品高清av | 国产一区二区女| 国产欧美日韩三级| 91豆麻精品91久久久久久| 婷婷丁香久久五月婷婷| 久久午夜色播影院免费高清 | 免费观看一级特黄欧美大片| 精品国产一区二区在线观看| 国产凹凸在线观看一区二区| 亚洲黄一区二区三区| 日韩欧美国产午夜精品| 成人成人成人在线视频| 首页综合国产亚洲丝袜| 中文在线免费一区三区高中清不卡| 色综合久久中文字幕| 久久国产夜色精品鲁鲁99| 国产精品久久久久久久岛一牛影视| 日本久久一区二区| 黄色日韩网站视频| 亚洲国产精品视频| 欧美激情一区二区三区不卡| 欧美日本在线看| 99久久精品久久久久久清纯| 久久精品国产色蜜蜜麻豆| 国产精品美女久久久久aⅴ | 久久综合久久久久88| 日本精品一区二区三区高清| 韩日av一区二区| 亚洲国产精品麻豆| 国产精品久久久久久久岛一牛影视| 91精品婷婷国产综合久久竹菊| 国产成人在线电影| 麻豆精品久久精品色综合| 亚洲蜜臀av乱码久久精品| 26uuu国产一区二区三区| 欧美色欧美亚洲另类二区| 成人激情小说乱人伦| 免费在线一区观看| 亚洲午夜三级在线| 中文av一区二区| 日韩一本二本av| 欧美色涩在线第一页| 91论坛在线播放| 丰满白嫩尤物一区二区| 蜜桃av噜噜一区| 亚洲成人av一区二区三区| 亚洲日本成人在线观看| 国产精品美女久久久久久| 久久蜜桃香蕉精品一区二区三区| 欧美一区二区三区四区在线观看 | 欧美一区二区日韩| 欧美性猛交xxxxxxxx| 91麻豆免费看| 91婷婷韩国欧美一区二区| eeuss国产一区二区三区| 国产黄色91视频| 国产成人亚洲综合a∨猫咪| 韩国视频一区二区| 国产毛片精品一区| 精品亚洲成a人| 国精产品一区一区三区mba桃花| 奇米色一区二区三区四区| 五月天欧美精品| 青青草成人在线观看| 乱中年女人伦av一区二区| 日本成人在线不卡视频| 免费欧美日韩国产三级电影| 日本不卡一二三区黄网| 麻豆精品精品国产自在97香蕉| 精品影视av免费| 国产一区二区精品在线观看| 国产盗摄女厕一区二区三区| 成人精品免费视频| 97aⅴ精品视频一二三区| 91无套直看片红桃| 欧美又粗又大又爽| 777色狠狠一区二区三区| 日韩写真欧美这视频| 精品剧情在线观看| 日本一区二区在线不卡| 亚洲免费观看高清在线观看| 亚洲激情自拍偷拍| 天涯成人国产亚洲精品一区av| 日本在线不卡视频一二三区| 老司机一区二区| 成人在线一区二区三区| 色又黄又爽网站www久久| 欧美精品123区| 久久综合九色综合欧美就去吻| 国产精品视频第一区| 亚洲永久精品大片| 蜜桃av噜噜一区| 99免费精品在线观看| 精品婷婷伊人一区三区三| 欧美不卡123| 综合亚洲深深色噜噜狠狠网站| 亚洲国产一区在线观看| 久久99精品国产麻豆不卡| 不卡的看片网站| 91超碰这里只有精品国产| 久久久国产精品不卡| 亚洲激情成人在线| 国产一区二区久久| 欧美午夜精品理论片a级按摩| 日韩免费高清电影| 自拍偷拍国产精品| 蜜桃视频一区二区| 91看片淫黄大片一级在线观看| 538在线一区二区精品国产| 国产精品麻豆一区二区| 天堂av在线一区| 高清在线不卡av| 欧美一区二区三区免费大片 | 一级女性全黄久久生活片免费| 久久精品国产99国产| 欧美自拍偷拍午夜视频| 久久精品综合网| 欧美aaa在线| 色婷婷综合中文久久一本| 久久久久久99久久久精品网站| 婷婷中文字幕一区三区| 97久久人人超碰| 26uuu色噜噜精品一区| 五月天国产精品| 色综合天天综合在线视频| 久久精品网站免费观看| 日韩黄色免费网站| 欧美三级中文字| 亚洲天天做日日做天天谢日日欢 | 欧美电影免费观看高清完整版在线观看 | 亚洲视频在线一区| 国产乱子伦一区二区三区国色天香| 欧美日韩一区二区在线观看视频| 国产精品久久久久久久久免费相片| 捆绑调教一区二区三区| 69p69国产精品| 亚洲1区2区3区视频| 91官网在线观看| 亚洲欧洲综合另类| 成人免费视频国产在线观看| 久久久精品日韩欧美| 免费精品99久久国产综合精品| 欧美日韩精品一二三区| 一区二区三区四区在线免费观看| 成人免费看的视频| 欧美极品xxx| 国产91在线观看丝袜| 国产亚洲欧洲997久久综合| 精品系列免费在线观看| 欧美mv日韩mv国产网站app| 日本亚洲免费观看| 日韩一区二区在线看片| 免费欧美高清视频| 欧美成人精品1314www| 久久9热精品视频| 精品国产乱码久久久久久久 | 午夜一区二区三区视频| 欧美色电影在线| 日韩电影在线观看一区| 日韩欧美国产wwwww| 国产一区亚洲一区| 久久精品欧美一区二区三区不卡 | 日韩视频免费直播| 精品在线免费观看| 国产欧美日本一区视频| 99riav一区二区三区| 亚洲欧美一区二区三区极速播放| 91美女在线观看| 亚洲超碰97人人做人人爱| 日韩欧美国产高清| 国产成人免费在线观看| 国产精品第一页第二页第三页| 色综合久久久久网| 日韩精品一级中文字幕精品视频免费观看 | 日韩一级片网站| 五月天中文字幕一区二区| 欧美一区二区久久| 激情国产一区二区| |精品福利一区二区三区| 91久久精品一区二区二区| 亚洲a一区二区| 久久综合久久综合久久| 成人精品国产一区二区4080| 亚洲综合免费观看高清完整版| 555夜色666亚洲国产免| 国产精品1区2区| 亚洲综合成人在线| 精品国产一区二区三区久久影院| 波多野结衣亚洲|