Kann man sowas mit AutoIt erstellen?

  • HeyHo Nischlas,

    erstelle eine Gui mit dem Stil $WS_POPUP, darauf kannst du dann eigene Icons im Bereich der normalen Titelleiste erzeugen z.B:

    [autoit]

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

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

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: AutoBert
    Script Function: Template for Background-Image (JPG)

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

    #ce ----------------------------------------------------------------------------

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

    Opt("GUIOnEventMode", 1) ;ONEvent Mode.

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

    Global $iWidht = 1024, $iHeight = 550

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

    HotKeySet("{F6}", "_hide")
    $hfrmMain = GUICreate("HintergrundBild", $iWidht, $iHeight,0,0,$WS_POPUP, $WS_EX_CLIENTEDGE)
    $hjpgBckgrnd = GUICtrlCreatePic("bin\bg" & Random(1, 8, 1) & ".jpg", 0, 0, $iWidht, $iHeight) ;change bgX.jpg with your jpeg
    GUICtrlSetState(-1, $GUI_DISABLE)
    $hclose = GUICtrlCreateIcon("close.ico", -1,900, 0, 16, 16)
    GUICtrlSetOnEvent($hclose, "_exitMain")
    $hbtnMini = GUICtrlCreateIcon("mini.ico", -1,820,0, 16, 16)
    GUICtrlSetOnEvent($hbtnmini, "_Minimize")
    $hbtnMaxi = GUICtrlCreateIcon("maxi.ico", -1,860,0, 16, 16)
    GUICtrlSetOnEvent($hbtnmaxi, "_Maximize")
    $hbtnExit = GUICtrlCreateButton("Be&enden", $iWidht - 100, $iHeight - 50, 80)
    GUICtrlSetOnEvent(-1, "_exitMain")
    GUISetState()

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

    While True
    Sleep(1000)
    WEnd

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

    Func _exitMain()
    Exit
    EndFunc ;==>_exitMain

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

    Func _Minimize()
    GUISetState(@SW_MINIMIZE,$hfrmMain)
    EndFunc ;==>_exitMain
    Func _Maximize()
    GUISetState(@SW_MAXIMIZE,$hfrmMain)
    EndFunc ;==>_exitMain

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

    ; -------------- func
    Func _hide()
    GUISetState(@SW_HIDE, $hfrmMain)
    HotKeySet("{F6}", "_show")
    EndFunc ;==>_hide

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

    Func _show()
    GUISetState(@SW_SHOW, $hfrmMain)
    HotKeySet("{F6}", "_hide")
    EndFunc ;==>_show

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

    Func _OpenJPG()
    $sjpgBckgrnd = FileOpenDialog("Hintergrundbild auswählen", @ScriptDir & "\bin", "Images (*.jpg)", 1, "", $hfrmMain)
    GUICtrlSetImage($hjpgBckgrnd, $sjpgBckgrnd)
    EndFunc ;==>_OpenJPG

    [/autoit]

    mfg (Auto)Bert

  • HeyHo Nischlas,

    ich habe das Skript noch einmal überarbeitet:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>

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

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Authors: AutoBert => MainWindow with personalized Icons
    funkey => Menu-everywhere
    Script Function: Template for Background-Image (JPG)
    #ce ----------------------------------------------------------------------------

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

    Opt("GUIOnEventMode", 1) ;ONEvent Mode.

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

    Global $iWidht = 1024, $iHeight = 550

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

    HotKeySet("{F6}", "_hide")
    $hfrmMain = GUICreate("", $iWidht, $iHeight, 0, 0, BitOR($WS_POPUPWINDOW, $WS_THICKFRAME)) ;$WS_POPUPWINDOW oder $WS_POPUP ist unbedingt erforderlich
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exitMain") ;damit GUI auch mit F4 h´geschlossen werden kann
    ;$hjpgBckgrnd = GUICtrlCreatePic(@ScriptDir & "\bin\beetle.JPG", 0, 0, $iWidht, $iHeight)
    GUISetIcon(@ScriptDir & "\bin\app.ico") ;Setzt ein Icon für das Programm, bei diesem Stil nur in der Taskleiste bemerkbar
    $hjpgBckgrnd = GUICtrlCreatePic(@ScriptDir & "\bin\beetle.JPG", 0, -40, $iWidht, $iHeight) ;Ersatz für Programmicon, da bei diesem Stil nicht anders möglich
    GUICtrlSetState(-1, $GUI_DISABLE)
    $hlblMyTitle = GUICtrlCreateLabel("Meine personalisierte GUI", 200, 2, 500, 22, -1, BitOR($GUI_WS_EX_PARENTDRAG,$WS_EX_TRANSPARENT))
    ;um das Verschieben zu rmöglichen ist der erweiterte Stil $GUI_WS_EX_PARENTDRAG notwendig
    GUICtrlSetTip(-1, "hier kann das Fenster mit der Maus verschoben werden", "Personalized Gui", 1,1)
    GUICtrlSetBkColor(-1, 0xffffff) ; alles was die Farbe weiß hat, erscheint transparent
    GUICtrlSetFont(-1, 16)
    GUICtrlSetResizing(-1, $GUI_DOCKAll)

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

    GUISwitch($hfrmMain)
    $hicoApp = GUICtrlCreateIcon(@ScriptDir & "\bin\App.ico", -1, 0, -4, 58, 30)
    GUICtrlSetOnEvent($hicoApp, "_about")
    GUICtrlSetTip(-1, "Zeigt Infos zu dem Programm", "Personalized Gui", 1,1)

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

    $hicoClose = GUICtrlCreateIcon(@ScriptDir & "\bin\close.ico", -1, 900, 5, 16, 16)
    GUICtrlSetOnEvent($hicoClose, "_exitMain")
    GUICtrlSetTip(-1, "Programm schliessen", "Personalized Gui", 1, 1)

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

    $hicoMini = GUICtrlCreateIcon(@ScriptDir & "\bin\mini.ico", -1, 820, 5, 16, 16)
    GUICtrlSetOnEvent($hicoMini, "_Minimize")
    GUICtrlSetTip(-1, "minimieren", "Personalized Gui", 1,1)

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

    $hicoMaxi = GUICtrlCreateIcon(@ScriptDir & "\bin\maxi.ico", -1, 860, 5, 16, 16)
    GUICtrlSetOnEvent($hicoMaxi, "_Maximize")
    GUICtrlSetTip(-1, "maximieren", "Personalized Gui", 1,1)

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

    $hicoNorm = GUICtrlCreateIcon(@ScriptDir & "\bin\normalize.ico", -1, 860, 5, 16, 16)
    GUICtrlSetOnEvent($hicoNorm, "_Normalize")
    GUICtrlSetTip(-1, "wiederherstellen", "Personalized Gui", 1,1)
    GUICtrlSetState($hicoNorm, $GUI_HIDE)

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

    $hbtnExit = GUICtrlCreateButton("Be&enden", $iWidht - 100, $iHeight - 70, 80, 20, -1, $WS_EX_TRANSPARENT)
    GUICtrlSetTip(-1, "Programm beenden", "Personalized Gui", 1,1)
    GUICtrlSetOnEvent(-1, "_exitMain")
    ;-------------------LINE
    $line = GUICtrlCreateGraphic(0, 24, $iWidht, 2)
    GUICtrlSetGraphic($line, $GUI_GR_LINE, 0, 0)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetColor(-1, 0)

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

    #Region ;ab hier Menü überall plazieren siehe http://www.autoit.de/index.php?page…0614#post110614 von funkey
    GUICtrlCreateLabel('', 0, 25, $iWidht, 2, $SS_SUNKEN )
    GUICtrlSetResizing(-1, $GUI_DOCKTOP)

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

    $MenueDatei = GUICtrlCreateLabel('&Datei', 60, 5, 40, 19, BitOR($SS_CENTERIMAGE,$SS_CENTER))
    GUICtrlSetResizing(-1, $GUI_DOCKAll)
    GUICtrlSetBkColor(-1, 0xffffff) ; alles was die Farbe weiß hat, ist transparent
    GUICtrlSetOnEvent(-1, '_MenuPressed')

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

    $DateiContext = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    $OptionsOpen = GUICtrlCreateMenuItem("Ö&ffnen", $DateiContext)
    GUICtrlSetOnEvent(-1, "_openJPG")

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

    $OptionsClose = GUICtrlCreateMenuItem("S&chließen", $DateiContext)
    GUICtrlCreateMenuItem("", $DateiContext)
    GUICtrlSetOnEvent(-1, "_Close")

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

    $OptionsExit = GUICtrlCreateMenuItem("B&eenden", $DateiContext)
    GUICtrlSetOnEvent(-1, '_ExitMain')

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

    $MenueHelp = GUICtrlCreateLabel("&Hilfe", 135, 5, 30, 19, BitOR($SS_CENTERIMAGE,$SS_CENTER))
    GUICtrlSetResizing(-1, $GUI_DOCKAll)
    GUICtrlSetBkColor(-1, 0xffffff) ; alles was die Farbe weiß hat, ist transparent
    GUICtrlSetOnEvent(-1, '_MenuPressed')

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

    $HelpContext = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    $HelpWWW = GUICtrlCreateMenuItem("&Website", $HelpContext)
    GUICtrlSetOnEvent(-1, '_Website')
    GUICtrlCreateMenuItem("", $HelpContext)
    $HelpAbout = GUICtrlCreateMenuItem("Ü&ber...", $HelpContext)
    GUICtrlSetTip(-1, "Zeigt Infos zu dem Programm", "Personalized Gui", 1)
    GUICtrlSetOnEvent(-1, '_About')

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

    GUICtrlCreateLabel('', 0, $iHeight - 25, $iWidht, 2, 0x1000)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM)

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

    $hlblStatus = GUICtrlCreateLabel('', 0, $iHeight - 21, $iWidht - 2, 18, $SS_SUNKEN)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM)

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

    ;Global $AccelKeys[3][2] = [["!d", $MenueDatei],["!h", $MenueHelp],["!e", $hbtnExit]]
    Global $AccelKeys[2][2] = [["!d", $MenueDatei],["!h", $MenueHelp]] ;,["!e", $hbtnExit]]
    ;Zugriffstasten für GUI setzen ($hbtnExit ist nicht unbedingt notwendig, da bereits auf dem Button
    GUISetAccelerators($AccelKeys) ;zuweisen der Taten
    ;ende Menü überall
    #EndRegion
    GUISetState(@SW_SHOW, $hfrmMain)

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

    While True
    Sleep(1000)
    WEnd

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

    Func _exitMain()
    Exit
    EndFunc ;==>_exitMain

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

    Func _Minimize()
    GUISetState(@SW_MINIMIZE, $hfrmMain)
    EndFunc ;==>_Minimize

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

    Func _Maximize()
    GUISetState(@SW_MAXIMIZE, $hfrmMain)
    GUICtrlSetState($hicoMaxi, $GUI_HIDE)
    GUICtrlSetState($hicoNorm, $GUI_SHOW)
    EndFunc ;==>_Maximize

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

    Func _Normalize()
    GUISetState(@SW_RESTORE, $hfrmMain)
    GUICtrlSetState($hicoNorm, $GUI_HIDE)
    GUICtrlSetState($hicoMaxi, $GUI_SHOW)
    EndFunc ;==>_Normalize

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

    ; -------------- func
    Func _hide()
    GUISetState(@SW_HIDE, $hfrmMain)
    HotKeySet("{F6}", "_show")
    EndFunc ;==>_hide

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

    Func _show()
    GUISetState(@SW_SHOW, $hfrmMain)
    HotKeySet("{F6}", "_hide")
    EndFunc ;==>_show

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

    Func _OpenJPG()
    $sjpgBckgrnd = FileOpenDialog("Hintergrundbild auswählen", @ScriptDir & "\bin", "Images (*.jpg)", 1, "", $hfrmMain)
    GUICtrlSetImage($hjpgBckgrnd, $sjpgBckgrnd)
    EndFunc ;==>_OpenJPG

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

    Func _Close()
    MsgBox(0, "Button", "Schliessen wurde geklickt!",0,$hfrmMain)
    EndFunc ;==>_Close

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

    #cs

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

    Switch $CtrlID
    Case $OptionsExit
    GUICtrlSetData($hlblStatus, "Programm beenden")
    Case $OptionsOpen
    GUICtrlSetData($hlblStatus, "Hintergrundbild auswählen")
    Case Else
    GUICtrlSetData($hlblStatus, "")
    EndSwitch
    #ce

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

    ;ab hier Funktionen von Menü überall plazieren siehe http://www.autoit.de/index.php?page…0614#post110614 von funkey
    Func _MenuPressed()
    Switch @GUI_CtrlId
    Case $MenueDatei
    ShowMenu($hfrmMain, $MenueDatei, $DateiContext)
    Case $MenueHelp
    ShowMenu($hfrmMain, $MenueHelp, $HelpContext)
    EndSwitch
    EndFunc ;==>_MenuPressed

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

    Func _About()
    MsgBox(64, "About...", "Beispiel für personalisierte GUI von (Auto)Bert" & @CRLF & "mit Beispiel für ein eigenes Menü von funkey" & @CRLF & "www.autoit.de/index.php?page=Thread&postID=110614#post110614,0,$hfrmMain")
    EndFunc ;==>_About

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

    Func _Website()
    MsgBox(64, "Website...", "http://www.autoit.de/index.php?page=Thread&postID=116673#post116673",0,$hfrmMain)
    EndFunc ;==>_Website

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

    ; Show a menu in a given GUI window which belongs to a given GUI ctrl
    Func ShowMenu($hWnd, $CtrlID, $nContextID)
    Local $arPos, $x, $y
    Local $hMenu = GUICtrlGetHandle($nContextID)

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

    $arPos = ControlGetPos($hWnd, "", $CtrlID)

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

    $x = $arPos[0]
    $y = $arPos[1] + $arPos[3]

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

    ClientToScreen($hWnd, $x, $y)
    TrackPopupMenu($hWnd, $hMenu, $x, $y)
    EndFunc ;==>ShowMenu

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

    ; Convert the client (GUI) coordinates to screen (desktop) coordinates
    Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
    Local $stPoint = DllStructCreate("int;int")

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

    DllStructSetData($stPoint, 1, $x)
    DllStructSetData($stPoint, 2, $y)

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

    DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))

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

    $x = DllStructGetData($stPoint, 1)
    $y = DllStructGetData($stPoint, 2)
    ; release Struct not really needed as it is a local
    $stPoint = 0
    EndFunc ;==>ClientToScreen

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

    ; Show at the given coordinates (x, y) the popup menu (hMenu) which belongs to a given GUI window (hWnd)
    Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
    DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
    EndFunc ;==>TrackPopupMenu

    [/autoit]

    zusätzlich habe ich noch Menü überall platzieren von funkey eingebaut.

    Edit: GuiCtrlTip eingebaut und Kommentare eingefügt
    mfg (Auto)Bert

    moritz1243 wenn du ohne den Stil $WS_POPUPWINDOW bzw. $WS_POPUP eine GUI erzeugst bekommst du spätestens dann Probleme wenn du auf dieser GUI auch noch ein Menü plazieren möchtest,

    Einmal editiert, zuletzt von AutoBert (15. Oktober 2009 um 04:32)

  • Hi,

    Sorry erstmal, dass ich diesen verstaubten Thread wieder
    aus der Kiste hole. :D
    Aber ich habe eine Frage dazu und wollte keinen neuen
    Thread erstellen. Also:
    Gibt es die Möglichkeit, den "Windows-Rand" auch zu
    überschreiben? In dem letzten Beispiel hier wird der ja
    noch angezeigt.


    MfG
    qixx

  • Hallo gixx,

    einfach beim erstellen

    [autoit]

    $hfrmMain = GUICreate("", $iWidht, $iHeight, 0, 0, $WS_POPUPWINDOW)

    [/autoit]

    mfg (Auto)Bert

  • POPUP ist aber nicht überschreiben, da wird nur dei Richtige Taskleiste ausgebledet, wenn man es überschreiben will muss Man Einen API-Hook anwende (weißt net genau wie es geschreiben wird) aber das ist sehr schwer und ich kann es leider auch nicht

    mfg. Jam00

  • Jam00:
    Mir ging es lediglich darum, dass ein Bild
    über dem Rand ist, nicht direkt überschreiben. ;)
    Aber trotzdem Danke für die Info!

    Edit:
    Ich benatworte mal eben meine Frage durch
    dieses Thema (SkinCrafter), das mir eben
    in die Augen gefallen ist. :)


    MfG
    qixx