- 听众
- 收听
- 积分
- 373
- 主题
- 回帖
- 0
- 精华
注册时间2009-1-6
最后登录1970-1-1
该用户从未签到
|
本帖最后由 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格式
点击下载程序
郁闷附件传了5次没传上来才11K的压缩包。。。
上传有问题?
-
- program HlRun;
- {$APPTYPE CONSOLE}
- uses
- Windows,
- TLhelp32;
- var
- Msg:Tmsg;
- Time:Integer;
- Run:DWORD;
- 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.
复制代码 |
|