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, 2033 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Basic
gelöst Mit Visual Basic Batch Datei öffnen (26)

Frage von Flodsche zum Thema Basic ...

Netzwerkmanagement
gelöst Batch Datei auf anderem PC öffnen (35)

Frage von Flodsche zum Thema Netzwerkmanagement ...

C und C++
gelöst In einer Windows Form Anwendung per Button eine Datei kopieren (4)

Frage von Knuefi zum Thema C und C ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...