Ik wil niet dat de gebruiker twee keer mijn applicatie kan starten. Probeert hij dit wel, dan moet de eerste versie van mijn applicatie on-top worden gebracht.
Nou had ik hier een mooie oplossing voor:
Het probleem is echter dat als de gebruiker een totaal andere applicatie met dezelfde form naam (in dit geval TMainForm) heeft dan wordt deze (soms) on-top gehaald. Is hier een betere oplossing voor?
Nou had ik hier een mooie oplossing voor:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| var
hMutex: THandle;
begin
hMutex := CreateMutex(nil, False, 'AppNaam');
try
if WaitForSingleObject(hMutex, 0) <> WAIT_TIMEOUT then begin
Application.Initialize;
Application.Title := 'AppNaam';
Application.CreateForm(TMainForm, MainForm);
//eventueel meedere forms hier
Application.Run;
end else begin
SetForegroundWindow(FindWindow('TMainForm', nil));
CloseHandle(hMutex);
end;
finally
ReleaseMutex(hMutex);
end;
end. |
Het probleem is echter dat als de gebruiker een totaal andere applicatie met dezelfde form naam (in dit geval TMainForm) heeft dan wordt deze (soms) on-top gehaald. Is hier een betere oplossing voor?
"The shell stopped unexpectedly and Explorer.exe was restarted."