Autor Beitrag
Blamaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164



BeitragVerfasst: Sa 24.05.08 10:36 
Hi,

ich habe gerade ein kleines Problem. Ich möchte in meinem Programm einer exe eine Datei die sie öffnen soll zuweisen.

Mit:
ausblenden Delphi-Quelltext
1:
ShellExecute(Handle,nil,PChar(PFAD ZUR/TEST.exe'),PChar(DATEINAME + '.ENDUNG'),nil,1);					


Das funktioniert soweit auch das Programm TEST.exe wird als aufgerufen und die Datei DATEINAME.ENDUNG wird geladen.
Wenn die TEST.exe allerdings bereits geöffnet ist funktioniert das ganze nicht mehr.

Hat jemand eine Idee wie ich auch während der Laufzeit des Programms TEST.exe Datein übergeben kann ?

Oder wenn das nicht gehen sollte müsste ich halt erst die TEST.exe killen und sie dann mit ShellExecute und den Parametern wieder aufrufen, aber wie kann man eine .exe killen. Über den Windownamen gehts nicht da dort nicht in jeder version der TEST.exe das gleiche steht.

mfg Blamaster
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 24.05.08 11:05 
user profile iconBlamaster hat folgendes geschrieben:
Hat jemand eine Idee wie ich auch während der Laufzeit des Programms TEST.exe Datein übergeben kann ?


Hallo!

Im Forum solltest du zu Interprozess-Kommunikation (englisch IPC abgekürzt) genügend Informationen finden. Named Pipes wären beispielsweise eine Möglichkeit.

AXMD
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.05.08 14:01 
user profile iconBlamaster hat folgendes geschrieben:
Hat jemand eine Idee wie ich auch während der Laufzeit des Programms TEST.exe Datein übergeben kann ?

Gar nicht. Die Exe überprüft beim Start, ob ihr Parameter übergeben wurden und das wars. Ist die Exe nicht von dir und ist die Exe nicht dafür ausgelegt zur Laufzeit Daten anzunehmen hast du keine Chance.
Blamaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164



BeitragVerfasst: Sa 24.05.08 22:48 
Jut so in der Richtung dachte ich mir das auch schon :)

Aber gibt es eine möglichkeit die TEST.exe direkt zu killen, ohne auf den Namen des Window zugreifen zu müssen ?

mfg Blamaster
Guenther A.
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 24.05.08 23:24 
Titel: Mehrfachstart?
Ich denke, dass Shellexecute ähnlich funktioniert wie ein Klick im Explorer o.ä. auf die Datei oder einen mit der Datei verknüpften Dateityp. Deine Text.exe müsste als mehrfachen Start erlauben. Bei mir sind Delphi-Programme immer automatisch mehrfach zu starten. Ich kenne aber Programme, die das abschalten. Meinem PDF-Reader kann ich jedenfalls von mehreren Programmen aus verschiedene PDFs zur Anzeige geben (nach Deinem Muster) und er wird einfach mehrfach gestartet.

Gruß Guenther
Blamaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164



BeitragVerfasst: So 25.05.08 11:38 
Danke geht jetzt doch soweit ganz gut.

Nur ein Problem habe ich noch:

Wenn die Datei die mit der exe geöffnet werden soll im selben Verzeichnis wie die exe liegt geht mit dem Code alles super:

ShellExecute(Handle,nil,PChar(Pfad zur Exe + '/EXENAME.exe'),PChar('DATEI.ENDUNG'),nil,1);

Wenn ich im selben Verzeichnis der Exe einen Ordner erstelle mal angenommen "Testordner", dann klappt es mit dem code:

ShellExecute(Handle,nil,PChar(Pfad zur Exe + '/EXENAME.exe'),PChar('TESTORDNER/DATEI.ENDUNG'),nil,1);

Wenn jetzt allerdings die Datei wo ganz anders liegt wie z.B. C:\Dokumente und Einstellungen\MeinBenutzer\Desktop\Test1\Test2 und ich es mit dem code versuche, öffnet das Programm die Datei nicht.

ShellExecute(Handle,nil,PChar(Pfad zur Exe + '/EXENAME.exe'),PChar('C:\Dokumente und Einstellungen\MeinBenutzer\Desktop\Test1\Test2/DATEI.ENDUNG'),nil,1);

Hat dafür noch jemand eine Lösung ?

mfg Blamaster
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 25.05.08 12:08 
user profile iconBlamaster hat folgendes geschrieben:
Aber gibt es eine möglichkeit die TEST.exe direkt zu killen, ohne auf den Namen des Window zugreifen zu müssen ?

Ich dachte du wolltest ihr zur Laufzeit Parameter übergeben?

Und mit deinen Pfaden: Gib mal absolute Pfade an. Wer weiß, wo zu deine Pfade relativ sind.
Blamaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164



BeitragVerfasst: So 25.05.08 13:42 
Jop funktioniert so auch während der Laufzeit :)

Aber das hier sollte doch eigentlich der absolute Pfad sein oder nicht ?

C:\Dokumente und Einstellungen\MeinBenutzer\Desktop\Test1\Test2/DATEI.ENDUNG

mfg Blamaster
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: So 25.05.08 13:49 
user profile iconBlamaster hat folgendes geschrieben:
C:\Dokumente und Einstellungen\MeinBenutzer\Desktop\Test1\Test2/DATEI.ENDUNG

Na, wo ist der Fehler in diesem Suchspiel? :wink:

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Blamaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 164



BeitragVerfasst: So 25.05.08 14:26 
Überhaupt nicht dran gedacht oO

Naja jetzt geht soweit alles.

mfg Blamaster