Problem mit IconDock

  • Tag ,
    ich habe ein Problem mit einem Script.
    Beim Klick auf das Icon sollte eigendlich eine Messagebox erscheinen doch das tut sie nicht :o

    Hier das Script zum download:
    http://www.workupload.com/file/LFHQLeG

  • kannst du es einfach nicht als

    [autoit]

    SCRIPT

    [/autoit]


    posten
    "[autoit]" script "[autoit]" syntax (ohne Anführungszeichen)
    ich meine keiner lädt sich unbekannte Sachen gern auf den Rechner

    :thumbup:

  • kurz aus den Beispielen "umgebaut":

    Spoiler anzeigen
    [autoit]


    #include "IconDock.au3"
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Global $iWidth = 800
    Global $iHeight = 200
    Global $iIconSizeMin = 64
    Global $iIconSizeMax = 128

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

    Global $aIcon[8] = [7]
    $aIcon[1] = @WindowsDir & "\explorer.exe"
    $aIcon[2] = @SystemDir & "\taskmgr.exe"
    $aIcon[3] = @SystemDir & "\write.exe"
    $aIcon[4] = @SystemDir & "\notepad.exe"
    $aIcon[5] = @SystemDir & "\osk.exe"
    $aIcon[6] = @SystemDir & "\charmap.exe"
    $aIcon[7] = @SystemDir & "\mspaint.exe"

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

    Opt("GUIOnEventMode", 1)

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

    Global $hGui = GUICreate("Resize window", $iWidth, $iHeight, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    Global $hIconDock = _IconDock_Create(0, 0, $iWidth, $iHeight, _
    BitOR($IconDock_Align_Horizontal, $IconDock_Center), $IconDock_Up, $iIconSizeMin, $iIconSizeMax, True, $hGui)

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

    _IconDock_SetOffset($hIconDock, 10)

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

    GUISetState()

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

    _IconDock_BeginUpdate($hIconDock)
    ;~ For $i = 1 To $aIcon[0]
    $TEst = _IconDock_IconAddFile($hIconDock, $aIcon[1], 0, "_Test", $IconDock_LBUTTONUP)
    ;GUIctrlSetOnEvent($TEst, "_Test")
    ;~ Next
    _IconDock_EndUpdate($hIconDock)
    ConsoleWrite(@CRLF & "> Resize window" & @CRLF)

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

    GUIRegisterMsg($WM_SIZE, "WM_SIZE")
    GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")

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

    While 1
    Sleep(50)
    WEnd

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

    Func _Test($hID, $iIconIndex, $iEventMsg)
    Switch $hID
    Case $hIconDock
    ;ConsoleWrite("+ Icondock 1 - Index of active icon: " & $iIconIndex & @CRLF)
    Switch $iEventMsg
    Case $IconDock_LBUTTONUP
    MsgBox(0,"","a")
    EndSwitch
    EndSwitch
    EndFunc

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

    Func WM_SIZE($hWnd, $Msg, $wParam, $lParam)
    Switch $hWnd
    Case $hGui
    Local $tRect = _WinAPI_GetClientRect($hWnd)

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

    Local $iX = DllStructGetData($tRect, 1)
    Local $iY = DllStructGetData($tRect, 2)
    Local $iW = DllStructGetData($tRect, 3)
    Local $iH = DllStructGetData($tRect, 4)

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

    _IconDock_SetPos($hIconDock, $iX, $iY, $iW, $iH)
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_SIZE

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

    Func WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam)
    Local $MinMax = DllStructCreate("int ptReserved[2]; int ptMaxSize[2]; int ptMaxPosition[2]; int ptMinTrackSize[2]; int ptMaxTrackSize[2];", $lParam)
    DllStructSetData($MinMax, 4, $iIconSizeMin*3, 1)
    DllStructSetData($MinMax, 4, $iIconSizeMax+$iIconSizeMin, 2)
    DllStructSetData($MinMax, 5, 1000, 1)
    DllStructSetData($MinMax, 5, 800, 2)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_GETMINMAXINFO

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

    Func _Exit()
    _IconDock_Destroy($hIconDock)
    Exit
    EndFunc ;==>_Exit

    [/autoit]
  • Da hat bobekos absolut recht....

    Hier ein Lösungsbeispiel:
    _IconDock_IconAddFile($hIconDock, $aIcon[1], 0, "_EventFunction", $IconDock_LBUTTONUP) ; neuer Aufruf zur Msgbox
    und dann noch die Funktion Func _EventFunction($hID, $iIconIndex, $iEventMsg) einfügen.

    Kommt das Deinen Vorstellungen nahe?


    [autoit]

    #include "IconDock.au3"
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Global $iWidth = 800
    Global $iHeight = 200
    Global $iIconSizeMin = 64
    Global $iIconSizeMax = 128

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

    Global $aIcon[8] = [7]
    $aIcon[1] = @WindowsDir & "\explorer.exe"
    $aIcon[2] = @SystemDir & "\taskmgr.exe"
    $aIcon[3] = @SystemDir & "\write.exe"
    $aIcon[4] = @SystemDir & "\notepad.exe"
    $aIcon[5] = @SystemDir & "\osk.exe"
    $aIcon[6] = @SystemDir & "\charmap.exe"
    $aIcon[7] = @SystemDir & "\mspaint.exe"

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

    Opt("GUIOnEventMode", 1)

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

    Global $hGui = GUICreate("Resize window", $iWidth, $iHeight, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    Global $hIconDock = _IconDock_Create(0, 0, $iWidth, $iHeight, _
    BitOR($IconDock_Align_Horizontal, $IconDock_Center), $IconDock_Up, $iIconSizeMin, $iIconSizeMax, True, $hGui)

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

    _IconDock_SetOffset($hIconDock, 10)

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

    GUISetState()

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

    _IconDock_BeginUpdate($hIconDock)
    ;~ For $i = 1 To $aIcon[0]
    ;$TEst = _IconDock_IconAddFile($hIconDock, $aIcon[1])
    ;GUIctrlSetOnEvent($TEst, "_Test")
    _IconDock_IconAddFile($hIconDock, $aIcon[1], 0, "_EventFunction", $IconDock_LBUTTONUP) ; neuer Aufruf zur Msgbox
    ;~ Next
    _IconDock_EndUpdate($hIconDock)
    ConsoleWrite(@CRLF & "> Resize window" & @CRLF)

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

    GUIRegisterMsg($WM_SIZE, "WM_SIZE")
    GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")

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

    While 1
    Sleep(50)
    WEnd

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

    Func _EventFunction($hID, $iIconIndex, $iEventMsg) ; funktion zur Abfrage des Icon
    Switch $hID
    Case $hIconDock
    Switch $iIconIndex
    Case 1
    MsgBox(0,"Icon gewählt","...hier bin ich ")

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

    EndSwitch
    EndSwitch
    EndFunc ;==>_EventFunction

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

    Func _Test()
    MsgBox(0,"eins","zwei, drei")
    EndFunc

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

    Func WM_SIZE($hWnd, $Msg, $wParam, $lParam)
    Switch $hWnd
    Case $hGui
    Local $tRect = _WinAPI_GetClientRect($hWnd)

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

    Local $iX = DllStructGetData($tRect, 1)
    Local $iY = DllStructGetData($tRect, 2)
    Local $iW = DllStructGetData($tRect, 3)
    Local $iH = DllStructGetData($tRect, 4)

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

    _IconDock_SetPos($hIconDock, $iX, $iY, $iW, $iH)
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_SIZE

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

    Func WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam)
    Local $MinMax = DllStructCreate("int ptReserved[2]; int ptMaxSize[2]; int ptMaxPosition[2]; int ptMinTrackSize[2]; int ptMaxTrackSize[2];", $lParam)
    DllStructSetData($MinMax, 4, $iIconSizeMin*3, 1)
    DllStructSetData($MinMax, 4, $iIconSizeMax+$iIconSizeMin, 2)
    DllStructSetData($MinMax, 5, 1000, 1)
    DllStructSetData($MinMax, 5, 800, 2)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_GETMINMAXINFO

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

    Func _Exit()
    _IconDock_Destroy($hIconDock)
    Exit
    EndFunc ;==>_Exit

    [/autoit]