Entwickler-Ecke
Dateizugriff - Installshield, Programmstart bei bestimmter Dateiendung
colaka - Mo 03.01.11 11:31
Titel: Installshield, Programmstart bei bestimmter Dateiendung
Hallo,
ich habe mir einen kleinen Editor geschrieben, den ich in Zukunft für *.txt, *.ini und *.php -Dateien verwenden möchte. Das Öffnen der genannten Dateien vom Programm aus funktioniert natürlich, aber ich möchte auch, daß sich statt des Windows-Editors nun der neue Editor öffnet, wenn ich auf eine Datei mit der entsprechenden Endung klicke. Deshalb habe ich mir mit Installshield ein Setup eingerichtet, wo ich solche Dateiverknüpfungen festlegen kann. Das habe ich jetzt soweit geschafft, daß der Editor startet, wenn ich auf eine *.txt-Datei klicke, aber nicht mehr. Es sollte halt im Editor dann auch noch die angeklickte Datei geöffnet werden.
Im Installshield habe ich bei den txt-Optionen noch die Möglichkeit, einen Befehl und ein Argument einzutragen. Doch was soll ich da eingeben?
Kann mir das jemand sagen?
Danke Ebi
Moderiert von
Narses: Topic aus Programmierwerkzeuge verschoben am Mo 03.01.2011 um 12:35
jaenicke - Mo 03.01.11 11:56
Nun, ich würde vorschlagen der Befehl ist das zu startende Programm, also deins. Und was du als Parameter erwartest, musst du doch selbst wissen. :gruebel:
colaka - Mo 03.01.11 12:42
Hallo,
ich kann mit der Antwort leider nicht viel anfangen. Der Editor startet ja bereits, wenn ich auf eine *.txt-Datei klicke, aber sie öffnet sich nicht. Ich brauche so eine Art Variable, die den Namen der angeklickten Datei an das Programm übergibt und dann das Programm dazu bringt, die Datei zu öffnen. Im Programm verwende ich dafür einen TOpenDialog.
Vielleicht könntest Du mir ein kleines Beispiel nennen.
Danke Ebi
Stundenplan - Mo 03.01.11 12:51
Moin,
mit ParamStr() kannst du die Kommandozeilenparameter auslesen, in so einem steht auch der Dateiname. Wenn du es nicht anders festgelegt hast, in ParamStr(1).
Viele Grüße,
Stundenplan.
jaenicke - Mo 03.01.11 13:39
Meinst du vielleicht das "%1", das du auch in der Registry sofort bei den bereits eingetragenen Dateierweiterungen findest? Darin steht dann von Windows aus der Dateiname.
Stundenplan - Sa 08.01.11 10:59
Ja, genau das meinte ich! :wink:
@colaka: Bei deinem Setup solltest du dort, wo du die Dateivernüpfungen eintragen kannst, nicht nur den Dateinamen zu deinem Programm festlegen, sondern dahinter auch ein "%1", also "C:\Wohinauchimmer.exe" "%1".
Dann startet Windows dein Programm, allerdings mit einem Parameter, nämlich dem Dateinamen (%1 ersetzt er durch diesen). Den kannst du dann in deinem Programm mit ParamStr(1) auslesen.
Viele Grüße,
Stundenplan.
colaka - Sa 08.01.11 13:45
Hallo,
zunächst mal vielen Dank für Eure Bemühungen.
Ich habe das jetzt soweit geschafft, daß mein Editor die *.txt-Datei öffnet, wenn sie sich auf C: oder in einem direkten Unterverzeichnis davon (also z.B. C:\Temp) befindet.
Wenn sich die *.txt-Datei dagegen im Ordner "Eigene Dateien" oder im Anwendungsdatenordner befindet, wird zwar der Editor aufgerufen, allerdings ohne die angeklickte Datei zu öffnen.
Den Editor installiere ich jetzt mit Hilfe von Installshield. Dort habe ich bei den Verknüpfungen als Argument %1 eingetragen, was aber offenbar keinerlei Auswirkung hat. Außerdem habe ich bei den Dateierweiterungen unter txt sowohl beim Befehl wie auch bei den Argumenten %1 eingetragen, was aber ebenfalls keinerlei sichtbaren Unterschied zeigt. Den Dateinamen selbst kann man leider nicht editieren, sondern nur aus einer DropDown-Liste auswählen.
Danke Ebi
Stundenplan - Sa 08.01.11 14:26
Du musst um das %1 noch Anführungsstriche ("%1") setzen, denn Leerzeichen (Eigene Dateien) gelten bei Kommandozeilenparametern als Begrenzer! :idea:
colaka - Sa 08.01.11 14:41
Ja danke,
das wars.
Gruß Ebi
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!