找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1111|回复: 3

CS服务器定时重启{附源码For Delphi}

[复制链接]

该用户从未签到

发表于 2009-11-23 01:59:49 | 显示全部楼层 |阅读模式
本帖最后由 lovehuai 于 2009-11-23 02:02 编辑

在点通看到有人想要这类的东西就拿起Delphi画了个
Ps:要放到hlds的同目录下不然就在txt里加上hlds的路径
写了个小东西来实现CMD下启动
启动参数 HlRun.exe /r 300 hlds.txt
/r 启动
300 每隔300分钟 5个小时重启
hlds.txt  hlds的启动参数可以非TXT格式
0911230205fa04ba31af34beea.jpg

点击下载程序

郁闷附件传了5次没传上来才11K的压缩包。。。
上传有问题?

  1. program HlRun;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   Windows,
  5.   TLhelp32;
  6. var
  7.   Msg:Tmsg;
  8.   Time:Integer;
  9.   Run:DWORD;
  10.   Temp:String;
  11.   RInc:Integer;
  12.   
  13. Function StrToInt(S: String): Integer;
  14. Var
  15. E: Integer;
  16. Begin
  17.   Val(S, Result, E);
  18. End;
  19. Function IntToStr(I: DWORD): String;
  20. begin
  21.   Str(I, Result);
  22. end;
  23. Function LowerCase(const S: string): string;
  24. var
  25.   Ch: Char;
  26.   L: Integer;
  27.   Source, Dest: PChar;
  28. begin
  29.   L := Length(S);
  30.   SetLength(Result, L);
  31.   Source := Pointer(S);
  32.   Dest := Pointer(Result);
  33.   while L <> 0 do
  34.   begin
  35.     Ch := Source^;
  36.     if (Ch >= 'A') and (Ch <= 'Z') then Inc(Ch, 32);
  37.     Dest^ := Ch;
  38.     Inc(Source);
  39.     Inc(Dest);
  40.     Dec(L);
  41.   end;
  42. end;
  43. Function Trim(const S: string): string;
  44. var
  45.   I, L: Integer;
  46. begin
  47.   L := Length(S);
  48.   I := 1;
  49.   while (I <= L) and (S[I] <= ' ') do Inc(I);
  50.   if I > L then Result := '' else
  51.   begin
  52.     while S[L] <= ' ' do Dec(L);
  53.     Result := Copy(S, I, L - I + 1);
  54.   end;
  55. end;
  56. Function GetPID(_GetPID:String):Dword;     //获取进程PID
  57. var
  58.      h:thandle;
  59.      f:boolean;
  60.      lppe:tprocessentry32;
  61. begin
  62.   Result:=0 ;
  63.      h := CreateToolhelp32Snapshot(TH32cs_SnapProcess, 0);
  64.      lppe.dwSize := sizeof(lppe);
  65.      f := Process32First(h, lppe);
  66.      while integer(f) <> 0 do
  67.      begin
  68.        if LowerCase(lppe.szExeFile) = LowerCase(_GetPID) then
  69.        begin
  70.          Result:=(lppe.th32ProcessID);
  71.          break;
  72.        end;
  73.        f := Process32Next(h, lppe);
  74.      end;
  75. end;

  76. Function KillProcess(dwPID: DWORD):Boolean;
  77. var
  78.   ProcessHandle: THandle;
  79. begin
  80.   ProcessHandle := OpenProcess(PROCESS_TERMINATE, False, dwPID);
  81.   Result:=TerminateProcess(ProcessHandle, 0);
  82. end;
  83. Function ReadTxt(FileName:String):String;
  84. Var
  85. F : Textfile;
  86. Begin
  87. AssignFile(F, FileName);
  88. Reset(F);
  89. Readln(F,Result);
  90. Closefile(F);
  91. Result:=Trim(Result);
  92. End;
  93. function Hlds():Integer; stdcall;
  94. begin
  95.      KillProcess(GetPID('hlds.exe'));
  96.      Sleep(500);
  97.      //Temp:= 'hlds.exe -game cstrike +servercfgfile MatchMode.cfg -insecure -port 27017 +maxplayers 14 +map de_train +sv_lan 0 -console +ip 192.168.1.111 -noipx -nojoy';
  98.      if  Temp <> '' then
  99.      begin
  100.             WinExec(PChar(Temp),SW_SHOW);
  101.      end;
  102.      Inc(RInc);
  103.      Writeln('当前启动次数:' + IntToStr(RInc));
  104.      Result := 0;
  105. end;
  106. procedure TimerProc(hwnd:HWND;uMsg,idEvent:UINT;dwTime:DWORD); stdcall;
  107. begin
  108.     CreateThread(nil , 0, @Hlds, nil, 0, Run);
  109. end;
  110. begin
  111.   if ParamStr(1) = '/r' then
  112.   begin
  113.    Time:=StrToInt(ParamStr(2));
  114.    Writeln('重启间隔:' + ParamStr(2) + ' 分钟');
  115.    Temp:=ReadTxt(ParamStr(3));
  116.    Writeln('启动参数:' + Temp);
  117.    RInc:=0;
  118.    Hlds;
  119.    Sleep(100);
  120.    SetTimer(0,100001,(Time * 60 * 1000),@TimerProc);
  121.    while GetMessage(Msg,0,0,0) do
  122.    begin
  123.       TranslateMessage(Msg);
  124.       DispatchMessage(Msg);
  125.    end;
  126.   end;  
  127. end.
复制代码

该用户从未签到

发表于 2009-11-23 02:34:30 | 显示全部楼层
网上见过现成的daemon

该用户从未签到

 楼主| 发表于 2009-11-23 03:54:17 | 显示全部楼层
网上见过现成的daemon
fantasist 发表于 2009-11-23 02:34

很多东西我还是喜欢用自己写的
网上虽然也有
但是不和我胃口没办法
-_,-

该用户从未签到

发表于 2009-11-23 09:03:08 | 显示全部楼层
高手,膜拜~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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