LabVIEWForum.de
Zuordnung Dateinamenerweiterung zu einem Programm - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Application Builder (/Forum-Application-Builder)
+---- Thema: Zuordnung Dateinamenerweiterung zu einem Programm (/Thread-Zuordnung-Dateinamenerweiterung-zu-einem-Programm)



Zuordnung Dateinamenerweiterung zu einem Programm - Juscho - 06.05.2008 17:28

Hallo, wie kann man eine eigene Dateinamenerweiterung seinem Programm zuordnen?
Im Prinzip geht es um folgendes:

In einem LV-Programm lasse ich eine ZIP-Datei mit Messdaten erstellen.
Nun wärs natürlich schön wenn man diesem ZIP-Archiv eine eigene
Dateiendung verpasst, so dass beim Klick auf ein solches Archiv
mein LV-Programm gestartet wird, der die Dateien automatisch
lädt.

Zusammengefasst folgende Fragen:
1. Wie kann ich mit dem Applikationbuilder oder LV an sich, eine bestimmte Dateiendung registrieren, so dass mein LV Programm zum Öffnen dieser Dateien benutzt wird.
2. Angenommen die Registrierung unter (1) hat funktioniert, wie erhält das LV-Programm die Information, auf welche Datei jemand geklickt hat, so
dass ich intern in dem Programm damit arbeiten kann? Also womit fange ich den Übergabeparameter ab.

Gruß Jürgen


Zuordnung Dateinamenerweiterung zu einem Programm - Y-P - 06.05.2008 18:31

Hallo,

zuerst mal glaube ich nicht, dass so was geht, allerdings wundere ich mich auch, wieso Du das mit einer zip-Datei machen möchtest (musst?). Es gibt doch so viele Möglichkeiten wie Du Messwerte/Daten speichern kannst.
Wieso verwendest Du denn eine zip-Datei?
Und was für Daten sind das eigentlich? Lad' doch mal Dein VI hoch.

Gruß Markus

PS: Ich finde es klasse, dass Deine Zusammenfassung länger ist, als Deine Frage an sich. Big Grin


Zuordnung Dateinamenerweiterung zu einem Programm - Juscho - 06.05.2008 18:50

' schrieb:Hallo,

zuerst mal glaube ich nicht, dass so was geht, allerdings wundere ich mich auch, wieso Du das mit einer zip-Datei machen möchtest (musst?). Es gibt doch so viele Möglichkeiten wie Du Messwerte/Daten speichern kannst.
Wieso verwendest Du denn eine zip-Datei?
Und was für Daten sind das eigentlich? Lad' doch mal Dein VI hoch.

Gruß Markus

PS: Ich finde es klasse, dass Deine Zusammenfassung länger ist, als Deine Frage an sich. Big Grin

Stimmt ist mir garnich aufgefallen =)
Es müssen ZIP-Dateien sein, da darin enthalten sowohl Dateien mit Persönliche Daten (XML) und Messdaten (Rohdaten) befinden.
Jede Person hat eine eigene XML-Datei und jede Messung eine eigene Rohdatendatei.

Hab etwas gegoogelt und bin auf die Windows Registry gestoßen, dort kann man
eigenen File-Extensions eigene Programme zuordnen. Aber kein Beispiel hat bei mir
bisher funktioniert. Ich hab bisweilen immer HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.mpaket
editiert, wobei .mpaket meine eigene Datei-Extension ist. Falls jemand mal ein Beispiel hat
an dem man erkennen kann welche Schlüssel man setzen muss um
einer eigenen Dateinamenerweiterung ein Standardaufrufprogramm zu übergeben
und dabei 1 Parameter übergeben kann, bitte melden.


Zuordnung Dateinamenerweiterung zu einem Programm - rolfk - 06.05.2008 21:17

' schrieb:Stimmt ist mir garnich aufgefallen =)
Es müssen ZIP-Dateien sein, da darin enthalten sowohl Dateien mit Persönliche Daten (XML) und Messdaten (Rohdaten) befinden.
Jede Person hat eine eigene XML-Datei und jede Messung eine eigene Rohdatendatei.

Hab etwas gegoogelt und bin auf die Windows Registry gestoßen, dort kann man
eigenen File-Extensions eigene Programme zuordnen. Aber kein Beispiel hat bei mir
bisher funktioniert. Ich hab bisweilen immer HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.mpaket
editiert, wobei .mpaket meine eigene Datei-Extension ist. Falls jemand mal ein Beispiel hat
an dem man erkennen kann welche Schlüssel man setzen muss um
einer eigenen Dateinamenerweiterung ein Standardaufrufprogramm zu übergeben
und dabei 1 Parameter übergeben kann, bitte melden.

Das Ganze ist zwar in der Registry aber etwas komplizierter als Du denkst.

Also zuerst hast Du eine Extension Registrierung. Das geschiet in HKCR.<your extension>, Der Default Wert dieses Keys ist ein Name eines anderen Keys ebenfalls unter HKCR, dein Filetyp. In diesem Filetyp key kreierst Du einen weiteren Key mit dem Namen "Default Icon" Sein Wert ist der Pfad zu einer Icon Resource die Du von Explorer benützt sehen willst wenn er Dein File darstellt. In Deinem Filetyp kreierst Du noch einen "shell" Key, In diesem kreierst Du einen "open" Key, Darin noch einen "command" Key und der Wert dieses letzten ist die Commandline die Du gerne von Explorer ausgeführt haben möchtest wenn jemand Deinen File Typ doppelklickt. Der Wert sollte ungefähr so aussehen: "C:Program FilesYour ProgramYourApp.exe" "%1"

Dann musst Du in Deinem LabVIEW programm die Command Line abfragen (ein Applikationsproperty) und beim Builden Deiner Applikation noch die Checkbox anwählen, dass Command Line Parameters durchgegeben werden sollen.

Das einzige Problem ist dass dadurch die Applikation jedesmal aufgestartet wird auch wenn sie schon aktiv ist. Um das zu vermeiden müsste man auch noch DDE Support hinzufügen nur bietet die LabVIEW DDE Library keinen Support um Commands zu empfangen, nur Data Peek und Pokes. Und die Windows Shell sendet das DDE Kommando als Command.

Rolf Kalbermatter


Zuordnung Dateinamenerweiterung zu einem Programm - Y-P - 07.05.2008 07:14

Krass.:oWoher weiß man denn so was? Guru2

Gruß Markus

' schrieb:Das Ganze ist zwar in der Registry aber etwas komplizierter als Du denkst.

Also zuerst hast Du eine Extension Registrierung. Das geschiet in HKCR.<your extension>, Der Default Wert dieses Keys ist ein Name eines anderen Keys ebenfalls unter HKCR, dein Filetyp. In diesem Filetyp key kreierst Du einen weiteren Key mit dem Namen "Default Icon" Sein Wert ist der Pfad zu einer Icon Resource die Du von Explorer benützt sehen willst wenn er Dein File darstellt. In Deinem Filetyp kreierst Du noch einen "shell" Key, In diesem kreierst Du einen "open" Key, Darin noch einen "command" Key und der Wert dieses letzten ist die Commandline die Du gerne von Explorer ausgeführt haben möchtest wenn jemand Deinen File Typ doppelklickt. Der Wert sollte ungefähr so aussehen: "C:Program FilesYour ProgramYourApp.exe" "%1"

Dann musst Du in Deinem LabVIEW programm die Command Line abfragen (ein Applikationsproperty) und beim Builden Deiner Applikation noch die Checkbox anwählen, dass Command Line Parameters durchgegeben werden sollen.

Das einzige Problem ist dass dadurch die Applikation jedesmal aufgestartet wird auch wenn sie schon aktiv ist. Um das zu vermeiden müsste man auch noch DDE Support hinzufügen nur bietet die LabVIEW DDE Library keinen Support um Commands zu empfangen, nur Data Peek und Pokes. Und die Windows Shell sendet das DDE Kommando als Command.

Rolf Kalbermatter



Zuordnung Dateinamenerweiterung zu einem Programm - rolfk - 07.05.2008 16:05

' schrieb:Krass.:oWoher weiß man denn so was? Guru2

Gruß Markus

Ist oder war zumindest mal auf MSDN dokumentiert. Das Ganze stammt auch noch aus der guten alten Zeit des File Managers unter Windows 3.1 obwohl diese Filezuordnung damals noch im sytem.ini stand da die Registry noch nicht erfunden war.
Und ich habe mich mal ganz seriös damit rumgeschlagen als ich eine Windows Shell Extension programmierte um LabVIEW LLB Files als extra Directory Level in Explorer sichtbar zu machen. Hat die Leute von NI damals so erschreckt dass Sie in einer der nächsten Versionen von LabVIEW auch so eine Shell Extension hatten Cool

Ist aber inzwischen wieder aus LabVIEW raus und wird anstelle davon in den VI Library Manager umgelenkt der unter LabVIEW selbst läuft.

Aber wenn Du grundsätzlich mal weisst wo es ist lässt sich der ganze Rest recht einfach aus der Untersuchung von bestehenden Einträgen in der Registry deduzieren.

Rolf Kalbermatter