Anwendung mit Datei öffnen
Hallo und moinmoin!
Ich habe eine Anwendung erstellt, für die ich Dateien mit einer bestimmten Erweiterung verwende.
Nun ist es ja möglich, in den Projekteigenschaften vom VS2013 unter Veröffentlichen > Optionen > Dateizuordnung den gewünschten Dateityp hinzuzufügen.
Dies funktioniert auch bestens, die Dateien werden dem installierten Programm zugewiesen. Jetzt möchte ich aber noch wissen, welche Datei (=Pfad der Datei) das Programm gestartet hat, wenn ich die Datei z.B. auf dem Desktop angeklickt habe.
Wie komme ich im Programm an diese Datei?
Hoffentlich versteht ihr, was ich meine
Für Google gingen mir so langsam die Suchmöglichkeiten aus, weil ich selber keine Ahnung habe, nach was ich da suchen soll ...
Freundliche Grüße und ein schönes Wochenende!
Ich habe eine Anwendung erstellt, für die ich Dateien mit einer bestimmten Erweiterung verwende.
Nun ist es ja möglich, in den Projekteigenschaften vom VS2013 unter Veröffentlichen > Optionen > Dateizuordnung den gewünschten Dateityp hinzuzufügen.
Dies funktioniert auch bestens, die Dateien werden dem installierten Programm zugewiesen. Jetzt möchte ich aber noch wissen, welche Datei (=Pfad der Datei) das Programm gestartet hat, wenn ich die Datei z.B. auf dem Desktop angeklickt habe.
Wie komme ich im Programm an diese Datei?
Hoffentlich versteht ihr, was ich meine
Für Google gingen mir so langsam die Suchmöglichkeiten aus, weil ich selber keine Ahnung habe, nach was ich da suchen soll ...
Freundliche Grüße und ein schönes Wochenende!
Please also mark the comments that contributed to the solution of the article
Content-ID: 252293
Url: https://administrator.de/contentid/252293
Printed on: December 12, 2024 at 20:12 o'clock
9 Comments
Latest comment
Ist die Commandline dafür denn überhaupt richtig?
Ja ist sie.Schau mal am Command Prompt nach ob dein Programm richtig verknüpft ist:
1.
assoc | findstr (deine extension)
Ergebnis so was wie
.txt=txtfile
2.
ftype | findstr txtfile
Ergbnis sowas wie
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
Das ist die Kommandozeile die aufgerufen wird, %1 wird dabei durch die Datei inkl. kompl. Pfad ersetzt auf die Doppelgeklickt wurde. Ggfs. kannst du mit FTYPE und ASSOC auch die Verknüpfung Extension -> Programm selber konfigurieren.
Moin,
du baust hier eine ClickOnce-Applikation keine "normale" Anwendung in diesem Sinne.
Normalerweise macht man sowas richtig mit einem Installer-Projekt das die Zuordnung der Dateierweiterung übernimmt, dann funktioniert das so wie du es oben im Code machst.
In deinem Fall musst du es über einen Workaround machen, da der Aufruf deiner Applikationen über die Dateierweiterung anders geschieht.
So sieht das aus wie deine Dateierweiterung mit deiner Anwendung im System von dem Click-Once Installer verknüpft wird:
Deswegen geht es mit den normalen Methoden zum Überprüfen der Parameter hier nicht !
Für den Workaround siehe:
http://developingfor.net/2010/06/23/processing-command-line-arguments-i ...
In VB.Net sieht das dann so aus
Grüße Uwe
du baust hier eine ClickOnce-Applikation keine "normale" Anwendung in diesem Sinne.
Normalerweise macht man sowas richtig mit einem Installer-Projekt das die Zuordnung der Dateierweiterung übernimmt, dann funktioniert das so wie du es oben im Code machst.
In deinem Fall musst du es über einen Workaround machen, da der Aufruf deiner Applikationen über die Dateierweiterung anders geschieht.
So sieht das aus wie deine Dateierweiterung mit deiner Anwendung im System von dem Click-Once Installer verknüpft wird:
rundll32.exe dfshim.dll, ShOpenVerbExtension {45366dfd-f8ef-439e-bf14-afaf3d125908} %1
Für den Workaround siehe:
http://developingfor.net/2010/06/23/processing-command-line-arguments-i ...
In VB.Net sieht das dann so aus
Dim args As String() = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
If Not args Is Nothing Then
For Each arg As String In args
MsgBox(arg)
Next
End If
Hallo
Du hast zwei Möglichkeiten:
1. Du rufst die Übergabeparameter in der Program.cs direkt über die Main ab. Dazu musst du die Main funktion von
2. Du kannst die Parameter auch über
Diese Möglichkeit bietet den Vorteil das du sie an einer belibigen Stelle im Code verwenden kannst (muss nicht in der Program.cs sein)
Du hast zwei Möglichkeiten:
1. Du rufst die Übergabeparameter in der Program.cs direkt über die Main ab. Dazu musst du die Main funktion von
static void Main()
instatic void Main(string args)
2. Du kannst die Parameter auch über
string CommandLineArgs = Environment.GetCommandLineArgs();
in ein Array übernehmen. Die Elemente des Arrays kannst du dann auswerten.Diese Möglichkeit bietet den Vorteil das du sie an einer belibigen Stelle im Code verwenden kannst (muss nicht in der Program.cs sein)
@miniversum
Er programmiert nicht in C# sondern VB ... :P
Er programmiert nicht in C# sondern VB ... :P
@miniversum
und wie gesagt, nutzen einem die normalen Methoden hier nicht, da es sich so wie der TO beschreiben hat um eine Click-Once Anwendung handelt, welche er mit der Deploy-Methode von Visual Studio veröffentlicht.
Dazu müsste er die App kompilieren und über ein Installer-Projekt(welches die Dateierweiterung setzt) verteilen, ohne die integrierte Deploy-Funktion von VS zu nutzen. Dann wäre es nämlich eine klassische Anwendung, mit der die normalen Methoden zum Abfragen der Parameter wieder funktionieren.
und wie gesagt, nutzen einem die normalen Methoden hier nicht, da es sich so wie der TO beschreiben hat um eine Click-Once Anwendung handelt, welche er mit der Deploy-Methode von Visual Studio veröffentlicht.
Dazu müsste er die App kompilieren und über ein Installer-Projekt(welches die Dateierweiterung setzt) verteilen, ohne die integrierte Deploy-Funktion von VS zu nutzen. Dann wäre es nämlich eine klassische Anwendung, mit der die normalen Methoden zum Abfragen der Parameter wieder funktionieren.
Zitat von @ForgottenRealm:
Gibt es auch eine Möglichkeit, eine Datei an das Programm zu "übergeben" (= Doppelklick auf die Datei,
Programm öffnet sich, Funktion zeigt Name der Datei an), wenn ich das Projekt über VS starte (Debuggen), oder muss ich
es wirklich jedes Mal erst exportieren, installieren und testen?
https://social.msdn.microsoft.com/Forums/vstudio/en-US/ff3cda97-8772-4a6 ...Gibt es auch eine Möglichkeit, eine Datei an das Programm zu "übergeben" (= Doppelklick auf die Datei,
Programm öffnet sich, Funktion zeigt Name der Datei an), wenn ich das Projekt über VS starte (Debuggen), oder muss ich
es wirklich jedes Mal erst exportieren, installieren und testen?
Grüße Uwe