Kann man sowas mit AutoIt erstellen?

  • Heyho Leute :)
    Ich hab da mal eine Frage. Es geht um dieses Bild.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Wie kann man die Buttons "oben rechts" verändern? Bzw. einen hinzufügen?
    Und wie hat Google das gemacht? Das Google Label.
    Weiß wer ob das geht? Viel mehr wie das geht?

  • 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