eintrag beim "rechtsklickmenü" von datein hinzufügen

  • hi leute....
    wenn man einen rechtsklick auf eine datei macht, dann wird in der regel ein menü ausgeklappt :) meine frage ist nun wie ich selber dort ein eintrag in das menü schreiben kann und bei einem klick auf meinen eintrag eben ein bestimmte aktion ausgeführt wird? :) da programme wie 7zip auch solche einträge hinzufügen denke ich mal, dass das auch i-wie mit autoit möglich sein wird :) allerdings habe ich keinen ahnung wie...noch nicht einmal einen ansatz :( kann mir einer helfen? :)

  • Hi,
    eine weitere Möglichkeit wäre, dein Programm in den "Send to" Ordner zu legen, es erscheint dann automatisch als Ziel im Kontextmenü unter "Senden an..."
    Das macht vor allem bei Dateioperationen Sinn, da man die so übergebenen Dateien einfach im AutoItscript per

    [autoit]

    $CMDLINE[]

    [/autoit]

    auswerten kann.
    Auf diese Art könne aber nur bis zu 63 Dateien gleichzeitig übergeben werden (Win32).

    • Offizieller Beitrag

    Das macht vor allem bei Dateioperationen Sinn, da man die so übergebenen Dateien einfach im AutoItscript per $CMDLINE[]  auswerten kann.


    Genau zu diesem Zweck erfolgt der Eintrag: RegWrite($sKey, '', 'REG_SZ', $newProgramPath & " %1")
    %1 steht hier für die übergebenen Parameter, sprich die/den markierte(n) Datei(en)/Ordner im Explorer.

  • Das "Rechtsklickmenü" nennt sich Kontextmenü.

    ja ich mir ist der name nicht dafür eingefallen :D aber offenbar wussten ja alle was gemeint war :)

    $sKey = 'HKEY_CLASSES_ROOT\Folder\shell\' & $newProgramName
    RegWrite($sKey)
    $sKey = 'HKEY_CLASSES_ROOT\Folder\shell\' & $newProgramName & '\command'
    RegWrite($sKey)
    RegWrite($sKey, '', 'REG_SZ', $newProgramPath & " %1")

    Danke :) aber das betrifft doch jetzt nur das kontextmenü von ordner...was muss ich ändern damit es das kontextmenü von files betrifft? einfach "Folder" durch "Files" ersetzten?? :)


    gut zu wissen :) allerdings habe ich mit "$CMDLINE[]" noch nie gearbeitet und weiß auch nicht wie das geht ;)

  • Um den Eintrag für alle Dateien zum erstellen, reicht diese Zeile:

    [autoit]

    RegWrite("HKEY_CLASSES_ROOT\*\shell\TestAutoItScript\command","","REG_SZ",'"' & @ScriptDir & "\Script.exe" & '" "%1"')

    [/autoit]

    Ein Problem gibt es, wenn man mehrere Dateien auf einmal selektiert hat - dann wird für jede Datei eine eigene Instanz der Exe gestartet.
    Wenn man das nicht will, dann hab ich hier eine Lösung: Prog übergibt Parameter an seine 1 Instanz (mehrere Dateien via Kontext-Menü)

    E

  • hi,

    Zitat

    gut zu wissen allerdings habe ich mit "$CMDLINE[]" noch nie gearbeitet und weiß auch nicht wie das geht

    Spoiler anzeigen
    [autoit]

    If $cmdline[0] = 0 Then;keine Dateien ausgewählt
    $dateien="Es wurden keine Dateien markiert!"
    Else
    $dateien = ""
    For $i = 1 To $cmdline[0]
    $dateien &= $cmdline[$i] & @CRLF;alle ausgewählten Dateien anzeigen
    Next
    EndIf
    MsgBox(0, "cmdline[] test", $dateien)

    [/autoit]


    Script zu einer EXE compilieren und diese EXE in das Verzeichnis "Send To" kopieren.
    Im Explorer einige Dateien markieren und im Kontextmenü bei "Senden an" die EXE auswählen.