Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
12
返回列表 发新帖
楼主: panlifeng

大家编写的服务器,多长时间重启一次?

[复制链接]

该用户从未签到

发表于 2010-12-21 08:48:42 | 显示全部楼层
在此順便分享一個不登大雅之堂的小技巧, Application(*.exe) 自己重啟自己或是自己更版自己 ....

■ 自己重啟自己

透過呼叫一個外部的 *.js 檔 (比 *.bat 更強) 來處理, *.js 檔只是個腳本檔(text 格式), 用 TStringList 寫好內容並 SaveToFile() 後就可以產生文件實體, 然後再用 ShellExecute() 呼叫執行它 ....

例如每天 am 04:00 一到, 主程式就執行

if (....)
{
   _ReRunMe(10);   // 呼叫自寫的 _ReRunMe() 函式, 並設定 10 秒後重啟自己
   Close(); //把自己關閉
}

//---------------------------------------------------------------------------
void   __fastcall TFmSrInLine::_ReRunMe(int ASecond)
{
  //產生 ReRunMe.js 文件
  TStringList *TmpList;
  TmpList = new TStringList;
  TmpList->Clear();
  TmpList->Add("var WshShell = WScript.CreateObject(\\"WScript.Shell\\");");
  TmpList->Add("WScript.Sleep("+IntToStr(ASecond*1000)+");");
  TmpList->Add("WshShell.Run(\\""+ExtractFileName(Application->ExeName)+"\\");");
  String ApPath=ExtractFilePath(Application->ExeName);
  TmpList->SaveToFile(ApPath+"ReRunMe.js");
  delete TmpList;

  //呼叫 ReRunMe.js 文件
  ShellExecute(NULL,NULL,"ReRunMe.js",NULL, NULL,SW_HIDE);
}


■ 自己更版自己

利用 *.js 可以獨立執行的特性, 除了 Application 可以利用它來重啟自己, 還可以在重啟過程中順便更版自己
原理如下圖示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-7-2 01:32 , Processed in 0.020069 second(s), 6 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表