CreateMutex für Linux?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

CreateMutex für Linux?

Beitrag von MmVisual »

Hallo,

Ich möchte verhindern dass mein Programm zwei mal gestartet wird. Dazu gibt es unter Windows (mit Delphi) "CreateMutex".

Gibt es sowas auch für Linux / Lazarus?

Hier ist ein Beispiel:
http://www.swissdelphicenter.ch/torry/s ... .php?id=42" onclick="window.open(this.href);return false;

Vielen Dank für eure Hilfe, Gruß Markus
Zuletzt geändert von MmVisual am Sa 27. Nov 2010, 22:42, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: CreateMutex?

Beitrag von MmVisual »

Das ist mein Code für Windows:

Code: Alles auswählen

Procedure TestMutex(sMutexText, sWindow: String);
{$ifdef WINDOWS}
Var h: HWND;
{$endif}
Begin
  {$ifdef WINDOWS}
  mHandle := CreateMutex(Nil, True, PChar(sText));
  If GetLastError = ERROR_ALREADY_EXISTS Then
  Begin
    If sWindow <> '' Then // Anderes Fenster aktivieren
    Begin
      h := FindWindow(Nil, PChar(sWindow));
      If h <> 0 Then
      Begin
        ShowWindow(h, SW_RESTORE);
        SetForegroundWindow(h);
      end;
    end;
    Halt;
  End;
  {$endif}
end;
 
initialization
  mHandle := 0; // Siehe TestMutex()
 
finalization
{$ifdef WINDOWS}
  If mHandle <> 0 Then CloseHandle(mHandle) // Siehe TestMutex()
{$endif}
Es fehlt jetzt nur noch die Implementierung für Linux.
Weiß jemand wie das geht?
EleLa - Elektronik Lagerverwaltung - www.elela.de

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: CreateMutex für Linux?

Beitrag von DiBo33 »

http://wiki.lazarus.freepascal.org/UniqueInstance/de" onclick="window.open(this.href);return false;

Antworten