Ich hab etwas Langeweile gehabt und war in den letzten Tagen immer wieder auf der Suche nach "schicken" GUI's die man so mit AutoIT erstellen könnte.
Leider wird man über Google kaum fündig - oder ich hab einfach falsch gesucht, meist waren die Treffer doch nur Guides wie man überhaupt eine GUI erstellen kann (im allgemeinen) oder es wurde alles mit GDI+ gemacht (was mir persönlich ne Stufe zu hoch ist ).
Daher habe ich hier mal eine GUI erstellt, die wie das HTC Desire HD ausschaut (weil ich es zufälligerweise besitze)... über Sinn und Funktionalität läßt sich natürlich streiten. Auch ist der Code nicht komplett von mir, da ich mich einiger Codeschnipsel bedient habe um zum Beispiel die Runden GUI Ecken darzustellen oder die Hovereffekte für die Buttons zu realisieren (wenn gewünscht mit Animation).
Aber lange Rede, kurzer Sinn... hier das Script. Im Anhang das ganze auch als Komplettpaket zum Download + Vorschaubilder.
*Neuerungen*
26.02.2012 (v1.1)
Man kann, nachdem das Handy geöffnet wurde, unten den "Menu" Button klicken. Daraufhin öffnet sich das Handymenü... natürlich noch ohne Funktion - das kann dann später evtl mal kommen.
27.02.2012 (v1.2)
Browser/Suche eingebaut
Spoiler anzeigen
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <GDIPlus.au3>
#include <IE.au3>
#include 'Buttons.au3'
Opt("GUIOnEventMode", 1)
Opt("MouseCoordMode", 2) ;Damit die Koords der Maus auf dem Button korrekt erkannt werden.
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$Title = "HTC Desire HD"
$Width = 300
$Height = 500
$pics = @ScriptDir & "\images\"
; Konstanten
Global Const $BgColorTitle = 0x000000
Global Const $BgColor = 0x464646
; Handyrahmen aussen
$hWnd_Main = GUICreate($Title, $Width, $Height, -1, -1, $WS_POPUP)
GUISetBkColor($BgColor)
$Close = GUICtrlCreatePic($pics & "close.bmp", $Width - 16, 7, 9, 9)
GUICtrlSetOnEvent($Close, "_Exit")
$TitleBar = GUICtrlCreateLabel("", 6, 4, $Width - 42, 17, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlCreatePic($pics & "HTC-Lautsprecher.bmp", 65, 6, 180, 10)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Handydisplay erstellen
$hWnd_Child1 = GUICreate("", 290, 475, 5, 20, $WS_POPUP)
GUISetBkColor(0xFFFFFF, $hWnd_Child1)
$IE = _IECreateEmbedded()
$browser = GUICtrlCreateObj($IE, 11, 13, 268, 395)
GUICtrlSetState($browser, $GUI_HIDE)
;~ GUICtrlCreatePic($pics & "HTC-Brilliant.bmp", 15, 130, 260, 165)
Global $hImg_HTC_Brilliant = _GDIPlus_ImageLoadFromFile($pics & "HTC-Brilliant.bmp")
$home_button = GUICtrlCreatePic($pics & "menu1.bmp", 15, 410, 51, 38)
GUICtrlSetOnEvent($home_button, "_home_button")
$menu_button = GUICtrlCreatePic($pics & "menu2.bmp", 66, 410, 82, 38)
GUICtrlSetOnEvent($menu_button, "_menu_button")
$back_button = GUICtrlCreatePic($pics & "menu3.bmp", 148, 410, 76, 38)
GUICtrlSetOnEvent($back_button, "_back_button")
$suche_button = GUICtrlCreatePic($pics & "menu4.bmp", 224, 410, 49, 38)
GUICtrlSetOnEvent($suche_button, "_suche_button")
GUICtrlCreatePic($pics & "HTC-Logo.bmp", 120, 445, 55, 20)
Global Const $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd_Child1)
Global Const $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Width, 410, $hGraphic)
Global Const $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
Global Const $hBitmap1 = _GDIPlus_BitmapCreateFromGraphics(270, 400, $hGraphic)
Global Const $hBackbuffer1 = _GDIPlus_ImageGetGraphicsContext($hBitmap1)
; Hintergrund/Rahmen des Handydisplays
GUICtrlCreateGraphic(0, 0, 330, 12)
GUICtrlSetBkColor(-1, $BgColorTitle)
GUICtrlCreateGraphic(0, 0, 10, $Height)
GUICtrlSetBkColor(-1, $BgColorTitle)
GUICtrlCreateGraphic(0, 410, $Width, 80)
GUICtrlSetBkColor(-1, $BgColorTitle)
GUICtrlCreateGraphic(280, 0, 20, $Height)
GUICtrlSetBkColor(-1, $BgColorTitle)
; Menü
Global $hButton1 = _Button_Init(20, 30, 45, 45, 1)
_Button_Set_Pic($hButton1, 0, $pics & 'home1.bmp')
_Button_Set_Pic($hButton1, 1, $pics & 'home2.bmp')
_Button_Set_Pic($hButton1, 2, $pics & 'home3.bmp')
Global $hButton2 = _Button_Init(120, 30, 45, 45, 2)
_Button_Set_Pic($hButton2, 0, $pics & 'info1.bmp')
_Button_Set_Pic($hButton2, 1, $pics & 'info2.bmp')
_Button_Set_Pic($hButton2, 2, $pics & 'info3.bmp')
Global $hButton3 = _Button_Init(220, 30, 45, 45, 3)
_Button_Set_Pic($hButton3, 0, $pics & 'alben1.bmp')
_Button_Set_Pic($hButton3, 1, $pics & 'alben2.bmp')
_Button_Set_Pic($hButton3, 2, $pics & 'alben3.bmp')
Global $hButton4 = _Button_Init(20, 100, 45, 45, 4)
_Button_Set_Pic($hButton4, 0, $pics & 'media1.bmp')
_Button_Set_Pic($hButton4, 1, $pics & 'media2.bmp')
_Button_Set_Pic($hButton4, 2, $pics & 'media3.bmp')
Global $hButton5 = _Button_Init(120, 100, 45, 45, 5)
_Button_Set_Pic($hButton5, 0, $pics & 'kamera1.bmp')
_Button_Set_Pic($hButton5, 1, $pics & 'kamera2.bmp')
_Button_Set_Pic($hButton5, 2, $pics & 'kamera3.bmp')
Global $hButton6 = _Button_Init(220, 100, 45, 45, 6)
_Button_Set_Pic($hButton6, 0, $pics & 'nachrichten1.bmp')
_Button_Set_Pic($hButton6, 1, $pics & 'nachrichten2.bmp')
_Button_Set_Pic($hButton6, 2, $pics & 'nachrichten3.bmp')
Global $hButton7 = _Button_Init(20, 170, 45, 45, 7)
_Button_Set_Pic($hButton7, 0, $pics & 'home1.bmp')
_Button_Set_Pic($hButton7, 1, $pics & 'home2.bmp')
_Button_Set_Pic($hButton7, 2, $pics & 'home3.bmp')
Global $hButton8 = _Button_Init(120, 170, 45, 45,
_Button_Set_Pic($hButton8, 0, $pics & 'home1.bmp')
_Button_Set_Pic($hButton8, 1, $pics & 'home2.bmp')
_Button_Set_Pic($hButton8, 2, $pics & 'home3.bmp')
Global $hButton9 = _Button_Init(220, 170, 45, 45, "9")
_Button_Set_Pic($hButton9, 0, $pics & 'home1.bmp')
_Button_Set_Pic($hButton9, 1, $pics & 'home2.bmp')
_Button_Set_Pic($hButton9, 2, $pics & 'home3.bmp')
Global $Btn_msg
Global $pos, $klick
Global $Temp
Global $Anzeige = 0 ; 0 = home, 1 = Menu, usw...
Local $t = TimerInit()
; Display an Handyrahmen "koppeln"
_SetParent($hWnd_Main, $hWnd_Child1)
; Gui einblenden
GuiRoundCorners($hWnd_Main, 0, 0, 20, 20)
GuiRoundCorners($hWnd_Child1, 0, 0, 20, 20)
WinSetTrans($hWnd_Main, "", 0)
WinSetTrans($hWnd_Child1, "", 0)
GUISetState(@SW_SHOW, $hWnd_Main)
GUISetState(@SW_SHOW, $hWnd_Child1)
FadeIn($hWnd_Main)
While Sleep(50)
[/autoit] [autoit][/autoit] [autoit]Switch $Anzeige
Case 0 ; Home
_home()
Case 1 ; Menu
_menu()
Case 2 ; Suche
_back()
Case 3 ; Suche
_suche()
EndSwitch
WEnd
[/autoit] [autoit][/autoit] [autoit]; Funktionen
Func _SetParent($hWnd_Parent, $hWnd_Child)
$nExStyle = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hWnd_Child, "int", 0xEC)
DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hWnd_Child, "int", 0xEC, "int", BitOR($nExStyle[0], $WS_EX_MDICHILD))
DllCall("user32.dll", "int", "SetParent", "hwnd", $hWnd_Child, "hwnd", $hWnd_Parent)
GUISwitch($hWnd_Parent)
EndFunc ;==> _SetParent
Func GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
$pos = WinGetPos($h_win)
$ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3)
If $ret[0] Then
$ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1)
If $ret2[0] Then
Return 1
Else
Return 0
EndIf
Else
Return 0
EndIf
EndFunc ;==>GuiRoundCorners
Func FadeIn($h)
For $i = 0 To 255 Step 15
Sleep(10)
WinSetTrans($h, "", $i)
Next
EndFunc ;==>FadeIn
Func FadeOut($h)
For $i = 255 To 0 Step -15
Sleep(10)
WinSetTrans($h, "", $i)
Next
EndFunc ;==>FadeOut
Func _Exit()
FadeOut($hWnd_Main)
GUIDelete($hWnd_Child1)
_Button_Dispose($hButton1)
_Button_Dispose($hButton2)
_Button_Dispose($hButton3)
_Button_Dispose($hButton4)
_Button_Dispose($hButton5)
_Button_Dispose($hButton6)
_Button_Dispose($hButton7)
_Button_Dispose($hButton8)
_Button_Dispose($hButton9)
_GDIPlus_GraphicsDispose($hBackbuffer)
_GDIPlus_GraphicsDispose($hBackbuffer1)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BitmapDispose($hBitmap1)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Exit
Func _home_button()
$Anzeige = 0
GUICtrlSetState($browser, $GUI_HIDE)
EndFunc ;==>_home_button
Func _menu_button()
$Anzeige = 1
GUICtrlSetState($browser, $GUI_HIDE)
EndFunc ;==>_menu_button
Func _back_button()
$Anzeige = 2 ;
GUICtrlSetState($browser, $GUI_HIDE)
EndFunc ;==>_back_button
Func _suche_button()
$Anzeige = 3
EndFunc ;==>_suche_button
Func _home()
_GDIPlus_GraphicsClear($hBackbuffer1, 0xFFFFFFFF)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer1, $hImg_HTC_Brilliant, 5, 120, 260, 165)
; Hier was auch immer du willst...
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap1, 10, 10)
EndFunc ;==>_home
Func _menu()
_GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
$Btn_msg = _Button_Get_Pressed()
_Button_Draw($hBackbuffer, $hButton1)
_Button_Draw($hBackbuffer, $hButton2)
_Button_Draw($hBackbuffer, $hButton3)
_Button_Draw($hBackbuffer, $hButton4)
_Button_Draw($hBackbuffer, $hButton5)
_Button_Draw($hBackbuffer, $hButton6)
_Button_Draw($hBackbuffer, $hButton7)
_Button_Draw($hBackbuffer, $hButton8)
_Button_Draw($hBackbuffer, $hButton9)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
; If $Btn_msg Then ToolTip('ButtonID: ' & $Btn_msg)
If $Btn_msg = "1" Then
$Anzeige = 0
ElseIf $Btn_msg = "2" Then
MsgBox(64,"","Menu 2")
ElseIf $Btn_msg = "3" Then
MsgBox(64,"","Menu 3")
ElseIf $Btn_msg = "4" Then
MsgBox(64,"","Menu 4")
ElseIf $Btn_msg = "5" Then
MsgBox(64,"","Menu 5")
ElseIf $Btn_msg = "6" Then
MsgBox(64,"","Menu 6")
ElseIf $Btn_msg = "7" Then
MsgBox(64,"","Menu 7")
ElseIf $Btn_msg = "8" Then
MsgBox(64,"","Menu 8")
ElseIf $Btn_msg = "9" Then
$Anzeige = 2
EndIf
EndFunc ;==>_menu
Func _back()
_GDIPlus_GraphicsClear($hBackbuffer1, 0xFFFFFFFF)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer1, $hImg_HTC_Brilliant, 5, 120, 260, 165)
; Hier was auch immer du willst...
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap1, 10, 10)
EndFunc ;==>_back
Func _suche()
GUICtrlSetState($browser, $GUI_SHOW)
_IENavigate($IE,"http://www.google.com/xhtml")
$Anzeige = -1
EndFunc ;==>_suche
autoit.de/wcf/attachment/15217/
[EDIT]:
Alte Anhänge entfernt
Handy GUI.rar (40,96 kB - 19 mal heruntergeladen - zuletzt: 27.02.2012, 19:24)
Handy GUI 26.02.2012.rar (65,6 kB - 17 mal heruntergeladen - zuletzt: 27.02.2012, 19:56)