Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Anwendung mit Datei öffnen

Frage Entwicklung Visual Studio

Mitglied: ForgottenRealm

ForgottenRealm (Level 1) - Jetzt verbinden

17.10.2014, aktualisiert 20.10.2014, 2268 Aufrufe, 9 Kommentare

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!
Mitglied: SlainteMhath
17.10.2014 um 12:23 Uhr
Moin,

Google nach

"<von dir verwendete Programmiersprache> read Commandline"

lg,
Slainte
Bitte warten ..
Mitglied: ForgottenRealm
17.10.2014 um 12:55 Uhr
Moin,

An Parameter bzw Commandline habe ich auch schon gedacht, allerdings zeigt mir das Programm beim Start leider nichts an.

01.
    Dim CommandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = My.Application.CommandLineArgs 
02.
 
03.
    Private Sub frm_Start_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
04.
 
05.
        For i As Integer = 0 To CommandLineArgs.Count - 1 
06.
            MsgBox(CommandLineArgs(i)) 
07.
        Next 
08.
...
Mein Wunsch ist, dass wenn ich auf eine Datei klicke, das Programm geöffnet wird und die Datei die geöffnet wurde, als Variabel verwendet werden kann.
Ist die Commandline dafür denn überhaupt richtig?
Bitte warten ..
Mitglied: SlainteMhath
17.10.2014, aktualisiert um 13:19 Uhr
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.
01.
assoc | findstr (deine extension)
Ergebnis so was wie
.txt=txtfile

2.
01.
ftype | findstr txtfile
Ergbnis sowas wie
01.
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.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 17.10.2014, aktualisiert 20.10.2014
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:
rundll32.exe dfshim.dll, ShOpenVerbExtension {45366dfd-f8ef-439e-bf14-afaf3d125908} %1
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
01.
Dim args As String() = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData 
02.
If Not args Is Nothing Then 
03.
    For Each arg As String In args 
04.
        MsgBox(arg) 
05.
    Next 
06.
End If
Grüße Uwe
Bitte warten ..
Mitglied: miniversum
17.10.2014 um 14:26 Uhr
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
static void Main()
in
static 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)
Bitte warten ..
Mitglied: SlainteMhath
17.10.2014 um 14:31 Uhr
@miniversum
Er programmiert nicht in C# sondern VB ... :P
Bitte warten ..
Mitglied: colinardo
17.10.2014, aktualisiert um 14:45 Uhr
@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.
Bitte warten ..
Mitglied: ForgottenRealm
20.10.2014 um 08:22 Uhr
Guten Morgen !

Ich danke euch vielmals für die Hilfe, colinardo hatte wieder mal den richtigen Tipp für mich.

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?

Freundliche Grüße!
Bitte warten ..
Mitglied: colinardo
20.10.2014 um 10:18 Uhr
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 ...

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Netzwerkmanagement
gelöst Batch Datei auf anderem PC öffnen (35)

Frage von Flodsche zum Thema Netzwerkmanagement ...

Server-Hardware
Kann wav Datei im Handy nicht öffnen (2)

Frage von Chrisch zum Thema Server-Hardware ...

Visual Studio
Datei aus dem Web mit VisualBasic 6 öffnen (9)

Frage von SarekHL zum Thema Visual Studio ...

Java
gelöst Probleme beim öffnen von .jnlp-Datei (5)

Frage von Thomas91 zum Thema Java ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Firewall
Richtige Grundeinstellungen der Pfsense für mein Netzwerk (15)

Frage von Spitzbube zum Thema Firewall ...

Switche und Hubs
gelöst Cisco 2960x Stacking über mehrere Etagen (12)

Frage von b3scher zum Thema Switche und Hubs ...