查看: 2492|回复: 26

到时间服务器自动重启

[复制链接]
发表于 2012-12-24 07:15:13 | 显示全部楼层 |阅读模式
Ps:要放到hlds的同目录下不然就在txt里加上hlds的路径
写了个小东西来实现CMD下启动
启动参数 HlRun.exe /r 300 hlds.txt
/r 启动
300 每隔300分钟 5个小时重启
hlds.txt  hlds的启动参数可以非TXT格式

  下载 (18.61 KB)

2009-11-23 02:05
HlRun_程序.rar (11.16 KB) 下载次数: 23

2009-11-23 02:05

下面是源码
编辑环境 Win Xp Sp3 + Delphi7

program HlRun;



{$APPTYPE CONSOLE}



uses

  Windows,

  TLhelp32;



var

  Msg:Tmsg;

  Time:Integer;

  RunWORD;

  Temp:String;

  RInc:Integer;



Function StrToInt(S: String): Integer;

Var

E: Integer;

Begin

  Val(S, Result, E);

End;



Function IntToStr(I: DWORD): String;

begin

  Str(I, Result);

end;



Function LowerCase(const S: string): string;

var

  Ch: Char;

  L: Integer;

  Source, Dest: PChar;

begin

  L := Length(S);

  SetLength(Result, L);

  Source := Pointer(S);

  Dest := Pointer(Result);

  while L <> 0 do

  begin

    Ch := Source^;

    if (Ch >= 'A') and (Ch <= 'Z') then Inc(Ch, 32);

    Dest^ := Ch;

    Inc(Source);

    Inc(Dest);

    Dec(L);

  end;

end;



Function Trim(const S: string): string;

var

  I, L: Integer;

begin

  L := Length(S);

  I := 1;

  while (I <= L) and (S[I] <= ' ') do Inc(I);

  if I > L then Result := '' else

  begin

    while S[L] <= ' ' do Dec(L);

    Result := Copy(S, I, L - I + 1);

  end;

end;



Function GetPID(_GetPID:String):Dword;     //获取进程PID

var

     h:thandle;

     f:boolean;

     lppe:tprocessentry32;

begin

  Result:=0 ;

     h := CreateToolhelp32Snapshot(TH32cs_SnapProcess, 0);

     lppe.dwSize := sizeof(lppe);

     f := Process32First(h, lppe);

     while integer(f) <> 0 do

     begin

       if LowerCase(lppe.szExeFile) = LowerCase(_GetPID) then

       begin

         Result:=(lppe.th32ProcessID);

         break;

       end;

       f := Process32Next(h, lppe);

     end;

end;





Function KillProcess(dwPID: DWORD):Boolean;

var

  ProcessHandle: THandle;

begin

  ProcessHandle := OpenProcess(PROCESS_TERMINATE, False, dwPID);

  Result:=TerminateProcess(ProcessHandle, 0);

end;



Function ReadTxt(FileName:String):String;

Var

F : Textfile;

Begin

AssignFile(F, FileName);

Reset(F);

Readln(F,Result);

Closefile(F);

Result:=Trim(Result);

End;



function Hlds():Integer; stdcall;

begin

     KillProcess(GetPID('hlds.exe'));

     Sleep(500);

     //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';

     if  Temp <> '' then

     begin

            WinExec(PChar(Temp),SW_SHOW);

     end;

     Inc(RInc);

     Writeln('当前启动次数:' + IntToStr(RInc));

     Result := 0;

end;



procedure TimerProc(hwnd:HWND;uMsg,idEvent:UINT;dwTime:DWORD); stdcall;

begin

    CreateThread(nil , 0, @Hlds, nil, 0, Run);

end;



begin

  if ParamStr(1) = '/r' then

  begin

   Time:=StrToInt(ParamStr(2));

   Writeln('重启间隔:' + ParamStr(2) + ' 分钟');

   Temp:=ReadTxt(ParamStr(3));

   Writeln('启动参数:' + Temp);

   RInc:=0;

   Hlds;

   Sleep(100);

   SetTimer(0,100001,(Time * 60 *1000),@TimerProc);

   while GetMessage(Msg,0,0,0) do

   begin

      TranslateMessage(Msg);

      DispatchMessage(Msg);

   end;

  end;  



end.
复制代码



1.jpg

HlRun_程序.rar

208 Bytes, 下载次数: 2

售价: 1 金钱  [记录]

发表于 2012-12-26 10:22:07 | 显示全部楼层
谢谢哦  
发表于 2012-12-26 19:52:45 | 显示全部楼层
世界上那些最容易的事情中,拖延时间最不费力。  
发表于 2012-12-28 17:57:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2012-12-29 01:20:58 | 显示全部楼层
越办越好~~~~~~~~~`  
x3652121 该用户已被删除
发表于 2012-12-29 05:37:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2012-12-30 09:17:08 | 显示全部楼层
我帮你 喝喝  
发表于 2012-12-31 05:06:17 | 显示全部楼层
给我一个女人,我可以创造一个民族;给我一瓶酒,我可以带领他们征服全世界 。。。。。。。。。  
发表于 2012-12-31 13:37:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-1-1 14:36:10 | 显示全部楼层
@,@..是什么意思呀?  
您需要登录后才可以回帖 登录 | 中文注册

本版积分规则