
Logowanie
| Sprawdzanie, czy egzemplarz programu jest już uruchomiony |
|
|
| Wpisany przez Berl | |||
| wtorek, 01 listopada 2005 15:30 | |||
|
Z pewnością każdy programista stanął przed problemem sprawdzenia, czy egzemplarz jego programu jest już uruchomiony. Można tego dokonać na wiele sposobów, mniej lub bardziej profesjonalnych, w tym artykule zajmiemy się opisaniem dwóch z nich.
1. Zastosowanie funkcji FindWindow FindWindow('TForm1', 'Form1') - zwraca uchwyt do okna klasy TForm1 o nazwie Form1; FindWindow('TForm1', nil) - zwraca uchwyt do okna klasy TForm1 o dowolnej nazwie; FindWindow(nil, 'Form1') - zwraca uchwyt do okna o nazwie Form1 i dowolnej klasie; FindWindow('TForm1', '') - zwraca uchwyt do okna klasy TForm1, które nie posiada nazwy; var uchwyt : HWND;
begin
uchwyt := FindWindow('TForm1', 'Fom1'); if Uchwyt 0 then begin ShowMessage('Egzemplarz programu jest już uruchomiony'); end;
end;
UWAGA! Jeśli program z takim kodem uruchomimy w środowisku Delphi, to program nie zostanie uruchomiony ani razu, gdyż okno takiej klasy i o takiej nazwie jak będziemy szukać jest już otwarty na etapie projektowania. var
Muteks : THandle;
begin
Muteks := CreateMutex(nil, False, 'Nazwa'); if WaitForSingleObject(Muteks, 0) = wait_TimeOut then ShowMessage('Egzemplarz programu jest już uruchomiony'); end;
W artykule tym zostały omówione najprostsze, a zarazem najskuteczniejsze metody wykrywania, czy program jest już uruchomiony.
|
Statystyka
Użytkowników : 99Artykułów : 76
Odsłon : 99787




