Datei an Programm übergeben
lima-city → Forum → Programmiersprachen → Basic
aktion
angegeben danke
anwendung
argument
auslese
buchen
code
dank
datei
erfordert drei
ersten parameter
funktioniert einwandfrei echt danke
information
parameter
programm
schnelle hilfe
string
texteditor
verb
weiterer code
-
Hi Leute,
Ich arbeite mit VB.NET 9.0.
Ich habe mein Programm mit dem Dateityp \".asd\" asoziiert.
Wenn ich jetzt auf eine datei wie zb test.asd doppelklicke wird mein Programm gestartet. Nur wie erfahre ich jetzt im Programm welche datei das war. Also dass ich zb diese Datei dann wie in einem Texteditor öffnen und auslesen kann.
Danke schonmal für eure Hilfe, MFG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Grüß Dich,
schaue Dir mal die My.Application.CommandLineArgs Property an.
Ist eine (nullbasierte) ReadOnlyCollection(Of String).
Also solltest Du mit folgendem Code
Dim s As String Dim CmdLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String) CmdLineArgs = My.Application.CommandLineArgs s = CmdLineArgs(0)
in s den Dateinamen haben.
So kannstDu irgendwo in Deinem Programm auf die Kommandozeilenargumente zugreifen.
Wenn Du diese direkt beim Programmaufruf benötigst kannst Du natürlich die Sub Main dementsprechend deklarieren. Also z.B. so:
Public Sub Main(ByVal cmdArgs() As String)
und Du hast nun ein StringArray mit den Argumenten.
BG, Felix -misterdemeanor-
Beitrag geändert: 25.5.2008 22:43:56 von misterdemeanor -
Danke für die schnelle antwort, nur leider hatte ich diese Idee auch schon. Ich habe es nochmal mit deinem Code versucht. Leider wirft mir das Programm aber einen Fehler aus. Scheinbar werden keine Parameter übergeben. Wenn ich das Programm mit Parametern starte funkt es perfekt, nur wenn ich die Datei doppelklicke und dann das Programm geöffnet wird werden scheinbar keine Parameter übergeben.
-
Also die beste Lösung ist es, eine Sub Main() zu verwenden, die als Startprozedur der Anwendung festgelegt ist:
Public Sub Main(ByVal Args() As String) \' Weiterer Code... End Sub
Um einen Dateitypen für dein Programm erfolgreich zu registrieren, musst du folgende Informationen in die Registry eintragen:
Name (Der Name des Dokumenttyps)
Extensions (Die verknüpften Dateinamenserweiterungen)
Command (Das Programm, das für diesen Dateitypen registriert werden soll)
Description (Die Beschreibung für den Dateityp)
Icon (Das Dateisymbol)
Anschließend musst du die unterstützten Aktionen für den Dateityp festlegen. Jede Aktion erfordert drei weitere Informationen:
Name (Der Name der Aktion, der z.B. im Kontextmenü erscheint)
Arguments (Befehlszeilenargumente, die an die Anwendung übergeben werden. %1 übergibt den Dateinamen)
Verb (Zeigt den Aktionstyp an, zum Beispiel \"open\" oder \"print\")
Und so, wie du dein Problem schilderst, fehlt wohl bei Arguments das %1.
Achja, wie das alles genau funktioniert kannst du in diesem Buch nachlesen:
http://www.edv-buchversand.de/mspress-edvbv/productinfo.asp?&cnt=productinfo&id=ms-092&type=0&lng=0
Beitrag geändert: 26.5.2008 16:59:40 von cbhp -
Wenn du Sub Main() aktivierst, funktioniert der Application Framework nicht mehr. Einfacher wäre es, wenn du die Funktion Environment.GetCommandLineArgs() benutzt.
Dim str As String = Environment.GetCommandLineArgs(0) \' str ist dann ein String-Array \' str(0) beinhaltet dann den ersten Parameter \' str(1) den zweiten \' usw...
Ryan
Beitrag geändert: 26.5.2008 17:08:02 von ryanblack -
Ja ich hatte wirklich das %1 nicht angegeben, danke für die schnelle HIlfe. Ich habe jetzt alles geändert und es funktioniert einwandfrei, echt danke an alle die geantwortet haben
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage