![]() |
Re: Verhindern das die gleich Exe gestartet wird
Also ich bekomm ne Meldung(Rot und Fett) das neue Nachrichten hinzugekommen sind
|
Re: Verhindern das die gleich Exe gestartet wird
und mit dem mutex gehts so:
Delphi-Quellcode:
program Project2;
uses Forms, windows, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} var mhandle,i: integer; s: String; begin s := paramstr(0); for i := 1 to length(s) do if s[i] = '\' then s[i] := '-'; mHandle := CreateMutex(nil, true, PChar(s)); if (GetLastError = Error_Already_Exists) then halt; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; if mHandle <> 0 then CloseHandle(mHandle); end. |
Re: Verhindern das die gleich Exe gestartet wird
Das mit den Mutex klappt. Und mehr werde ich zu diesem Thema nicht schreiben. Was sollen denn nun all diese abstrusen Ideen mit irgendwas in die Registry schreiben oder sonstwie nach Fensterhandles kucken. Der Code wurde bereits neben mir von anderen direkt hier reingepostet. Die Lösung wurde auf dem Silbertablett serviert.
|
Re: Verhindern das die gleich Exe gestartet wird
werde das letzte code beispiel gleich mal ausprobieren wenn ich zu hause bin.
schonmal vielen dank an alle genies hier! |
Re: Verhindern das die gleich Exe gestartet wird
Jelly dein Code klappt nicht weil Mutexe wohl nicht '\' unterstützt. Das hatte Sharky schon auf der 1. Seite glaub ich gepostet. und ich habe keine Lösung gesehen bei der die '\' durch z.b. '-' ersetzt wurde. Deshalb hab ich das nochmal geschrieben und noch ne 2. Möglichkeit gezeigt(Process32First, Process32Next). Anscheinend hast du deinen code (application.exename) nicht getestet, weil der ja nicht funktioniert.
Deshalb wird auch weiterdiskutiert. Hast du vielleicht nicht alle Posts gelesen? |
Re: Verhindern das die gleich Exe gestartet wird
Zitat:
Übrigens, zum Ersetzen würde ich die StringReplace Funktion nutzen statt die Zeichfolgen Zeichen für Zeichen zu durchforsten. |
Re: Verhindern das die gleich Exe gestartet wird
Kannst Dich wieder abregen, ich hatte ja nur auf den Vorschlag reagiert nach titlecaptions etc. zu suchen. Eigentlich wollte ich ne eigene Frage dort unterbringen aber die ist in der Aufregung wohl untergegangen. Ich habe jetzt nochmal alles gelesen und nachgesehen, dabei ist mir was aufgefallen: error_already_exists funzt laut MS nur bei vollen Zugriffsrechten. Ansonsten soll man OpenMutex verwenden. Und weil das leidige Thema Zugrifssrechte mit jedem Windows-Patch wichtiger wird, vielleicht nochmal nachlesen:
![]() Zitat:
Grüße, Messie |
Re: Verhindern das die gleich Exe gestartet wird
Zitat:
Zitat:
![]() |
Re: Verhindern das die gleich Exe gestartet wird
Ja, den hatte ich schon probiert, geht aber nicht. Ich überlege gerade ob es daran liegt, daß ich die Aufrufe in initialization-Teil stehen habe. Mir ist schonmal aufgefallen, daß dort nicht alles funzt.
Grüße, Messie |
Re: Verhindern das die gleich Exe gestartet wird
In welchem Initialization Teil... Bei mir stehts gleich im Quellcode der Projektdatei (.dpr). Ich rufe die Prozedur direkt hinter der Zeile
application.Title := 'blabla' ; auf... Also so:
Delphi-Quellcode:
const
MyGUID = '{641F16BC-EFE7-4EF4-B45D-52F5192C74E9}'; begin Application.Initialize; Application.Title := 'Release Management und Versionen Kontrolle'; EnsureSingleInstance (MyGUID) ; Application.CreateForm(TfrmMain, frmMain); Application.CreateForm(TfrmRema, frmRema); Application.Run; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz