17. maj 2002 - 11:43Der er
20 kommentarer og 1 løsning
Overvågning og genstart af program
Jeg mangler et program der kan: Checke hver X-antal sekunder om program-Y kører. - Hvis ikke program-Y kører, skal det spørge om du vil annullere automatisk genstart af program-Y, og automatisk genstarte program-Y efter Z-antal sekunder.
følgende variabler skal kunne sættes enten via en eller anden setup, eller en ini-fil: X sekunder ("refresh"-rate) Y program (titel på programmet (fx: "Red Faction Dedicated Server")) Z sekunder (timeout før automatisk genstart) \ og en kommando det skal eksekvere ved genstart -ialt 4 variabler.
I mit tilfælde har jeg brug for noget i stil med: X: 5 sekunder Y: Red Faction Dedicated Server Z: 30 sekunder path: "c:\games\Red Faction\rf.exe -dedicated CTF"
-mit problem er bare at jeg intet kender til at programmere :-( Men jeg har hørt det skulle være ret let at lave et sådan program, so here I am..
Laffe... det er meget godt, men... redfaction sender ingen beskeder ud.. (jeg har ikke selv skrevet redfaction-programmet.)
Hvad jeg har brug for er et program der kigger efter et program ved navn "Red faction dedicated server" i start-barren... -og så starter det igen som beskrevet ovenover hvis det ikke kører...
hvis caption er det samme som det der står på "knappen" på start-barren, så ja. ligesom der står fx "MSN Messenger" ved et åbent Messenger-vindue, og "Denne Computer" etc etc :)
-så den skal kigge efter et det hedder "Red Faction Dedicated Server" og hvis det ikke existerer, skal den spørge om man virkelig vil starte det igen, og efter en given timeout, skal den så automatisk starte programmet igen. (grunden til at det skal kunne indstilles, er at det så ville kunne bruges til andre programmer i fremtiden. -fx en UT2003 server?)
void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (Edit3->Text.IsEmpty()) return;
if (!FindWindow(NULL,Edit3->Text.c_str())) { // Window not found. The App is not running. Timer2->Interval = 1000*StrToInt(Edit2->Text); Timer2->Enabled = true; } } //---------------------------------------------------------------------------
Result = CreateProcess ( Edit4->Text.c_str(), // pointer to name of executable module Edit5->Text.c_str(), // pointer to command line string NULL, // pointer to process security attributes NULL, // pointer to thread security attributes false, // handle inheritance flag 0, // creation flags NULL, // pointer to new environment block "\\mx\\MX_Process", // pointer to current directory name &StartupInfo, // pointer to STARTUPINFO &ProcessInformation // pointer to PROCESS_INFORMATION );
Programmet ser for FEDT ud.. der er bare lige 3 ting.. er der mulighed for at man kan tilføge en /autostart eller noget i den stil, så den automatisk går igang med at overvåge lige så snart den er startet? (Så jeg ikke behøver aktivere den på serveren hver gang den har rebootet)
Den ser ikke ud til at gemme "Parameters"-konfigurationen i conf-filen, så den glemmer det.. (det kan jeg dog leve med :-) )
derudover ser den ikke ud til at gøre noget overhovedet... jeg har testet den både med Redfaction, Lommeregner, notepad og scandisk.. den ser ikke ud til at gøre noget overhovedet... (Vil lige nævne at jeg kører winME - kan det være derfor? Skal med glæde opgradere til win2K eller winXP hvis det hjælper)
okay, den nye version er meget bedere, idet at den starter programmet korrekt. Den ser dog stadig ud til at ignorere paramterene (både med hensyn til at gemme konfigurationen, samt at udføre dem når den starter programmet.) Men hvis det er et progblem, kan jeg omgå det ved at lade den starte en genvejs-fil istedet, så hvis det er et problem, så are lad det være :)
void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (Edit3->Text.IsEmpty()) return;
if (!FindWindow(NULL,Edit3->Text.c_str())) { // Window not found. The App is not running. Timer2->Interval = 1000*StrToInt(Edit2->Text); Timer2->Enabled = true; } } //---------------------------------------------------------------------------
Result = CreateProcess ( Edit4->Text.c_str(), // pointer to name of executable module Edit5->Text.c_str(), // pointer to command line string NULL, // pointer to process security attributes NULL, // pointer to thread security attributes false, // handle inheritance flag 0, // creation flags NULL, // pointer to new environment block NULL, // pointer to current directory name &StartupInfo, // pointer to STARTUPINFO &ProcessInformation // pointer to PROCESS_INFORMATION );
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.