05. september 2001 - 18:36Der er
3 kommentarer og 1 løsning
Hvordan detekteres at programmet allerede kører ?
I et program, som er meget afhængig af at der ikke allerede er en udgave af det igang, har jeg forsøgt at bruge nvironment variabler, men de kan åbenbart kun læses og skrives indenfor den samme session. Det jeg ønsker er at programmet ved opstart tjekker om en udgave allerede kører. I så fald skal den give en fejlmeddelelese og terminere.
Der er flere måder at gøre det på. En nem måde er at dit program laver en fil når det starter, og hvis filen allerede findes så skal programmet afslutte. Du kan også slrive en værdi et sted i Registreringsdatabasen og læse den for at finde ud af om programmet kører. Du kan også bruge FinWindow for at se om der allerede er åbnet et vindue med den titel som dit program har.
uses Windows, Forms, Unit1 in \'Unit1.pas\' {Form1};
{$R *.res}
begin CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 1000, \'MY MAP NAME GOES HERE\'); if GetLastError <> ERROR_ALREADY_EXISTS then begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end else //Programmet kører allerede end.
Det er lidt uretfærdigt at afvise svar som måske er OK, men Sannen\'s forslag var det jeg afprøvede først og det virker fint. Metoden med en fil havde jeg tænkt på, men filen kan jo være blevet oprettet tidligere og ikke blevet slettet hvis Windoze havde crashet. (Det sker jo)
Synes godt om
Ny brugerNybegynder
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.