Ein Programm in das Kontexmneü intigrieren

  • Also dafür muss ich wenig mehr erzählen.

    Jeder kennt ja wenn man irgendwo auf eine leere Stelle in einen Ordner etc klickt das Kontextmenü mit den Untermenü "Neuer Ordner"

    Wenn man Draufklickt kommt eben ein neuer Ordner mit einen Standard Namen (dieser steht in der shell32.dll)

    Aber irgendwie muss er ja erstellt werden..., dort will ich die wineigende Funktion durch ein selbstgeschriebenes Programm ersetzen

    Dazu gibt es 2 Probleme:
    1. ich weiß nicht wie und wo diese Funktion aufgerufen wird
    2.==soll mein Programm statt den Normalen Namen einfach einen Ordner mit den Aktuellen Datum und Uhrzeit erstellen

    Problem ist eben, wie erzähle ich den Programm wo dieser Ordner erstellt werden soll?

    Wenn das so nicht geht, noch eine Idee

    Diese Funktion könnte man ja auch im Hauptkontextmenü einbinden, aber selber Problem, woher weiß das Programm wo ich dieses Ordner haben möchte?

    Ich hoffe mir kann jemand helfen.

  • Ich habe hier einen Bastel-Ersatz, der erstaunlich gut funktioniert! :D

    [autoit]

    HotKeySet("!q", "Ende")

    [/autoit][autoit][/autoit][autoit]

    While 1
    $var = WinList()
    For $i = 1 to $var[0][0]
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) And StringInStr(WinGetText($var[$i][0]),"FolderView") Then
    $text = WinGetText($var[$i][0],"FolderView")
    If StringInStr($text,"Neuer Ordner",1) Then Send(@YEAR&@MON&@MDAY&"_"&@HOUR&@MIN&@SEC)
    EndIf
    Next
    Sleep(200)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func Ende()
    Exit
    EndFunc

    [/autoit]
  • hui, das ist auch eine Möglichkeit!

    Das hilft erstmal :)

    Kann man es so anpassen das man es startet (Über Kontextmenü, kann man ja so einrichten)
    es über normalen Modus einen "Neuen Ordner" erstellt (Ohne Dircreate) dieser wird umbenannt ind das Programm beendet sich
    Damit könnte man CPU Last herabsetzten (sonst verbraucht das Programm zb 8%CPu Leistung)

    Aber ich glaube das es nicht möglich ist, mir ist zumindest keine Funktion bekannt die das erreicht ?(

    Einmal editiert, zuletzt von devildevil3 (26. September 2008 um 19:45)

  • In der Registry stehen alle Kontextmenüeinträge, sowohl zu allen möglichen Dateinamenserweiterungen als auch für Ordner. Muss du einmal googeln. Da ich da aber nur durch Zufall (von einem interessantem Link zum anderen) drauf gekommen bin und das auch schon etwas her ist, kann ich dir leider keine Suchbegriffe bzw. Links oder gar gleich die Schlüssel sagen.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • In der Registry stehen alle Kontextmenüeinträge, sowohl zu allen möglichen Dateinamenserweiterungen als auch für Ordner. Muss du einmal googeln. Da ich da aber nur durch Zufall (von einem interessantem Link zum anderen) drauf gekommen bin und das auch schon etwas her ist, kann ich dir leider keine Suchbegriffe bzw. Links oder gar gleich die Schlüssel sagen.

    Das ist richtig, Problem an der Sache ist das es so einfach leider nicht ist
    Aus einen anderen Board

    Zitat von _muetze

    Das ist etwas schwieriger.

    Für Dateien(HKEY_CLASSES_ROOT\->Dateierweiterung<-) oder Ordner(HKEY_CLASSES_ROOT\Folder) ist es vergleichsweise simpel einen Eintrag in das Kontextmenü zu schreiben (Stichwort: ShellNew). Für den, ich nenne ihn mal, "freien Raum" ist das nur in verbindung mit einem ContextMenuHandler möglich, weil in dem Fall (HKEY_CLASSES_ROOT\Directory\Background) eben dieses "ShellNew" nicht möglich ist. Microsoft hat sich sicher etwas dabei gedacht, was weiß ich zwar auch nicht aber naja.

    Fakt ist, dass im Schlüssel (HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers) ein gültiger, registrierter Handler eingetragen werden muss der das Kontext-Menü bereitstellt.

    Warum das Rad neu erfinden
    Tipp eines Users

    bxNewFolder runterladen und installieren

    Freeware
    Website: http://www.baxbex.com/products.html
    Direktlink: http://www.baxbex.com/files/bxnewfolder.exe


    damit hat man dann per Hotkey F12 im Windows Explorer die Möglichkeit einen neuen Ordner zu erstellen ...


    F12 -> wenn das Menü aufpoppt -> Mausrad nach unten scrollen -> Enter

    Einmal editiert, zuletzt von devildevil3 (27. September 2008 um 11:31)

  • Hm...

    vermutlich verstehe ich das Problem nicht so ganz... aber eventuell kann ich zur Lösung beitragen (aus dem Grund glaube ich, nicht alles verstanden zu haben. *fg) Es gibt von Lopesoft http://www.lopesoft.com/en/index.html das Programm "FileMenu Tools". Mit dem ist es sehr einfach, unter anderem .exe und .bat Dateien in das Kontextmenü einzubinden. Die meisten meiner Scripte sind darüber eingebunden und funktionieren einwandfrei. (Vielleicht hilfts...)

    Liebe Grüße,
    Reinhold.