AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verhindern das die gleich Exe gestartet wird
Thema durchsuchen
Ansicht
Themen-Optionen

Verhindern das die gleich Exe gestartet wird

Ein Thema von meisteralex · begonnen am 28. Nov 2005 · letzter Beitrag vom 29. Nov 2005
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#31

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 12:52
Also ich bekomm ne Meldung(Rot und Fett) das neue Nachrichten hinzugekommen sind
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#32

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 12:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#33

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 13:02
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.
  Mit Zitat antworten Zitat
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#34

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 13:05
werde das letzte code beispiel gleich mal ausprobieren wenn ich zu hause bin.
schonmal vielen dank an alle genies hier!
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#35

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 13:13
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?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#36

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 13:29
Zitat von brechi:
Hast du vielleicht nicht alle Posts gelesen?
Nee, wohl nicht, aber die meisten. Jedenfalls ist Mutex der richtige Ansatz. Mich hat nur aufgeregt, dass plötzlich Ideen aufkamen, wo irgendwelche Werte in die Registry untergebracht werden. Dass ein Mutex ein "\" enthalten, wusst ich in der Tat nicht. Aber das mit dem Ersetzen von '\' nach '-' sollte dann aber klappen, es sei denn noch andere Zeichen seien nicht erlaubt.

Übrigens, zum Ersetzen würde ich die StringReplace Funktion nutzen statt die Zeichfolgen Zeichen für Zeichen zu durchforsten.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#37

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 14:32
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:

CreateMutex

Zitat:
If the mutex is a named mutex and the object existed before this function call, the return value is a handle to the existing object and GetLastError returns ERROR_ALREADY_EXISTS. However, if the second caller has limited access rights, the function will fail with ERROR_ACCESS_DENIED and the caller should use the OpenMutex function.
Damit bin ich auch gleich wieder bei meiner Frage von vorhin: Wenn ich das Handle der bereits aktiven exe von CreateMutex bekomme, warum kann ich diese dann nicht mit BringWindowToTop in den Vordergrund rücken?


Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#38

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 14:48
Zitat von messie:
Kannst Dich wieder abregen
Gut, bin wieder ruhig und leg die Füsse wieder auf den Tisch.

Zitat von messie:
Damit bin ich auch gleich wieder bei meiner Frage von vorhin: Wenn ich das Handle der bereits aktiven exe von CreateMutex bekomme, warum kann ich diese dann nicht mit BringWindowToTop in den Vordergrund rücken?
Hast du den Code hier schon mal probiert. Genau den benutze ich in einem meiner Programme und dort klappt das mit dem BringToFront einwandfrei.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#39

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 14:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#40

Re: Verhindern das die gleich Exe gestartet wird

  Alt 28. Nov 2005, 15:00
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz