AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Prüfen ob mein Programm bereits läuft

Prüfen ob mein Programm bereits läuft

Ein Thema von superjojo · begonnen am 24. Jun 2014 · letzter Beitrag vom 26. Jun 2014
Antwort Antwort
Seite 1 von 2  1 2   
superjojo

Registriert seit: 10. Jan 2014
16 Beiträge
 
#1

Prüfen ob mein Programm bereits läuft

  Alt 24. Jun 2014, 16:41
Hallo

Ich Programmiere einen Mediaplayer. Wenn ich nun eine Audiodatei mit dem Programm öffne wird diese abgespielt.
Wenn ich jedoch parallel dazu eine weitere Datei öffne öffnet sich wieder eine neue Instanz meines Programms.

Ich hätte gerne, dass die neu geöffnete Datei automatisch in den schon laufenden Player geladen wird.

Falls das zu komplex ist würde es auch reichen wenn ich beim Starten des Programms prüfen könnte ob bereits eine Instanz läuft und diese alte Instanz dann beenden könnte.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Prüfen ob mein Programm bereits läuft

  Alt 24. Jun 2014, 16:57
Singleton
http://www.delphipraxis.net/146936-%...ns-delphi.html
Markus Kinzler
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Prüfen ob mein Programm bereits läuft

  Alt 24. Jun 2014, 17:14
Nee, also ein Singleton hat damit nichts zu tun. Eher ein Mutex. Wie man das genau macht, steht hier.

1. Die Applikation erzeugt ein globales Windows-Objekt: Ein Mutex mit Namen. Gibt es das schon? => Dann läuft die Anwendung ja auch schon. Wenn nicht, wird dieses Mutex erzeugt und die Anwendung startet.

2. Wenn schon eine Instanz existiert, muss man irgendwie an diese herankommen. Das geht z.B. mit dem Windows-Handle. Dann schickt man diesem Handle eine besondere Message und übergibt noch den Dateinamen. Fertig.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.145 Beiträge
 
Delphi 12 Athens
 
#4

AW: Prüfen ob mein Programm bereits läuft

  Alt 24. Jun 2014, 17:16
Du wirst es nicht glauben, aber wenn man die Suchfunktion verwendet, dann findet man massig Lösungen dafür und muß sich nur noch Eine raussuchen.

http://www.delphipraxis.net/73562-we...uebergabe.html



- Prüfen ob das Programm bereits läuft ist das Einfachste
- Wenn man das Programm gefunden hat, dann kann man nun über einen von vielen Wegen den Parameter des aktuellen Programms an die alte Instanz übergeben.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Prüfen ob mein Programm bereits läuft

  Alt 24. Jun 2014, 17:25
Du wirst es nicht glauben, aber wenn man die Suchfunktion verwendet,
Also ich glaub dir das
  Mit Zitat antworten Zitat
superjojo

Registriert seit: 10. Jan 2014
16 Beiträge
 
#6

AW: Prüfen ob mein Programm bereits läuft

  Alt 25. Jun 2014, 19:49
Du wirst es nicht glauben, aber wenn man die Suchfunktion verwendet, dann findet man massig Lösungen dafür und muß sich nur noch Eine raussuchen.

http://www.delphipraxis.net/73562-we...uebergabe.html
danke erstmal für den tipp.
Teilweise ist es echt schwierig gerade die Suchwörter zu benutzen unter denen man nun genau das findet was man braucht.

Aber zu der OneInstance.pas - Darf ich dieese Unit verwenden und mein Programm dann später veröffentlichen?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Prüfen ob mein Programm bereits läuft

  Alt 25. Jun 2014, 19:52
Aber zu der OneInstance.pas - Darf ich dieese Unit verwenden und mein Programm dann später veröffentlichen?
Jupp. Wieso nicht?
  Mit Zitat antworten Zitat
superjojo

Registriert seit: 10. Jan 2014
16 Beiträge
 
#8

AW: Prüfen ob mein Programm bereits läuft

  Alt 25. Jun 2014, 20:14
Noch ne blöde frage zur InstanceCheck.pas

Wie bekomme ich denn jetzt die Komponente in mein Projekt rein, sodass ich sie im Objektinstpektor bearbeiten kann? In der Leiste oben wird die ja nicht hinzugefügt.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Prüfen ob mein Programm bereits läuft

  Alt 25. Jun 2014, 21:05
Hallo,
binde doch einfach die beiden Units in dein Projekt in uses mit ein.
Wenn du dann in deinem Code den Unitnamen eingibst und dahinter einen Punkt setzt -und ein paar Millisekunden wartest- siehst du doch alle Methoden. Muss man dafür eine Komponenten haben?
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Prüfen ob mein Programm bereits läuft

  Alt 25. Jun 2014, 21:47
Die OneInstance.pas nutzt du so:

In deiner DPR:
Delphi-Quellcode:
program ...;

uses
  ...,
  OneInstance.pas;

...

procedure NewInstance(ProcessId: Cardinal; CmdLine: String; var Allow: Boolean);
begin
  Allow := FALSE;
end;


begin
  NewInstProc := NewInstance;
  ...
end.
Steht aber auch in der Unit oben
Delphi-Quellcode:
// - Durch eine Zuweisung von OneInstance.NewInstProc kann eine Ereignis-
// prozedur definiert werden, welche beim Start einer neuen Anwendungsinstanz
// aufgerufen wird. Parameter:
// ProcessId: Die Prozess-ID der neuen Anwendungsinstanz
// CmdLine : Enthält Anwendungspfad sowie Startparameter
// Allow : Gibt an ob die Instanz gestartet werden
// soll. (Rückgabeparameter, Standard: False)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:08 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