Einzelnen Beitrag anzeigen

Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#1

Kein doppelter Programstart aber Fenster in den Vordergrund

  Alt 2. Jan 2004, 12:49
Hallo,

ich nutze die folgende Unit um einen doppelten Programmstart zu verhindern:
Delphi-Quellcode:
unit CopyVertragRunOnce;

interface

implementation

uses windows, Dialogs, sysutils, Forms;

var mHandle: THandle; // Mutexhandle

Initialization
  mHandle := CreateMutex(nil, True, PChar(Application.Title));
  // 'xxxxx' Der Anwendungsname ist hier einzutragen
  if GetLastError = ERROR_ALREADY_EXISTS then begin
    // Anwendung läuft bereits
    showMessage('Anwendung läuft bereits!!!!!');
    // Wenn du deine Meldung willst, mach die Klammern weg
    Halt;
  end;

finalization // ... und Schluß
  if mHandle <> 0 then
    ReleaseMutex(mHandle);
end. {Dieter Hirt}
Ich möchte jetzt aber nicht eine Meldung auf den Bildschirm bekommen. Stattdessen soll die Instanz des Programmes, die schon läuft in den Vordergrund gehoben werden. Ich kann dies mit den API-Funktionen SetForegroundWindow oder BringWindowToTop erreichen. Beide benötigen jedoch das Fensterhandle. Gibt es eine Möglichkeit aus dem Mutex irgendwie das Fensterhandle zu ermitteln oder muß ich FindWindow verwenden?
  Mit Zitat antworten Zitat