Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Laufendes Delphi-Programm per Maillink steuern (https://www.delphipraxis.net/188949-laufendes-delphi-programm-per-maillink-steuern.html)

norwegen60 21. Apr 2016 17:29

Laufendes Delphi-Programm per Maillink steuern
 
Hallo zusammen,

ich suche nach einer Möglichkeit in einem Mail ein Link zu definieren, der
  • mein Delphi Programm aufruft
  • die geeignete Anwendung in dem Programm (z.B. Dokumenten-Nr.-Verwaltung) aufruft
  • dieses auf den richtigen Datensatz setzt
Problemlos ist das, wenn die Anwendung noch nicht läuft. Wie aber bekomme ich es hin, wenn sie schon läuft und ich nicht eine zweite Instanz starten möchte.

Eine Möglichkeit wäre sicherlich meine Anwendung über ein zusätzliches Hilfsprogramm zu steuern. Gibt es aber eine Möglichkeit, da direkt was zu implementieren?

Grüße
Gerd

Der schöne Günther 21. Apr 2016 17:31

AW: Laufendes Delphi-Programm per Maillink steuern
 
Du meinst eine eigene URL? Wie bspw. "Http://" an deinen Standard-Browser geht und, als Beispiel, Skype sich ein "skype://" krallt?

Code:
dokumentVerwaltung://doc=4711;datensatz=35

Bambini 21. Apr 2016 17:49

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Zitat von norwegen60 (Beitrag 1336282)
Hallo zusammen,

ich suche nach einer Möglichkeit in einem Mail ein Link zu definieren, der
  • mein Delphi Programm aufruft
  • die geeignete Anwendung in dem Programm (z.B. Dokumenten-Nr.-Verwaltung) aufruft
  • dieses auf den richtigen Datensatz setzt
Problemlos ist das, wenn die Anwendung noch nicht läuft. Wie aber bekomme ich es hin, wenn sie schon läuft und ich nicht eine zweite Instanz starten möchte.

Eine Möglichkeit wäre sicherlich meine Anwendung über ein zusätzliches Hilfsprogramm zu steuern. Gibt es aber eine Möglichkeit, da direkt was zu implementieren?

Grüße
Gerd

Dazu im HKEY_CLASSES_ROOT\<deine Namespace>\Shell\Open\ddeexec eine DDE Verbindung angeben, die dein Programm mit dem TDDEServerConv dann entgegen nimmt.

rNoob 21. Apr 2016 20:16

AW: Laufendes Delphi-Programm per Maillink steuern
 
Mit ein paar Aufrufparametern und Sendmessage ist das kein Problem:
http://swissdelphicenter.com/de/showcode.php?id=163

Du rufst in der Mail deine Anwendung (zweite Instanz) mit Parametern auf.
In der DPR-Datei prüfst du auf Parameter und schickst sie per Sendmessage an die Anwendung (erste Instanz) und wertest sie dort aus.
Die zweite Instanz schickst du mit z.B. Halt() in Rente, bevor die DRP-Datei verlassen wird und die Anwendung (zweite Instanz) initialisiert wird.

himitsu 22. Apr 2016 10:10

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Halt()
Nein.

mquadrat 22. Apr 2016 11:08

AW: Laufendes Delphi-Programm per Maillink steuern
 
Ausführliche Beschreibung in MSDN https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Bambini 22. Apr 2016 11:24

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Zitat von mquadrat (Beitrag 1336332)

Das Starten des Programmes scheint Gerd wohl schon hinbekommen zu haben, jedoch möchte er verhindern das jeweils eine neue Instanz seines Programmes gestartet wird, wenn man nochmal auf einen Link klickt. Den Umweg über eine 2. Instanz die dann den Job an die 1. Instanz weiter gibt ist ein wenig aufwendig. genau für diesen Fall, sieht Windows es von sich aus schon vor, dies per DDE zu machen.
Windows versucht zuerst die DDEEXEC Verbindung auszuführen und wenn da keiner antwortet, wird die EXE gestartet.
Das Einfachste wäre, auf das DDE Kommando zu antwortet. Delphi hat dafür eine Komponente: TDDEServerConv.

rNoob 22. Apr 2016 12:37

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Zitat von himitsu (Beitrag 1336321)
Zitat:

Halt()
Nein.

Erläuterung warum?

himitsu 22. Apr 2016 14:10

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Zitat von rNoob (Beitrag 1336350)
Zitat:

Zitat von himitsu (Beitrag 1336321)
Zitat:

Halt()
Nein.

Erläuterung warum?

Delphi-Referenz durchsuchenSystem.Halt

ABNORMAL

rNoob 22. Apr 2016 14:34

AW: Laufendes Delphi-Programm per Maillink steuern
 
Hier wird u.a. auch Halt() benutzt:
http://www.delphipraxis.net/84451-mu...t-starten.html

himitsu 22. Apr 2016 15:31

AW: Laufendes Delphi-Programm per Maillink steuern
 
Das ist aber kein Grund selber sowas nach zu machen...

Wenn dein Nachbar von der Brücke springt, machst du das dann auch?

rNoob 22. Apr 2016 15:49

AW: Laufendes Delphi-Programm per Maillink steuern
 
Man sollte also besser Terminate nehmen?
Das stoppt aber nicht den Start der Anwendung an genau dieser Stelle wenn ich mich nicht irre.

BUG 22. Apr 2016 17:33

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Zitat von rNoob (Beitrag 1336372)
Das stoppt aber nicht den Start der Anwendung an genau dieser Stelle wenn ich mich nicht irre.

Das ist der Sinn der Übung: Das Programm kann sich sauber beenden. Wenn man die Überprüfung an der richtigen Stelle macht (zB. Projektdatei) sollte man ohne solche Krücken auskommen können.

rNoob 22. Apr 2016 20:33

AW: Laufendes Delphi-Programm per Maillink steuern
 
Als Überprüfung sollte eine Abfrage auf Application.Terminated reichen schätze ich oder nicht? Denn bei mir funktioniert es nicht :stupid:

norwegen60 14. Jun 2016 08:54

AW: Laufendes Delphi-Programm per Maillink steuern
 
Hallo,

ich war vorübergehend mit anderen Dingen beschäftigt und komme jetzt auf das Problem zurück.
2. Instanz: Ich hatte auch schon daran gedacht ein Hilfsprogramm zu starten (nicht 2. Instanz) das dann das Hauptprogramm steuert und dann wieder endet.
DDE : Bin nicht sicher, ob das noch zeitgemäß ist. Wie wirken sich die immer enger werdenden Sicherheitsmechanismen in Win aus?
COM : Habe ich schon eingesetzt, gab aber immer wieder mal Probleme nach einem Windows-Update (Sicherheitsmechanismen)
  • Wie sind die Erfahrungen?
  • Was würdet ihe bevorzugen?
  • Oder noch ganz andere Idee?

Danke
Gerd

Bambini 14. Jun 2016 09:26

AW: Laufendes Delphi-Programm per Maillink steuern
 
Zitat:

Zitat von norwegen60 (Beitrag 1340087)
Hallo,

ich war vorübergehend mit anderen Dingen beschäftigt und komme jetzt auf das Problem zurück.
2. Instanz: Ich hatte auch schon daran gedacht ein Hilfsprogramm zu starten (nicht 2. Instanz) das dann das Hauptprogramm steuert und dann wieder endet.
DDE : Bin nicht sicher, ob das noch zeitgemäß ist. Wie wirken sich die immer enger werdenden Sicherheitsmechanismen in Win aus?
Gerd

Das Windows (auch Windows 10) verwendet es seit Urzeiten:
https://msdn.microsoft.com/de-de/lib...v=vs.110).aspx
Daher spricht nix dagegen, zumal das seit Delphi 1.0 eine recht einfache Sache ist.

Zitat:

Zitat von norwegen60 (Beitrag 1340087)
COM : Habe ich schon eingesetzt, gab aber immer wieder mal Probleme nach einem Windows-Update (Sicherheitsmechanismen)

Hm, was genau klappte da nicht? Das Registrieren des COM Server macht Delphi ganz alleine, wenn die Application einmal Schreibrechte in HKLM hat.
Die Verwendung des COM Servers mit CreateOleObject, ist auch recht übersichtlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 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 by Thomas Breitkreuz