Avatar billede spectual Nybegynder
05. marts 2001 - 11:57 Der er 9 kommentarer og
1 løsning

Starte CounterStrike / half-life

Hej.

Er der nogen, der har/kan lave en stump kode til at starte CounterStrike med Windows API\'en \"createprocess\" ?

Klaus.
Avatar billede borrisholt Novice
05. marts 2001 - 12:01 #1
brug den her funktion :

function ExecAndWait(Filename, Parameter: string; nCmdShow: integer): longword;
var
    zAppName: array[0..max_path] of char;
    zParameter: array[0..max_path] of char;
    zCurDir: array[0..max_path] of char;
    StartupInfo: TStartupInfo;
    ProcessInfo: TProcessInformation;
begin
  StrPCopy(zAppName,FileName);
  StrPCopy(zParameter,Parameter);
  StrPCopy(zCurDir,GetCurrentDir());
  FillChar(StartupInfo,Sizeof(StartupInfo),#0);
  StartupInfo.cb:=Sizeof(StartupInfo);
  StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow:=nCmdShow;
  if not CreateProcess(zAppName,zParameter,nil,nil,false,CREATE_NEW_CONSOLE or  NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo) then
    Result:=0
    else
    begin
      WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess,Result);
    end;
end;

og kan den sådan her :

    ExecAndWait(FileName,\'\', sw_normal);

Jens B
Avatar billede spectual Nybegynder
05. marts 2001 - 12:02 #2
Har du testet den med Counterstrike?
Avatar billede borrisholt Novice
05. marts 2001 - 12:04 #3
spectual  >> Jeg ved ikke hvad Counterstrike er. Men den ovenstående funktion eksekvere en fil og retunerer når den er færdig ...

Jens B
Avatar billede spectual Nybegynder
05. marts 2001 - 12:07 #4
CounterStrike er et spil. Jeg skal nok teste din funktion i aften, men det virker formindtlig ikke med CounterStrike, da det er lidt specielt.

Jeg prøvede selv i går med createprocess, men CounterStrike brokkede sig over at denne ikke kun starte nogle threads eller hvad det nu var.

Måske et rettighedsproblem?
Avatar billede ziron Nybegynder
06. marts 2001 - 13:47 #5
har du prøvet med Shellexecute???

et ex...

shellexecute(handle, \'open\', pchar(\'{her skal stien til din half-life mappe stå + din HL.EXE, og hvis du skulle starte CS, skal du have dette med \" -game cstrike\"}\'), \'\',\'\', SW_SHOW);

dette her burde kunne åbne half-life i CS-mode...

/ZIRON
Avatar billede spectual Nybegynder
06. marts 2001 - 14:02 #6
Grunden til at jeg ville bruge CreateProcess var at jeg skal kunne terminate det, når jeg har lyst til det.

Kan det lade sig gøre med shellexecute?

CounterStrike laver vist en hel del threads og andre mærkværdige ting - man burde kunne tilpasse CreateProcess til formålet.

Jeg har testet \"Winexec\" og det virker, men der kan jeg vist ikke terminate det fordi jeg ikke får noget handle fra den.

Hvad mener du ziron?
Avatar billede ziron Nybegynder
06. marts 2001 - 22:34 #7
hvorfor skal du kunne terminate???

/ZIRON
Avatar billede borrisholt Novice
07. marts 2001 - 07:37 #8
spectual  >> Virker det ?

Jens B
Avatar billede spectual Nybegynder
07. marts 2001 - 09:35 #9
ziron: >> Fordi at mit program skal tage fuld control over CounterStrike og kunne afslutte på hvilket som helst tidspunkt.

borrisholt >> JAAAAA!!! :-D Herlig rutine du havde der :)
Avatar billede spectual Nybegynder
07. marts 2001 - 09:35 #10
Tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester