![]() |
aufrufen einer Funktion eines schon laufenden Programmes
Hallo,
ich habe eine Datei daten.xxx und wenn ich diese Anklicke soll ein bestimmtes Programm 'DatenRecherchieren.exe' aufgerufen werden und eine bestimmte Funktion aufgerufen werden. Das Programm läuft zu dem Zeitpunkt des Anklickens der Datei schon. Bisher wird dieses Programm noch einmal gestartet. Wie kann ich eine bestimmte Funktion aus einem Programm aufrufen, das schon läuft? Ich hoffe, ihr könnt mir weiterhelfen Gruss Susanne P.S.: Nützt mir dieser Teil in meinem Programm vielleicht?
Delphi-Quellcode:
Initialization
mHandle:=CreateMutex(nil,True,'Programmname'); if GetLastError=ERROR_ALREADY_EXISTS then Halt; finalization if mHandle<>0 then CloseHandle(mHandle) |
Re: aufrufen einer Funktion eines schon laufenden Programmes
Meinst Du so ähnlich wie z.B. bei Word?
Ein Word-Dokument öffnen startet Word, wenn Word schon gestartet ist, öffnet Word das Dokument. Das ist relativ einfach: Erstens muss Dein programm den Dateinamen als Parameter annehmen. Dann kannst Du eine Verknüpfung zwischen Deinem Dateityp und Deinem programm machen. Somit wird Dein programm schon geladen, wenn Du so eine Datei öffnest. Dann schau mal, wie man verhindern kann, das mehrere Instanzen eines Programmes laufen. An der Stelle wirds etwas tricky: Anstelle das Programm sofort zu schliessen wenn es schon läuft, musst Du dem anderen Programm eine Nachricht schicken (guck mal unter Sendmessage), und den Dateinamen an das bereits laufende Programm senden (dessen handle hast Du ja bereits vom gucken ob es schon läuft). Dann musst Du nur noch auf so eine Nachricht reagieren und dann die Datei öffnen. |
Re: aufrufen einer Funktion eines schon laufenden Programmes
Ich hab mal eine Komponente gemacht, die mehrere Instanzen verhindert und die Parameter an die erste Instanz übergibt. Ich kann sie dir schicken, wenn Du willst.
Gruss Shaman |
Re: aufrufen einer Funktion eines schon laufenden Programmes
Schick sie nicht, sondern poste sie besser hier.
|
Re: aufrufen einer Funktion eines schon laufenden Programmes
Stimmt, noch besser :wink: . Hab sie nur nicht bei mir. Werde sie wahrscheinlich am Abend reinstellen.
Gruss Shaman |
Re: aufrufen einer Funktion eines schon laufenden Programmes
Und wenn schon, dann bitte gleich in die CodeLib und hier einen Verweis reinsetzen :zwinker:
|
Re: aufrufen einer Funktion eines schon laufenden Programmes
das wäre ganz toll wenn du mir die Komponente geben würdest, egal ob gepostet oder gemailt, danke schon mal
Susanne und noch mal anders gefragt: wenn ich jetzt z.B. eine Fremde Anwendung habe, die läuft und diese soll für einen bestimmten Dateityp registriert sein. In meiner Dokumentation, dass die Endung zzz für die fremde Anwendung als dde-Server registriert wäre. Wenn ich nun die Datei per Doppelklick starte will, soll eine Recherche mit den in der Datei enthaltenen Daten durchgeführt werden. Mit rechtem Mausklick habe ich der Datei gesagt, sie soll mit der fremden Anwendung geöffnet werden. Eingeloggt habe ich mich schon als User und bekomme dann die Meldung, dass die Login-Komponente nicht reagieren würde, habe ich dann was falsch gemacht, oder liegt es am fremden Programm? |
Re: aufrufen einer Funktion eines schon laufenden Programmes
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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