Dein mHandle ist das
Handle des
Mutex, das geht natürlich nicht!
Was du brauchst ist das
Handle auf die bereits laufende Instanz des Programmes, daher das Findwindow. Ich schrieb ja, das dort ein Fehler sein könnte. Such mal hier im Forum nach
Mutex und Fenster nach vornebringen, dort gibt es funktionierende Lösungen.
Edit:
Habe eben in der Newsgruppe de.comp.language.delphi.misc ein Beispiel gefunden, (ist von Nineberry, der weiss was er tut)
Delphi-Quellcode:
procedure CheckOnce;
const
TestTitle = 'Nicoles Einweganwendung testing...';
AppTitle = 'Nicoles Einweganwendung';
var
hWnd: THandle;
begin
// einen anderen Titel setzen, so dass wir uns
// nicht selbst finden
Application.Title:= TestTitle;
hWnd:= FindWindow('TApplication', AppTitle);
if hWnd <> 0 then
begin
// Eine andere Instanz läuft schon;
// Falls minimiert, wiederherstellen
if IsIconic(hWnd) then
ShowWindow(hWnd, SW_SHOW);
// Diese in den Vordergrund bringen
SetForegroundWindow(hWnd);
// Uns selbst schließen
Halt;
end;
// Wir sind die erste Instanz -> Titel setzen, so
// dass weitere unsfinden
Application.Title:= AppTitle;
end;
Damit müsstest du deine andere Instanz finden, der schickst du dann die Message (und wenn du WM_USER + 4711 sendest, dann musst du natürlich auch auf WM_USER + 4711 abfragen)
/Edit