starten von *.lnk aus Startmenu

  • Hiho...

    Hab mal wieder total nen Hänger.... ;(

    [autoit]

    #include <array .au3="">

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

    ; Das ist Original aus der Startleiste....
    $lnk = FileGetShortcut ( 'C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Microsoft Office\Microsoft Office PowerPoint 2007.lnk')
    _ArrayDisplay ($lnk) ;$lnk[0] = C:\WINDOWS\Installer\{90120000-0030-0000-0000-0000000FF1CE}\pptico.exe

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

    ShellExecute ($lnk[0])

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

    was mache ich daran falsch? Die lnk lässt sich auch nicht direckt mit shellexecute starten... :cursing:

    DANKE schonmal...

    EDIT: Es handelt sich hierbei um Office 2007

    MFG chris :!:

  • Hi,

    4 Threads unter dir ;)
    [ offen ] *.lnk Datei ausführen

    greetz

    Hehe... da haste genau das gleich aber ich habe das schon ausprobiert mit dem FileGetShortCut ... steht aber auch oben.... :sleeping:
    Ich bekomme nur leider einen Link raus der sich nicht starten lässt...

    Das lustige ist das das nur bei Microschuft Office so ist.... :cursing:
    aber bei dem was ich gerade am Proggen bin sind gerade so sachen wichtig.... ;(

    Naja vieleicht hat ja einer ne Ahnung...

    MFG chris :!:

  • Das ist bei manchen Installern der Fall. Die erstellen so komische Verknüpfungen, die über Event-Handler laufen. Nimm doch Shellexecute Damit sollten sich auch .lnk-Dateinen ausführen lassen :)

    Hier hab ich eien Funktion gebaut, die den Pfad von MSI Shortcuts zurückgibt: Pfad von MSI Verknüpfungen

    Einmal editiert, zuletzt von progandy (17. Februar 2008 um 12:20)

  • Hi,

    du hast auch oben shellexecute($lnk) gemacht, es muss aber heissen shellexecute($lnk[0]).
    Liegts nicht daran?

    greetz

    Ne das habe ich oben nur Falsch geschrieben... läuft leider noch nicht !! :S

    Das ist bei manchen Installern der Fall. Die erstellen so komische Verknüpfungen, die über Event-Handler laufen. Nimm doch Shellexecute Damit sollten sich auch .lnk-Dateinen ausführen lassen :)

    Hier hab ich eien Funktion gebaut, die den Pfad von MSI Shortcuts zurückgibt: Pfad von MSI Verknüpfungen

    Habe ich auch schon getestet...geht leider nicht .... :pinch:

    Das kann echt nicht sein oder bei allen anderen Programmen klappt das nur Microschuft Office nicht... :thumbdown:

    MFG chris

  • Daran liegts auch. Aber $lnk[0] ebthält hier den falschen Pfad.

    Hier mal ein Bsp, wie man die MSI-Pfade mit hineinebekommt:

    [autoit]

    Func _FileGetShortcutEx($link)
    $lnk = FileGetShortcut ($link )
    If @error Then Return SetError(1,0,0)
    $msitest = _MSIShortcutTarget($link)
    If Not @error Then $lnk[0] = $msitest
    Return $lnk
    EndFunc

    [/autoit]


    Natürlich braucht man wieder Pfad von MSI Verknüpfungen

    //Edit: So gehts auch:

    [autoit]

    Run('cmd /C "C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Microsoft Office\Microsoft Office PowerPoint 2003.lnk"',"",@SW_HIDE)

    [/autoit]

    Einmal editiert, zuletzt von progandy (17. Februar 2008 um 13:33)

  • DANKE@progandy

    Bist der Beste ^^ :P

    [autoit]


    #include <array .au3>
    #include '_MSIShortcut.au3'

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

    ; Das ist Original aus der Startleiste....
    $lnk = _FileGetShortcutEx( 'C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Microsoft Office\Microsoft Office PowerPoint 2007.lnk')
    _ArrayDisplay ($lnk)

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

    ShellExecute ($lnk[0])

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

    Func _FileGetShortcutEx($link)
    $lnk = FileGetShortcut ($link )
    If @error Then Return SetError(1,0,0)
    $msitest = _MSIShortcutTarget($link)
    If Not @error Then $lnk[0] = $msitest
    Return $lnk
    EndFunc

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

    MFG chris :!: