Dateien per Kontextmenü (Windows-Explorer) öffnen.

  • Hallo zusammen,

    ich habe schon im Internet (Google) geschaut wie man solche Kontextmenü Einträge hinzufügt. Nur habe ich ein Problem mit meinem Editor.
    Der Kontextmenüeintrag sieht folgendermaßen aus:

    Schlüssel: HKEY_CLASSES_ROOT\txtfile\shell\Editor\command
    Wert: C:\editor.exe

    Und hier der AutoI- Code:

    [autoit]

    If $cmdline[0] <> 0 Then ;Falls ein Parameter (Pfad) besteht, wird dieser Pfad in der nächsten Zeile zugwiesen.
    Global $filename = $cmdline[1] ; Hier wird der Pfad zu der Datei zugewiesen.
    _open_cmd()
    Else

    [/autoit]

    Wenn ich eine Text-Datei über das Programm ziehe (Drag&Drop) dann wird ja automatisch von Windows als 1. Parameter der Pfad der geöffneten Datei angegeben. Wie bekomme ich es aber hin, dass er mit den Pfad der geöffneten Datei angibt, wenn ich eine Datei über den Kontextmenü (Rechtslick) öffne?

    MfG

    MehmeX

    2 Mal editiert, zuletzt von MehmeX (20. Juli 2009 um 17:06)

  • Das Kommando ist so aufgebaut: ( %1 steht für die ausgewählte Datei)

    Code
    "C:\DeinSkript.exe" "%1"
  • Das habe ich auch gelesen und ausprobiert, habe es aber irgendwie nicht hinbekommen. Kannst du mir ein Beispiel schreiben, wie ich das auslesen könnte? Wäre echt nett, danke.

  • Schau dir einfach das Kommaando hier an:

    Code
    HKEY_CLASSES_ROOT\txtfile\shell\open\command


    Und testcode für AutoIt:

    [autoit]

    If $CMDLINE[0] Then MsgBox( 0, "", $CMDLINE[1] )

    [/autoit]
  • Hey Leute,

    ich habe den vorherigen Beitrag gelöscht, da es sonst schon ein dreifach-Post wäre. :P
    Ich habe noch ein Problem, und zwar mit dem Pfad zur Datei, die ich über den Kontextmenü vom Windows Explorer öffnen möchte. Der Pfad wird immer nur bis zum Leerzeichen abgerufen, z.B. bei C:\Dokumente und Einstellungen...,. Habt Ihr da eine Lösung für mich? Wäre echt SUPER! DANKE!

    2 Mal editiert, zuletzt von MehmeX (25. Juli 2009 um 20:14)

  • Pfade mit Leerzeichen müssen in Anführungszeichen übergeben werden.
    Wenn Du für den ÜbergabeString schon die " " " verwendest, dann nimm für den Pfad die einfachen " ' "

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Wo meinst du? Im Registry oder bei der Übergabe von $cmdline?
    In der Registry habe ich es folgendermaßen eingetragen. Hier ein Beispiel:

    [autoit]

    RegWrite("HKEY_CLASSES_ROOT\txtfile\shell\MainProgramm\command", "", "REG_SZ", '"' & @ScriptFullPath & '" "%1"')

    [/autoit]

    Und in bei $cmdline so. Hier auch ein Beispiel:

    [autoit]


    If $cmdline[0] > 0 Then
    $file = $cmdline[1] ;Hier wird der Pfad eingetragen, bzw. es soll hier den Pfad eintragen.
    EndIf

    [/autoit]

    EDIT:// Hat sich erledigt. Das eigentliche Problem war der falsche Registry Eintrag, auf dem Notebook meiner Freundin. Denn sie hatte noch den alten Registry Eintrag, wo es noch nicht funktionierte. Da war der Eintrag in der Registry so geschrieben, hier als Beispiel:

    "C:\Programme\Test\Testprogramm.exe" %1.

    Da haben die Anführungzeichen bei dem %1 gefehlt. Ich habe mir schon gedacht, denn ich habe bei meinem aktuellen Programm alle mit Anführungszeichen gesetzt, den Pfad und das %1. Also so, Beispiel:

    "C:\Programme\Test\Testprogramm.exe" "%1".

    Ich habe es herausgefunden, in dem ich dann in die Registry reingeschaut habe. :D :)

    5 Mal editiert, zuletzt von MehmeX (25. Juli 2009 um 20:52)