LabVIEWForum.de - Dateipfad der Exe durch Doppelklick übergeben

LabVIEWForum.de

Normale Version: Dateipfad der Exe durch Doppelklick übergeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LabVIEW-Forum,

ich habe ein Programm geschrieben, dass Daten aufzeichnen und in eine Datei mit individueller Dateierweiterung (bsp.: *.Test) schreibt. Wenn ich mein Programm starte, kann ich dann mittels Windows-Dialog (.NET - OpenFileDialog), den Pfad einer Datei auswählen und dann diese dann öffnen.

Ich möchte jetzt das durch Doppelklick auf einer dieser Dateien, diese dann automatisch reingeladen werden. (Das Öffnen des Programmes ist kein Problem.)
-> So wie man das ja auch von kommerziellen Programmen wie bsp. Excel her kennt.

Meine Frage ist, gibt es Möglichkeiten, dass mir der Pfad der Datei meinem Programm übergeben wird???

- Programm geschlossen: Der Pfad sollte das am besten in einer Variable stehen.
- Programm offen: Der Pfad sollte am besten durch ein Event übergeben werden.


Schonmal vielen Dank für Bemühungen.

MEng Thomas
Hallo Meng Thomas,

Zitat:Meine Frage ist, gibt es Möglichkeiten, dass mir der Pfad der Datei meinem Programm übergeben wird???
Dafür gibt es eine Property in der App-Klasse: CommandLineArguments!

Zitat:Programm geschlossen: Der Pfad sollte das am besten in einer Variable stehen.
Das Argument (Dateipfad) bekommst du über diese Property.

Zitat:Programm offen: Der Pfad sollte am besten durch ein Event übergeben werden.
Das klappt so nicht: Windows würde versuchen, eine neue Instanz deiner EXE zu starten - was per Default nicht geht.
Lösung: extra "Zwischen-EXE" programmieren, die das Argument entgegennimmt und damit entweder deine EXE neu startet oder einer schon laufenden den Parameter übermittelt…

Ansonsten: Profil_ergaenzen - was bitte ist eine LabVIEW-Version "201"?
Hallo GerdW

vielen danke für deine schnelle Antwort.

1. Jedoch habe das mit dem Property "Kommandozeilenargumente" ausprobiert. Leider steht im Array immer nur ein element mit dem Namen der Exe drin, egal ob ist die Exe direkt öffne oder es über eine Datei mit "Öffnen mit..." bzw. Doppelklick die Exe öffne.

2. Wenn das Programm offen und im Hintergrund ist und ich dann Doppelklick auf eine Datei mache, wird das Programm automatisch wieder ausgewählt und in den Vordergrund geholt.
Hallo MEng Thomas,

1. Hast du die Übergabe der CommandLineArgs beim Erstellen der EXE aktiviert?

2. Standardverhalten unter Windows: Wenn du eine EXE (nochmal) startest, wird sie in den Vordergrund geholt…
Offtopic2
(21.07.2016 11:57 )MEng Thomas schrieb: [ -> ]ich habe ein Programm geschrieben, dass Daten aufzeichnen und in eine Datei mit individueller Dateierweiterung (bsp.: *.Test) schreibt. Wenn ich mein Programm starte, kann ich dann mittels Windows-Dialog (.NET - OpenFileDialog), den Pfad einer Datei auswählen und dann diese dann öffnen.
Du weißt aber schon, dass auch LabVIEW einen Dateidialog anbietet?!

Gruß, Jens
Hallo GerdW

1. Vielen Dank ich habe wirklich die Aktivierung der Kommandozeilenargumente beim Bauen der Exe vergessen.

(21.07.2016 12:12 )GerdW schrieb: [ -> ]Lösung: extra "Zwischen-EXE" programmieren, die das Argument entgegennimmt und damit entweder deine EXE neu startet oder einer schon laufenden den Parameter übermittelt…
2. Wie hast du das genau gemeint, hast du dafür vielleicht ein Beispiel?


Hallo jg

(21.07.2016 12:43 )jg schrieb: [ -> ]Du weißt aber schon, dass auch LabVIEW einen Dateidialog anbietet?!
das wusste ich bis jetzt noch nicht, kenne nur die LabVIEW-PopUps, die aber nicht so besonders aussehen und ich daher auch dort die von Windows nehme. Bin auch mit denen von Windows auch soweit zufrieden.

Aber wo finde ich diesen LabVIEW Dateidialog?
Hallo MEng,

Zitat:wo finde ich diesen LabVIEW Dateidialog?
Da, wo alle Funktionen zu finden sind, die mit Dateien zu tun haben? In der Datei-Funktionspalette???

zu 2.
Man erstellt eine kleine Mini-EXE, die nur das CommandLineArg entgegennimmt. Dieses "schaut" dann nach, ob die eigentliche EXE schon läuft: falls NEIN, wird die EXE gestartet. Falls JA, wird der EXE das CommandLineArg per UDP/TCP/sonstwie Netzwerk übermittelt…
Hallo GerdW

vielen Dank für deine Lösung!!!

Der LabVIEW-Dateidialog ist aber genau der gleiche wie der Windows-Dialog über (.NET - OpenFileDialog).
(21.07.2016 13:24 )MEng Thomas schrieb: [ -> ]Der LabVIEW-Dateidialog ist aber genau der gleiche wie der Windows-Dialog über (.NET - OpenFileDialog).
Genau (man kann/konnte es auch umstellen) - deshalb kann man sich das mit .NET ja auch schenken. Smile
Wobei ich nicht unterschlagen will, dass der Aufruf über .NET ein paar nette zusätzliche Möglichkeiten ermöglicht.

Gruß, Jens
Referenz-URLs