An Startmenü anheften

  • Unter

    [ gelöst ] Namen einer exe datei gehen

    habe ich dieses Programm gefunden, mit welchem man eine .exe an das Startmenü anheften kann.

    Mit "Explorer.exe" und "Notepad.exe" klppt das auch prima.

    Aber wenn ich mein eigens Programm xxx.exe anheften will kommt:

    The requested action with this object has failed.:
    $oVerbs = $oItem.Verbs
    $oVerbs = $oItem.Verbs^ ERROR
    >Exit code: 1


    Wie muss ich es richtig anstellen?

    [autoit]


    ;$sProgramname = "Explorer.exe"
    ;$sProgramname = "Notepad.exe"
    $sProgramname = "D:\Arbdat\xxx.exe"
    $sKontext = "An Startmenü anheften"
    ;$sKontext = "Vom Startmenü lösen"
    ;$sKontext = "Eigenschaften"
    $oShell = ObjCreate("Shell.Application")
    $oFolder = $oShell.NameSpace(@WindowsDir)
    $oItem = $oFolder.ParseName($sProgramname)
    $oVerbs = $oItem.Verbs
    For $verb In $oVerbs
    $verbname = StringReplace($verb.name, "&", "")
    ;ConsoleWrite($verbname) ; Hier kannst du alle Kontexteinträge in die Konsole schreiben lassen. Nicht nötig fürs Programm
    If $verbname = $sKontext Then
    $verb.DoIt
    EndIf
    Next

    [/autoit]

    Einmal editiert, zuletzt von DOheim (1. März 2013 um 19:39)

  • Hi,

    Du verwendest immer noch @WindowsDir als Dateipfad. Das entspricht C:\WINDOWS

    daran hängst du dann den Dateipfad D:\Arbdat\ was heißt das das Script deine datei unter C:\WINDOWSD:\Arbdat\ sucht.

    Diesen Pfad gibt es logischerweiße nicht

    Probier mal das:

    [autoit]


    ;$sProgramname = "Explorer.exe"
    ;$sProgramname = "Notepad.exe"
    $sProgramname = "xxx.exe"
    $sKontext = "An Startmenü anheften"
    ;$sKontext = "Vom Startmenü lösen"
    ;$sKontext = "Eigenschaften"
    $oShell = ObjCreate("Shell.Application")
    $oFolder = $oShell.NameSpace("D:\Arbdat\")
    $oItem = $oFolder.ParseName($sProgramname)
    $oVerbs = $oItem.Verbs
    For $verb In $oVerbs
    $verbname = StringReplace($verb.name, "&", "")
    ;ConsoleWrite($verbname) ; Hier kannst du alle Kontexteinträge in die Konsole schreiben lassen. Nicht nötig fürs Programm
    If $verbname = $sKontext Then
    $verb.DoIt
    EndIf
    Next

    [/autoit]

    Gruß Inferior

  • Vielen Dank für Deine Antwort!
    Dein Vorschlag klappt dann, wenn ich die xxx.exe in das Verzeichnis C:\Windows kopiere.
    Wie könnte man denn das Programm veranlassen, in einem anderen Verzeichnis zu suchen?

  • Ich habe es eben manchmal schwer "mit dem Kapieren."

    Eben erst habe ich bemerkt, dass Du ja auch die Zeile

    [autoit]

    $oFolder = $oShell.NameSpace("D:\Arbdat\")

    [/autoit]

    in dem Programm verändert hattest. Ich habe nun ("D:\Arbdat\") in
    ("D:\Arbdat\#Test\") gerändert. 

    Und nun klappt es perfekt! 

    Recht herzlichen Dank!