Probleme mit der MondernMenu UDF

  • Hallo zusammmen,

    ich würde gerne die ModernMenu UDF aus dem englischen Forum benutzen.
    Wenn man z.B. das Beispielskript direkt ausführt (per Doppelklick im Windows-Explorer), funktioniert alles wie gewünscht. Wenn man das Skript allerdings aus SciTe ausführt, öffnet SciTe immer die MondernMenuRaw.au3 und spuckt die Fehlermeldung "previously declared as a Const aus", obwohl mit dieser Zeile in der ModernMenuRaw.au3

    AutoIt
    If Not IsDeclared("WM_MOUSEMOVE") Then Global Const $WM_MOUSEMOVE = 0x0200

    ja eigentlich abgefragt wird, ob in diesem Fall $WM_MOUSEMOVE schon deklariert ist.
    Ist da ein Fehler im Skript oder liegt es an SciTe?
    Bzw. wie kann ich die Fehlermeldung unterdrücken?

    Weiß da jemand von euch Bescheid?
    Vielen Dank

    Hier noch das Testskript:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    ;#include "ModernMenu.au3"
    #include "ModernMenuRaw.au3" ; Only unknown constants are declared here

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

    #NoTrayIcon

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

    $hMainGUI= GUICreate("Sample Menu")

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

    ;$bUseAdvMenu= TRUE ; Global variable to switch on/off advanced menu, default is TRUE
    ;$bUseAdvTrayMenu = TRUE ; Global variable to switch on/off advanced tray menu, default is TRUE
    ;$bUseRGBColors= FALSE; Global variable to change color mode, set TRUE to use RGB color values, default is FALSE

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

    ; Set default color values - BGR-values!
    SetGreenMenuColors()
    SetBlueTrayColors()
    ;SetOLBlueColors() ; near blue outlook 2003 style
    ;SetOLSilverColors() ; near silver outlook 2003 style

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

    ; Set flash timeout for tray flashing icons (milliseconds) - default are 750, minimum is 50
    _SetFlashTimeOut(250)
    ; _SetFlashTimeOut() - set back to default

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

    ; To activate flashing use _TrayIconSetState($ID, 4)
    ; To dactivate flashing use _TrayIconSetState($ID, 8)

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

    ; !!! To delete menu items please use:
    ; _TrayDeleteItem($nID)
    ; or
    ; _GUICtrlODMenuItemDelete($nID)
    ; !!!

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

    ; File-Menu
    $FileMenu= GUICtrlCreateMenu("&File")
    $nSideItem1= _CreateSideMenu($FileMenu)
    _SetSideMenuText($nSideItem1, "My File Menu")
    _SetSideMenuColor($nSideItem1, 0xFFFFFF) ; default color - white
    _SetSideMenuBkColor($nSideItem1, 0x921801) ; bottom start color - dark blue
    _SetSideMenuBkGradColor($nSideItem1, 0xFBCE92) ; top end color - light blue

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

    ; You can also set a side menu bitmap
    ; !Must be min. 8bppand "bmp"-format
    ; Samples:
    ; _SetSideMenuImage($nSideItem1, @ScriptDir & "\test.bmp")
    ; _SetSideMenuImage($nSideItem1, "test.exe", 178) ; Load the bitmap resource ordinal number 178 from 'test.exe'
    ; _SetSideMenuImage($nSideItem1, "mydll.dll", "#120") ; Load the bitmap resource with name '120' from 'mydll.dll'

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

    $OpenItem= _GUICtrlCreateODMenuItem("&Open..." & @Tab & "Ctrl+O", $FileMenu)
    _GUICtrlODMenuItemSetIcon(-1, "shell32.dll", -4)
    _GUICtrlODMenuItemSetSelIcon(-1, "shell32.dll", -5)
    $SaveItem= _GUICtrlCreateODMenuItem("&Save" & @Tab & "Ctrl+S", $FileMenu, "shell32.dll", -7)
    _GUICtrlODMenuItemSetSelIcon(-1, "shell32.dll", -79)
    _GUICtrlCreateODMenuItem("", $FileMenu) ; Separator
    $RecentMenu= _GUICtrlCreateODMenu("Recent Files", $FileMenu)
    _GUICtrlCreateODMenuItem("", $FileMenu) ; Separator
    $ExitItem= _GUICtrlCreateODMenuItem("E&xit", $FileMenu, "shell32.dll", -28)

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

    ; Tools-Menu
    $ToolsMenu= GUICtrlCreateMenu("&Tools")
    $CalcItem= _GUICtrlCreateODMenuItem("Calculator", $ToolsMenu, "calc.exe", 0)
    $CmdItem= _GUICtrlCreateODMenuItem("CMD", $ToolsMenu, "cmd.exe", 0)
    $EditorItem= _GUICtrlCreateODMenuItem("Editor", $ToolsMenu, "notepad.exe", 0)
    $RegeditItem = _GUICtrlCreateODMenuItem("Regedit", $ToolsMenu, "regedit.exe", 0)

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

    ; View-Menu
    $ViewMenu= GUICtrlCreateMenu("&View")
    $ViewColorMenu = _GUICtrlCreateODMenu("Menu Colors", $ViewMenu, "mspaint.exe", 0)
    $nSideItem2= _CreateSideMenu($ViewColorMenu)
    _SetSideMenuText($nSideItem2, "Choose a color")
    _SetSideMenuColor($nSideItem2, 0x00FFFF)
    _SetSideMenuBkColor($nSideItem2, 0xD00000)

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

    $SetDefClrItem = _GUICtrlCreateODMenuItem("Default", $ViewColorMenu, "", 0, 1)
    _GUICtrlCreateODMenuItem("", $ViewColorMenu) ; Separator
    $SetRedClrItem = _GUICtrlCreateODMenuItem("Red", $ViewColorMenu, "", 0, 1)
    $SetGrnClrItem = _GUICtrlCreateODMenuItem("Green", $ViewColorMenu, "", 0, 1)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $SetBlueClrItem = _GUICtrlCreateODMenuItem("Blue", $ViewColorMenu, "", 0, 1)
    _GUICtrlCreateODMenuItem("", $ViewColorMenu) ; Separator
    $SetOLBlueItem = _GUICtrlCreateODMenuItem("Outlook-Blue", $ViewColorMenu, "", 0, 1)
    $SetOLSlvItem = _GUICtrlCreateODMenuItem("Outlook-Silver", $ViewColorMenu, "", 0, 1)
    $ViewStateItem = _GUICtrlCreateODMenuItem("Enable Config", $ViewMenu)
    GUICtrlSetState(-1, $GUI_CHECKED)

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

    ; Help-Menu
    $HelpMenu= GUICtrlCreateMenu("&?")
    $HelpItem= _GUICtrlCreateODMenuItem("Help Topics" & @Tab & "F1", $HelpMenu, "shell32.dll", -24)
    _GUICtrlCreateODMenuItem("", $HelpMenu) ; Separator
    $AboutItem= _GUICtrlCreateODMenuItem("About...", $HelpMenu)

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

    ; You can also the same things on context menus
    $GUIContextMenu = GUICtrlCreateContextMenu(-1)
    $ConAboutItem = _GUICtrlCreateODMenuItem("About...", $GUIContextMenu, "explorer.exe", -8)
    _GUICtrlCreateODMenuItem("", $GUIContextMenu) ; Separator
    $ConExitItem = _GUICtrlCreateODMenuItem("Exit", $GUIContextMenu, "shell32.dll", -28)

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

    GUICtrlCreateButton("Test", 100, 200, 70, 20)
    GUISetState()

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

    ; *** Create the tray icon ***
    $nTrayIcon1= _TrayIconCreate("Tools", "shell32.dll", -13)
    _TrayIconSetClick(-1, 16)
    _TrayIconSetState() ; Show the tray icon

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

    ; *** Create the tray context menu ***
    $nTrayMenu1= _TrayCreateContextMenu() ; is the same like _TrayCreateContextMenu(-1) or _TrayCreateContextMenu($nTrayIcon1)
    $nSideItem3= _CreateSideMenu($nTrayMenu1)
    _SetSideMenuText($nSideItem3, "My Tray Menu")
    _SetSideMenuColor($nSideItem3, 0x00FFFF) ; yellow; default color - white
    _SetSideMenuBkColor($nSideItem3, 0x802222) ; bottom start color - dark blue
    _SetSideMenuBkGradColor($nSideItem3, 0x4477AA) ; top end color - orange
    ;_SetSideMenuImage($nSideItem3, "shell32.dll", 309, TRUE)

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

    $MenuMenu= _TrayCreateMenu("Menu") ; is the same like _TrayCreateMenu("Menu", -1) or _TrayCreateMenu("Menu", $nTrayMenu1)
    _TrayCreateItem("")
    _TrayItemSetIcon(-1, "", 0)
    $MenuDrives= _TrayCreateMenu("Driveinfo")
    _TrayCreateItem("")
    _TrayItemSetIcon(-1, "", 0); Force changing to ownerdrawn sometimes needed, i.e. in mixed menu
    $MenuTools= _TrayCreateMenu("Tools")
    _TrayCreateItem("")
    _TrayItemSetIcon(-1, "", 0)
    $TrayHelp= _TrayCreateItem("Help")
    $TrayRun= _TrayCreateItem("Run...")
    _TrayCreateItem("")
    _TrayItemSetIcon(-1, "", 0)
    $TrayExit= _TrayCreateItem("Exit")

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

    _TrayItemSetIcon($MenuMenu, "", 0)
    _TrayItemSetIcon($MenuDrives, "shell32.dll", -9)
    _TrayItemSetIcon($MenuTools, "shell32.dll", -20)
    _TrayItemSetSelIcon($MenuTools, "shell32.dll", -44)
    _TrayItemSetIcon($TrayHelp, "shell32.dll", -24)
    _TrayItemSetIcon($TrayRun, "shell32.dll", -25)
    _TrayItemSetIcon($TrayExit, "shell32.dll", -28)

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

    GUICtrlSetState($TrayHelp, $GUI_DEFBUTTON)

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

    ; *** Sub menu items ***
    $TrayAdvanced = _TrayCreateItem("Modern", $MenuMenu, -1, 1)
    $TraySimple= _TrayCreateItem("Classic", $MenuMenu, -1, 1)

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

    _TrayItemSetIcon($TrayAdvanced, "", 0)
    _TrayItemSetIcon($TraySimple, "", 0)

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

    GUICtrlSetState($TrayAdvanced, $GUI_CHECKED)

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

    $TrayCalc= _TrayCreateItem("Calculator", $MenuTools)
    $TrayCMD= _TrayCreateItem("CMD", $MenuTools)
    $TrayNotepad = _TrayCreateItem("Notepad", $MenuTools)
    $TrayRegedit = _TrayCreateItem("Regedit", $MenuTools)

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

    _TrayItemSetIcon($TrayCalc, "calc.exe", 0)
    _TrayItemSetIcon($TrayCMD, "cmd.exe", 0)
    _TrayItemSetIcon($TrayNotepad, "notepad.exe", 0)
    _TrayItemSetIcon($TrayRegedit, "regedit.exe", 0)

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

    GUICtrlSetState($TrayNotepad, $GUI_DISABLE)

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

    _TrayCreateItem("Free Space:", $MenuDrives)
    _TrayCreateItem("", $MenuDrives)

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

    $arDrives = DriveGetDrive("FIXED")
    For $i = 1 To $arDrives[0]
    _TrayCreateItem(StringUpper($arDrives[$i]) & " -> " & _
    StringFormat("%.2f GB", DriveSpaceFree($arDrives[$i])), $MenuDrives)
    Next

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

    ; WM_MEASUREITEM and WM_DRAWITEM are registered in
    ; "ModernMenu.au3" so they don"t need to registered here
    ; Also OnAutoItExit() is in "ModernMenu.au3" to cleanup the
    ; menu imagelist and font

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

    Dim $nTrayIcon2 = 0

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

    ; Create an icon which demonstrates how to use click event - see the function 'MyTrayTipCallBack'
    Dim $nTrayIcon3 = _TrayIconCreate("Click me", "shell32.dll", -16, "MyTrayTipCallBack")
    _TrayIconSetState()

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

    ; Main GUI Loop

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

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE, $ExitItem, $ConExitItem, $TrayExit
    ExitLoop

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

    Case $AboutItem, $ConAboutItem
    Msgbox(64, "About", "Menu color sample by Holger Kotsch")
    _GUICtrlODMenuItemSetText($OpenItem, "Open thisone or not..." & @Tab & "Ctrl+O")
    _GUICtrlODMenuItemSetText($ConAboutItem, "About this demo")

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

    Case $ViewStateItem
    If BitAnd(GUICtrlRead($ViewStateItem), $GUI_CHECKED) Then
    GUICtrlSetState($ViewStateItem, $GUI_UNCHECKED)
    GUICtrlSetState($ViewColorMenu, $GUI_DISABLE)
    Else
    GUICtrlSetState($ViewStateItem, $GUI_CHECKED)
    GUICtrlSetState($ViewColorMenu, $GUI_ENABLE)
    EndIf

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

    Case $SetDefClrItem
    SetCheckedItem($SetDefClrItem)
    SetDefaultMenuColors()

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

    Case $SetRedClrItem
    SetCheckedItem($SetRedClrItem)
    SetRedMenuColors()

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

    Case $SetGrnClrItem
    SetCheckedItem($SetGrnClrItem)
    SetGreenMenuColors()

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

    Case $SetBlueClrItem
    SetCheckedItem($SetBlueClrItem)
    SetBlueMenuColors()

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

    Case $SetOLBlueItem
    SetCheckedItem($SetOLBlueItem)
    SetOLBlueColors()

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

    Case $SetOLSlvItem
    SetCheckedItem($SetOLSlvItem)
    SetOLSilverColors()

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

    Case $TrayAdvanced, $TraySimple
    If BitAnd(GUICtrlRead($TraySimple), $GUI_CHECKED) Then
    GUICtrlSetState($TraySimple, $GUI_UNCHECKED)
    GUICtrlSetState($TrayAdvanced, $GUI_CHECKED)
    $bUseAdvTrayMenu = TRUE
    Else
    GUICtrlSetState($TraySimple, $GUI_CHECKED)
    GUICtrlSetState($TrayAdvanced, $GUI_UNCHECKED)
    $bUseAdvTrayMenu = FALSE
    EndIf

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

    Case $TrayHelp
    If $nTrayIcon2 = 0 Then
    $nTrayIcon2 = _TrayIconCreate("New message", "shell32.dll", -14, "MyTrayTipCallBack")
    _TrayIconSetState(-1, 5) ; Show icon and start flashing -> 1 + 4
    Else
    _TrayIconSetState($nTrayIcon2, 5) ; Show icon and start flashing -> 1 + 4
    EndIf

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

    _TrayTip($nTrayIcon2, "New message", "A new message has arrived." & @CRLF & "Please click here to read...", 15, $NIIF_INFO)
    EndSwitch
    WEnd

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

    _TrayIconDelete($nTrayIcon1)
    _TrayIconDelete($nTrayIcon3)

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

    If $nTrayIcon2 > 0 Then _TrayIconDelete($nTrayIcon2)

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

    Exit

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

    Func MyTrayTipCallBack($nID, $nMsg)
    Switch $nID
    Case $nTrayIcon2
    Switch $nMsg
    Case $NIN_BALLOONUSERCLICK, $NIN_BALLOONTIMEOUT
    _TrayIconSetState($nTrayIcon2, 8) ; Stop icon flashing
    If $nMsg = $NIN_BALLOONUSERCLICK Then MsgBox(64, "Information", "This could be your message.")
    _TrayIconSetState($nTrayIcon2, 2) ; Hide icon
    EndSwitch

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

    Case $nTrayIcon3
    Switch $nMsg
    ;;; Case $WM_LBUTTONDOWN
    ; Put your stuff here
    ;;; case $WM_LBUTTONUP
    ; Put your stuff here ; One click and double click to put together is difficult
    case $WM_LBUTTONDBLCLK
    MsgBox(0, "Info", "You left double clicked on TrayIcon3.")
    GUISetState(@SW_RESTORE, $hMainGUI) ; Restore/put focus back to our main GUI
    ;;; case $WM_RBUTTONDOWN
    ; Put your stuff here
    case $WM_RBUTTONUP
    MsgBox(0, "Info", "You right clicked on TrayIcon3.")
    GUISetState(@SW_RESTORE, $hMainGUI) ; Restore/put focus back to our main GUI
    ;;; case $WM_RBUTTONDBLCLK
    ; Put your stuff here
    ;;; case $WM_MOUSEMOVE
    ; Put your stuff here
    EndSwitch
    EndSwitch
    EndFunc

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

    Func SetCheckedItem($DefaultItem)
    GUICtrlSetState($SetDefClrItem, $GUI_UNCHECKED)
    GUICtrlSetState($SetRedClrItem, $GUI_UNCHECKED)
    GUICtrlSetState($SetGrnClrItem, $GUI_UNCHECKED)
    GUICtrlSetState($SetBlueClrItem, $GUI_UNCHECKED)
    GUICtrlSetState($SetOLBlueItem, $GUI_UNCHECKED)
    GUICtrlSetState($SetOLSlvItem, $GUI_UNCHECKED)
    GUICtrlSetState($DefaultItem, $GUI_CHECKED)
    EndFunc

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

    Func SetDefaultMenuColors()
    _SetMenuBkColor(0xFFFFFF)
    _SetMenuIconBkColor(0xDBD8D8)
    _SetMenuSelectBkColor(0xD2BDB6)
    _SetMenuSelectRectColor(0x854240)
    _SetMenuSelectTextColor(0x000000)
    _SetMenuTextColor(0x000000)
    EndFunc

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

    Func SetRedMenuColors()
    _SetMenuBkColor(0xAADDFF)
    _SetMenuIconBkColor(0x5566BB)
    _SetMenuSelectBkColor(0x70A0C0)
    _SetMenuSelectRectColor(0x854240)
    _SetMenuSelectTextColor(0x000000)
    _SetMenuTextColor(0x000000)
    EndFunc

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

    Func SetGreenMenuColors()
    _SetMenuBkColor(0xAAFFAA)
    _SetMenuIconBkColor(0x66BB66)
    _SetMenuSelectBkColor(0xBBCC88)
    _SetMenuSelectRectColor(0x222277)
    _SetMenuSelectTextColor(0x770000)
    _SetMenuTextColor(0x000000)
    EndFunc

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

    Func SetBlueMenuColors()
    _SetMenuBkColor(0xFFB8B8)
    _SetMenuIconBkColor(0xBB8877)
    _SetMenuSelectBkColor(0x662222)
    _SetMenuSelectRectColor(0x4477AA)
    _SetMenuSelectTextColor(0x66FFFF)
    _SetMenuTextColor(0x000000)
    EndFunc

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

    Func SetBlueTrayColors()
    _SetTrayBkColor(0xFFD8C0)
    _SetTrayIconBkColor(0xEE8877)
    _SetTrayIconBkGrdColor(0x703330)
    _SetTraySelectBkColor(0x662222)
    _SetTraySelectRectColor(0x4477AA)
    _SetTraySelectTextColor(0x66FFFF)
    _SetTrayTextColor(0x000000)
    EndFunc

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

    Func SetOLBlueColors()
    _SetMenuBkColor(0xFFFFFF)
    _SetMenuIconBkColor(0xFFEFE3)
    _SetMenuIconBkGrdColor(0xE4AD87)
    _SetMenuSelectBkColor(0xC2EEFF)
    _SetMenuSelectRectColor(0x800000)
    _SetMenuSelectTextColor(0x000000)
    _SetMenuTextColor(0x000000)
    EndFunc

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

    Func SetOLSilverColors()
    _SetMenuBkColor(0xF9F9F9)
    _SetMenuIconBkColor(0xFDFDFD)
    _SetMenuIconBkGrdColor(0xC0A0A0)
    _SetMenuSelectBkColor(0xC2EEFF)
    _SetMenuSelectRectColor(0x800000)
    _SetMenuSelectTextColor(0x000000)
    _SetMenuTextColor(0x000000)
    EndFunc

    [/autoit]

    Lg NO1 :)

  • Ist da ein Fehler im Skript oder liegt es an SciTE?

    Keines von beidem... es liegt daran, dass die Au3Check.exe von SciTE ausgeführt wird, bevor das Script gestartet wird - und die meckert hier rum!

    Deaktivieren kannst du den Au3Check, wenn du diese Zeile an den Anfang des Scripts einfügst...

    AutoIt
    #AutoIt3Wrapper_Run_AU3Check=N


    Besser wäre jedoch, wenn man das ganze Script bzw. die UDF so umschreibt, dass es auch mit Au3Check läuft!

  • Danke Bitnugger,

    aber warum meckert denn die Check.exe rum, es wird doch abgefragt ob die $Events deklariert sind? Wie soll ich das umschreiben?

    Lg NO1 :)

  • aber warum meckert denn die Check.exe rum, es wird doch abgefragt ob die $Events deklariert sind?

    Au3Check wird ausgeführt BEVOR das Script gestartet wird!

    Das Dumme dabei ist, dass Au3Check lediglich nach Deklarationen im Script sucht und in deinem Fall dann sieht, dass versucht wird, diverse Konstanten mehrmals zu deklarieren.

    Wie soll ich das umschreiben?

    Du musst lediglich die angemeckerten Deklarationen auskommentieren... hier ein Beispiel:

    Diese Zeilen...

    AutoIt
    If Not IsDeclared("SRCCOPY")				Then Global Const $SRCCOPY = 0x00CC0020

    so auskommentieren... in SciTE kannst du das mit Numpad + - machen... oder du löscht diese Zeilen einfach komplett.

    AutoIt
    ;~ If Not IsDeclared("SRCCOPY")				Then Global Const $SRCCOPY = 0x00CC0020

    2 Mal editiert, zuletzt von Bitnugger (5. April 2017 um 15:50)

  • Wow! Hast du super gemacht!

    Das mit dem auskommentieren an den Stellen hab ich gestern auch probiert, da hat er dann aber wieder gemeckert, dass die Konstanten nicht deklariert sind :D .
    Naja, gut, hat jetzt auf jeden Fall funktioniert und vielen Dank nochmal.

    Lg NO1 :)

  • So... nur um nochmal schnell drauf zu kommen...

    • wenn die Konstanten deklariert sind, meckert er, dass sie schon deklariert seien
    • dann kommentier ich sie aus und der Wrapper meckert dass die Variable nicht deklariert ist
  • Du meinst die Modern Menu.au3?

    Also ich brauch bis jetzt eigentlich nur die WindowsConstants und GUIConstants.

    Wenn ich die ModernMenu davor lade kommt natürlich "not declared", wenn ich sie davor lade "previously declared"...

  • So hast Recht, sorry... in der SystemWindowSizes.au3 werden weder Konstanten deklariert, noch andere Dateien includiert.

  • Also die Eine Konstante $ABM_GETTASKBARPOS findet sich in keinem anderen Include, das auf meinem Rechner ist, wieder. Nur so zur Beruhigung

  • Besser wäre jedoch, wenn man das ganze Script bzw. die UDF so umschreibt, dass es auch mit Au3Check läuft!

    Und wie du schon hier geschrieben hast: Klar gehts, wenn man den AU3Check ausschaltet, aber ich brauch den ja noch für mein eigentliches Programm und es soll natürlich auch ohne laufen.

  • Im Anhang findest du eine aktualisierte ModernMenuLib_with_Tray_Fixed (für AutoIt v3.3.14.3)... inkl. deinem Script und einer geänderten/korrigierten SystemWindowSizes.au3.

    Du darfst Konstanten nicht innerhalb einer Funktion deklarieren, weil sie nur einmalig deklariert werden dürfen und nicht bei jedem Funktionsaufruf!

    Globale Variablen sollten nach Möglichkeit auch nicht innerhalb von Funktionen deklariert werden... wobei sich das aber nicht immer vermeiden lässt.

  • Danke :thumbup:

    Die Idee mit der Konstante in der Funktion war auch net Meine :D...

    Aber vielen, vielen Dank! Jetzt werd ich mal schaun, was du konkret geändert hast... Danke!

    Und globalen Variablen in Funktionen kann man eigentlich bis auf Ausnahmen auch gut vermeiden... im Notfall halt auch mit dem guten, alten ByRef, wenn man sie schon vorher erstellt...

    Lg NO1 :)