Auch wenn es eindeutig zu spät ist: eine Stellungnahme:
Sporify-Recorder habe ich ausprobiert, hat nicht funktioniert und nie wieder angerührt.
die SporifyHelper.exe könnte man doch einfach killen lassen, vllt per tooltip an-ausschalten....ich bin derzeit schulisch zu sehr beschäftigt; außerdem reicht mein skript für meine zwecke; es steht euch frei, alles zu ändern, was euch nicht gefällt & wieder (mit nahmensnennung und verweis) hier zu veröffentlichen
liebe grüße
Beiträge von tobi_girst
-
-
Spotify: tolles Konzept, weniger tolles Interface: Das Fenster schließt nicht, wenn man auf das X klickt, automatische Private Session ist nicht möglich, das Albumcover ist nicht im Thumbnail in der Taskleiste sichtbar. Deshalb bin ich dabei, all diese Probleme zu umgehen: Ich bette den Client als Child in ein AutoIt-GUI ein, welche die Funktion der Titelleiste übernimmt. Spotify wird einfach gekillt, wenn die Main-GUI geschlossen wird. Als Besitzer von 2 Monitoren funktioniert so auch UltraMon mit Spotify!
"Funktionen im Überblick (tl;dr)"
- Ersetzt die Titelbar von Spotify durch die "originale" von Windows
- Killt den Spotify-Prozess, wenn man auf schließen klickt
- Startet auf Wunsch im privaten Modus
- Zeigt im Taskleisten-Thumbnail das Albumcover & Steuerfunktionen
- Funktioniert durch die Original-Titelleiste auch mit UltraMon- und TeamViewer-Buttons
- Viele Konfigurationsmöglichkeiten über INI-File
"Known Bugs"
- Beim Verschieben wird ein von Spotify erzeugter Rahmen angezeigt (CS_DROPSHADOW?), der allerdings beim Loslassen der Maus an der Stelle neu gezeichnet wird, wo sich das Fenster jetzt befindet
- ControlSend funktioniert nur, wenn Spotify kurz un- und wieder re-embedded wird (kurzes Aufflackern, wenn mit Taskleiste der Titel gewechselt wird)
- Albumcover wird bei minimiertem Fenster nicht richtig angezeigt (position muss neu berechnet werden...nicht schwer)
-
ich bin (mehr oder weniger) stolzer Besitzer eines Windows7-Tablet (mit extrem verbuggtem Bildschirm, tut aber hier nix zur Sache). Es gibt den tollen Dienst "Tablet-PC Eingabedienst", der auf Rechnern mit Touchscreen automatisch gestartet wird. Der erkennt einen Unterschied zwischen Maus/Tastatur und einem TScreen (und ist auch für die kompakte virtuelle Tastatur verantwortlich). Mit angeschlossener Maus lässt sich der PC ganz gewohnt bedienen, wenn aber der Bildschirm berührt wird, wird zwischen Scrollen (wischen), div. Gesten (schnell wischen), Rechtsklick (lang drücken), Tastatur öffnen (ein Button, der nur sichtbar wird, wenn T-Screen berührt), und wahrscheinlich anderen, die ich nie verwende und daher jetzt vergessen habe.
Dieses Verhalten funktioniert nicht nur in Microsoft-Programmen, sondern auch in 3rd-Party-Programmen. -
dafür würd's viel aufräumen benötigen...im Grunde besteht meine Schaltung aus einem Tastaturmodul und einem Taster (im Pedal); die Software ist HotkeySet () in Kombination mit Send (->AltTab, in Skripte gepostet) und ControlSend für die Spotify-Steuerung.
-
vielen dank! ich habe jetzt beide skripte ausprobiert und finde sie toll! ich habe mich für uez's skript entschieden, nichts für ungut, name22! dein skript gefällt mir auch (nur habe ich etwas gegen background-images und deine steuerung)
besteht interesse an meinem zwei-pedal-skript?lg
-
vielen Dank liebe Nachtmenschen! dass sich jemand um Mitternacht bis drei Uhr für meine Anliegen Zeit nimmt ist äußerst nett. Ich werde die Codes sofort ausprobieren!
-
Hat kein GDI-Experte Zeit für mein Anliegen?
-
Kennst du die _BlockInputEx.au3? Keine Ahnung, ob die auch Modifier-Keys sperren kann. HotKeySet kann das meines Wissens nicht.
lg -
genau, alizame!
Ich möchte nur die GUI nachbauen, die Fenstersymbole werde ich mit eigenen austauschen.
lg -
Hallo!
Ich würde gern die GUI vom Win7-Aero-Alt-Tab-Programmumschalter nachbauen, um eigene Icons (zum wechseln zwischen Funktionen meines Fußpedals, falls das jemand mitbekommen hat) draufzuhauen.
Bisher habe ich nur die klassische ApplyGlass () Funktion gefunden, welche leider Probleme mit der Darstellung von Controls hat, sowie eine GDI+Funktion, welche ich nicht durchschauen kann.
Ich würde mich sehr über eure Hilfe freuen, wenn sich jemand mit der Materie auskennt.
Im Grunde will ich also auf einer Aero-GUI Controls malen können. Mit einem Beispielskript wäre mir sehr geholfen.
liebe grüße!Skripte
ApplyGlass() - Autor verloren
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include <GUIConstants.au3>$GUI = GUICreate("Windows Vista DWM", 243, 243)
[/autoit] [autoit][/autoit] [autoit]
$Apply = GUICtrlCreateButton("Apply", 80, 104, 83, 25, 0)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$iMsg = GUIGetMsg()
Switch $iMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Apply
$Ret = ApplyGlass($GUI,243,243,243,243,0x000000); produces full glass window, the glass is red colored
EndSwitch
WEndFunc ApplyGlass($hWnd,$leftw,$rightw,$toph,$bottomh,$glasscolor = "0x000000")
[/autoit]
$struct=DllStructCreate("int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight;")
DllStructSetData($struct,"cxLeftWidth",$leftw)
DllStructSetData($struct,"cxRightWidth",$rightw)
DllStructSetData($struct,"cyTopHeight",$toph)
DllStructSetData($struct,"cyBottomHeight",$bottomh)
GUISetBkColor($glasscolor)
Return DllCall("dwmapi.dll", "int", "DwmExtendFrameIntoClientArea", "hwnd", $hWnd, "ptr", DllStructGetPtr($struct))
EndFuncGDI-Skript
http://www.autoitscript.com/forum/topic/13…-menu-estetics/
[autoit]#region parts that are not my work:
[/autoit] [autoit][/autoit] [autoit]
;JamesBrooks for Vista glass functions: http://www.autoitscript.com/forum/topic/..…ions/page__hl__
;Authenticity and Yashied for glow txt on glass: http://www.autoitscript.com/forum/topic/..…owing-text-on-a
;Malkey for GDI+ gradient: http://www.autoitscript.com/forum/topic/75…ent-line-brush/
#endregion#include <FontConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>OnAutoItExitRegister( "_CleanUp" )
[/autoit] [autoit][/autoit] [autoit]Global $IconSize = 48
[/autoit] [autoit][/autoit] [autoit]
Global $width = 300
Global $height = 350
Global $shine1 = 5
Global $shine2 = 5
Global $shine3 = 125
Global $menuFontSize = 16
Global $title = 'Some cool menu'
Global $temp_image = @TempDir & '\my_seven_image.bmp'
Global $Win_Back_Color = 0x636363;0xC5C5C5;454545 <--- color of lower dark grey line
For $i = 1 to Int($IconSize/4.8) ;adding space in front of the title so that it doesn't overlap top left image
$title = ' ' & $title
Next#region values requires for text shine on glass area
[/autoit] [autoit][/autoit] [autoit]
Global Const $DTT_TEXTCOLOR = 0x00000001
Global Const $DTT_GLOWSIZE = 0x00000800
Global Const $DTT_COMPOSITED = 0x00002000
If Not IsDeclared("tagDTTOPTS") Then Global Const $tagDTTOPTS = _
"uint Size;uint Flags;uint clrText;uint clrBorder;uint clrShadow;int TextShadowType;" & $tagPOINT & _
";int BorderSize;int FontPropId;int ColorPropId;int StateId;int ApplyOverlay;int GlowSize;ptr DrawTextCallback;int lParam;"
Global $Struct = DllStructCreate("int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight;")
Global $sStruct = DllStructCreate("dword;int;ptr;int")
Global $Area[4] = [0, 0, $IconSize-23, 0]
#endregionGlobal $Form1 = GUICreate($title, $width, $height, -1, -1, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
Global $GlassArea = GUICtrlCreateLabel("", 0, 0, $width, $IconSize-23) ;area that will be filled with glass
GUICtrlSetBkColor(-1, 0x000000)
Global $DarkGreyArea = GUICtrlCreateGraphic(0, 0, $width, $height-45) ;work area (to add controls in)
GUICtrlSetBkColor(-1, 0xC5C5C5) ;with light grey area
Global $CloseButton = GUICtrlCreateButton("Close", $width-90, $height-35, 80, 25)
Global $hTheme = _WinAPI_OpenThemeData($Form1, "globals") ;required function for label shine in glass area
If (@OSVersion <> "WIN_VISTA") OR (@OSVersion <> "WIN_7") Then _Vista_ApplyGlassArea($Form1, $Area, $Win_Back_Color) ;applying glass area to main GUI (area where $GlassArea label is)GUISetState(@SW_SHOW, $Form1)
[/autoit] [autoit][/autoit] [autoit];creating child GUI with top left image-menu-control
[/autoit] [autoit][/autoit] [autoit]
Global $iX = 0, $iY = 0, $iWidth = $IconSize, $iHeight = $IconSize
Global $controlGui, $HoverImage, $Mask, $FileGUI, $FileMenu, $EditGUI, $EditMenu, $HelpGUI, $HelpMenu, $DownGUI, $DownMenu#region create fake GUIs with each holding a clickable control
[/autoit] [autoit][/autoit] [autoit]
$ImageState = 1
_CreateFakeGUI($controlGui, 'ControlGUI', 48, 48, -1, -23, 1, $HoverImage)
$FileState = 1
_CreateFakeGUI($FileGUI, 'FileGUI', 35, $menuFontSize*2-Round($menuFontSize/1.5), 52, 4, 2, $FileMenu)
$EditState = 1
_CreateFakeGUI($EditGUI, 'EditGUI', 35, $menuFontSize*2-Round($menuFontSize/1.5), 92, 4, 2, $EditMenu)
$HelpState = 1
_CreateFakeGUI($HelpGUI, 'HelpGUI', 45, $menuFontSize*2-Round($menuFontSize/1.5), 130, 4, 2, $HelpMenu)
$DownState = 1
_CreateFakeGUI($DownGUI, 'DownGUI', 20, $menuFontSize*2-Round($menuFontSize/1.5), $width-18, 4, 2, $DownMenu)
#endregion#region create context menus
[/autoit] [autoit][/autoit] [autoit]
;----------Image Menu------------------------
$ImageDummy = GUICtrlCreateDummy()
$ImageContext = GUICtrlCreateContextMenu($ImageDummy)
$ImMinimize = GUICtrlCreateMenuItem("Minimize", $ImageContext)
$ImMaximize = GUICtrlCreateMenuItem("Maximize", $ImageContext)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $ImageContext)
$imExit = GUICtrlCreateMenuItem("Exit", $ImageContext)
;----------File Menu------------------------
$FileDummy = GUICtrlCreateDummy()
$FileContext = GUICtrlCreateContextMenu($FileDummy)
$FileNew = GUICtrlCreateMenu("New", $FileContext)
$FileNewProject = GUICtrlCreateMenuItem("Project", $FileNew)
$FileNewFile = GUICtrlCreateMenuItem("File", $FileNew)
$FileOpen = GUICtrlCreateMenuItem("Open", $FileContext)
$FileSave = GUICtrlCreateMenuItem("Save", $FileContext)
$FileSaveAs = guictrlcreatemenuitem("Save As...", $FileContext)
GUICtrlCreateMenuItem("", $FileContext)
$FileExit = guictrlcreatemenuitem("Exit", $FileContext)
;----------Edit Menu------------------------
$EditDummy = GUICtrlCreateDummy()
$EditContext = GUICtrlCreateContextMenu($EditDummy)
$EditUndo = GUICtrlCreateMenuItem("Undo", $EditContext)
$EditRedo = GUICtrlCreateMenuItem("Redo", $EditContext)
GUICtrlCreateMenuItem("", $EditContext)
$EditCut = GUICtrlCreateMenuItem("Cut", $EditContext)
$EditCopy = GUICtrlCreateMenuItem("Copy", $EditContext)
$EditPaste = GUICtrlCreateMenuItem("Paste", $EditContext)
GUICtrlCreateMenuItem("", $EditContext)
$EditPref = GUICtrlCreateMenuItem("Preferences", $EditContext)
;----------Help Menu------------------------
$HelpDummy = GUICtrlCreateDummy()
$HelpContext = GUICtrlCreateContextMenu($HelpDummy)
$HelpHelp = GUICtrlCreateMenuItem("Help", $HelpContext)
GUICtrlCreateMenuItem("", $HelpContext)
$HelpAbout = GUICtrlCreateMenuItem("About", $HelpContext)
;----------Down arrow Menu------------------------
$DownDummy = GUICtrlCreateDummy()
$DownContext = GUICtrlCreateContextMenu($DownDummy)
$DownTab = GUICtrlCreateMenuItem("Tab Groups", $DownContext)
$DownTabOther = GUICtrlCreateMenuItem("Tabs from other computers", $DownContext)
GUICtrlCreateMenuItem("", $DownContext)
$DownTabExample = GUICtrlCreateMenuItem("Example tab", $DownContext)
#endregion_Draw_menus() ;drawing all menu items
[/autoit] [autoit][/autoit] [autoit]Global $Mask = GUICreate('Mask', $iWidth-2, $iHeight-2, 0, -22, $WS_POPUP, $WS_EX_MDICHILD, $Form1) ;another child window for shade and gloss when moving mouse over image-menu or clicking it
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0xFFFFFF, $Mask)
WinSetTrans($Mask, '', 40)
GUISetState(@SW_DISABLE, $Mask) ;still not shown, only disabledGUIRegisterMsg(0xF,"MY_PAINT")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$iMsg = GUIGetMsg()
Switch $iMsg
Case $HelpAbout
MsgBox(48, 'About', 'Cool menus by... sandin' & @CRLF & @CRLF & '07.07.2011', -1, $Form1)
Case $ImMinimize
WinSetState($Form1, '', @SW_MINIMIZE)
Case $GUI_EVENT_CLOSE, $imExit, $CloseButton, $FileExit
Exit
Case $GlassArea ;moving window when holding glass area that isn't menu
dllcall("user32.dll","int","SendMessage","hWnd", $Form1,"int",0xA1,"int", 2,"int", 0)
EndSwitch
#region detection clicks and hovering above menu items
If WinActive($Form1) then ;<-- here's one problem, I need this in order for window not to detect any clicks if you click on another window that is above this one
;but then you can't click on any control even if the window is aside your currently active window.
_MenuBehavior($FileGUI, $FileMenu, $FileState, 'File', $FileContext)
_MenuBehavior($EditGUI, $EditMenu, $EditState, 'Edit', $EditContext)
_MenuBehavior($HelpGUI, $HelpMenu, $HelpState, 'Help', $HelpContext)
_MenuBehavior($DownGUI, $DownMenu, $DownState, ChrW(9660), $DownContext)
_MenuBehavior($controlGui, $HoverImage, $ImageState, '', $ImageContext)
EndIf
#endregion
WEndFunc _MenuBehavior($WinHWND, $i_MenuItem, ByRef $i_MenuState, $i_Label, $i_ContextMenu);, $i_Shine1, $i_Shine2, $i_Shine3, $i_Color1, $i_Color2)
[/autoit] [autoit][/autoit] [autoit]
Local $a = GUIGetCursorInfo($WinHWND)
Switch $a[4]
Case $i_MenuItem
If $a[2] = 1 Then
If $i_MenuState <> 3 Then
$i_MenuState = 3
if ($FileState <> 1) AND ($FileMenu <> $i_MenuItem) then
$FileState = 1
_Draw_Menu_ex($FileGUI, 'File', $menuFontSize, $shine3, 0x000000)
EndIf
if ($EditState <> 1) AND ($EditMenu <> $i_MenuItem) then ;making sure that disable all other menu clicked state (if there are any)
$EditState = 1
_Draw_Menu_ex($EditGUI, 'Edit', $menuFontSize, $shine3, 0x000000)
EndIf
if ($HelpState <> 1) AND ($HelpMenu <> $i_MenuItem) Then
$HelpState = 1
_Draw_Menu_ex($HelpGUI, 'Help', $menuFontSize, $shine3, 0x000000)
EndIf
if ($DownState <> 1) AND ($DownMenu <> $i_MenuItem) Then
$DownState = 1
_Draw_Menu_ex($DownGUI, ChrW(9660), $menuFontSize-Round(Sqrt($menuFontSize)), $shine3, 0x555555)
EndIf
if ($ImageState <> 1) AND ($HoverImage <> $i_MenuItem) Then
$ImageState = 1
GUISetState(@SW_HIDE, $Mask)
EndIf
If $i_MenuItem = $DownMenu then
_Draw_Menu_ex($WinHWND, ChrW(9660), $menuFontSize-Round(Sqrt($menuFontSize)), $shine2+2, 0x000099)
ElseIf $i_MenuItem = $HoverImage Then
GUISetBkColor(0x000000, $Mask)
GUISetState(@SW_SHOWNOACTIVATE, $Mask)
Else
_Draw_Menu_ex($WinHWND, $i_Label, $menuFontSize, $shine1, 0x000099) ;clicked File menu state, drawing average glow, and red color
EndIf
ShowMenu($WinHWND, $i_MenuItem, $i_ContextMenu) ;showing context menu for File
EndIf
Else
If $i_MenuState <> 2 Then
$i_MenuState = 2
If $i_MenuItem = $DownMenu Then
_Draw_Menu_ex($WinHWND, '| ' & ChrW(9660) & ' |', $menuFontSize-Round(Sqrt($menuFontSize)), $shine2, 0x555555)
ElseIf $i_MenuItem = $HoverImage Then
GUISetBkColor(0xFFFFFF, $Mask)
GUISetState(@SW_SHOWNOACTIVATE, $Mask)
Else
_Draw_Menu_ex($WinHWND, $i_Label, $menuFontSize, $shine2, 0x000000) ;high glow, black color
EndIf
EndIf
EndIf
Case Else
If $i_MenuState <> 1 Then
$i_MenuState = 1
If $i_MenuItem = $DownMenu Then
_Draw_Menu_ex($WinHWND, ChrW(9660), $menuFontSize-Round(Sqrt($menuFontSize)), $shine3, 0x555555)
ElseIf $i_MenuItem = $HoverImage Then
GUISetState(@SW_HIDE, $Mask)
Else
_Draw_Menu_ex($WinHWND, $i_Label, $menuFontSize, $shine3, 0x000000) ;spread glow so there aren't any, black color
EndIf
EndIf
EndSwitch
EndFuncFunc _CreateFakeGUI(ByRef $WinHWND, $WinTitle, $WinWIdth, $WinHeight, $Win_X, $Win_Y, $AddCtrl, ByRef $CtrlHWND);, $LabelSize = 35)
[/autoit] [autoit][/autoit] [autoit]
$WinHWND = GUICreate($WinTitle, $WinWIdth, $WinHeight, $Win_X, $Win_Y, $WS_POPUP, $WS_EX_MDICHILD, $Form1)
If $AddCtrl = 1 then
$CtrlHWND = GUICtrlCreatePic('', 0, 0, $iWidth, $iHeight) ;control to put image later on
ElseIf $AddCtrl = 2 Then
$CtrlHWND = GUICtrlCreateLabel('', 0, 0, $WinWIdth, $menuFontSize*2-Round($menuFontSize/1.5)) ;clickable area
GUICtrlSetBkColor(-1, 0x000000)
If (@OSVersion <> "WIN_VISTA") OR (@OSVersion <> "WIN_7") Then _Vista_ApplyGlass($WinHWND, $Win_Back_Color) ;apply glass on entire child window
EndIf
GUISetState(@SW_DISABLE, $WinHWND) ;disabling window so that it doesn't take focus from parent when you click on it
GUISetState(@SW_SHOWNOACTIVATE, $WinHWND) ;show and doesn't focus
If $AddCtrl = 1 Then
_Create_7Image() ;creating image with 7 number on it (like win7)
GUICtrlSetImage($CtrlHWND, $temp_image) ;setting image into control we created earlier.
;Why did I use this method and not redrew image 7 in MY_PAINT? because it would be very slow, this method is faster.
EndIf
EndFuncFunc ShowMenu($hWnd, $CtrlID, $nContextID)
[/autoit] [autoit][/autoit] [autoit]
Local $timez = TimerInit()
Local $arPos, $x, $y
Local $hMenu = GUICtrlGetHandle($nContextID)$arPos = ControlGetPos($hWnd, "", $CtrlID)
[/autoit] [autoit][/autoit] [autoit]$x = $arPos[0]
[/autoit] [autoit][/autoit] [autoit]
$y = $arPos[1] + $arPos[3]ClientToScreen($hWnd, $x, $y)
[/autoit] [autoit][/autoit] [autoit]
TrackPopupMenu($hWnd, $hMenu, $x, $y)EndFunc ;==>ShowMenu
[/autoit] [autoit][/autoit] [autoit]Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
[/autoit] [autoit][/autoit] [autoit]
Local $stPoint = DllStructCreate("int;int")DllStructSetData($stPoint, 1, $x)
[/autoit] [autoit][/autoit] [autoit]
DllStructSetData($stPoint, 2, $y)DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
[/autoit] [autoit][/autoit] [autoit]$x = DllStructGetData($stPoint, 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$y = DllStructGetData($stPoint, 2)
$stPoint = 0
EndFunc ;==>ClientToScreenFunc TrackPopupMenu($hWnd, $hMenu, $x, $y)
[/autoit] [autoit][/autoit] [autoit]
DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
EndFunc ;==>TrackPopupMenu#region glass functions for aero graphic environment (link at the top of the script)
[/autoit] [autoit][/autoit] [autoit]
Func _Vista_ApplyGlass($hWnd, $bColor = 0x000000)
GUISetBkColor($bColor)
$Ret = DllCall("dwmapi.dll", "long", "DwmExtendFrameIntoClientArea", "hwnd", $hWnd, "long*", DllStructGetPtr($Struct))
If @error Then
Return 0
SetError(1)
Else
Return $Ret
EndIf
EndFunc ;==>_Vista_ApplyGlassFunc _Vista_ApplyGlassArea($hWnd, $Area, $bColor = 0x000000)
[/autoit] [autoit][/autoit] [autoit]
If IsArray($Area) Then
DllStructSetData($Struct, "cxLeftWidth", $Area[0])
DllStructSetData($Struct, "cxRightWidth", $Area[1])
DllStructSetData($Struct, "cyTopHeight", $Area[2])
DllStructSetData($Struct, "cyBottomHeight", $Area[3])
GUISetBkColor($bColor); Must be here!
$Ret = DllCall("dwmapi.dll", "long*", "DwmExtendFrameIntoClientArea", "hwnd", $hWnd, "ptr", DllStructGetPtr($Struct))
If @error Then
Return 0
Else
Return $Ret
EndIf
Else
MsgBox(16, "_Vista_ApplyGlassArea", "Area specified is not an array!")
EndIf
EndFunc ;==>_Vista_ApplyGlassArea
#endregionFunc _Draw_menus()
[/autoit] [autoit][/autoit] [autoit]
_Draw_Menu_ex($FileGUI, 'File', $menuFontSize, $shine3, 0x000000)
_Draw_Menu_ex($EditGUI, 'Edit', $menuFontSize, $shine3, 0x000000)
_Draw_Menu_ex($HelpGUI, 'Help', $menuFontSize, $shine3, 0x000000)
_Draw_Menu_ex($DownGUI, ChrW(9660), $menuFontSize-Round(Sqrt($menuFontSize)), $shine3, 0x555555)
EndFuncFunc _Draw_Menu_ex($WinHandle, $iCaption, $iSize, $iShine, $iColor)
[/autoit] [autoit][/autoit] [autoit]
Local $hDC = _WinAPI_GetDC($WinHandle)
Local $tClientRect = _WinAPI_GetClientRect($WinHandle)
Local $sText = $iCaption
Local $hFont = _WinAPI_CreateFont($iSize, $iSize/2-1, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
$OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'SegoeUI')
_DrawGlowingText($hDC, $sText, $tClientRect, $iShine, $hFont, $iColor)
_WinAPI_DeleteObject($hFont)
_WinAPI_ReleaseDC($WinHandle, $hDC)
EndFunc#region making label shine in glass area (Link at the top of the script)
[/autoit] [autoit][/autoit] [autoit]
Func _DrawGlowingText($hDC, $sText, $tRc, $iGlowSize = 10, $hFont = 0, $iTextClr = -1)
Local $hCDC
Local $hBrush, $hOldBrush
Local $tRcText
Local $tBI, $tDTO
Local $hDIBBmp, $hOldBmp
Local $hOldFont
Local $tST
Local $iFlags = BitOR($DTT_GLOWSIZE, $DTT_COMPOSITED)$hCDC = _WinAPI_CreateCompatibleDC($hDC)
[/autoit] [autoit][/autoit] [autoit]$tBI = DllStructCreate($tagBITMAPINFO)
[/autoit] [autoit][/autoit] [autoit]
DllStructSetData($tBI, "Size", DllStructGetSize($tBI)-4)
DllStructSetData($tBI, "Width", DllStructGetData($tRc, "Right")-DllStructGetData($tRc, "Left"))
DllStructSetData($tBI, "Height", -(DllStructGetData($tRc, "Bottom")-DllStructGetData($tRc, "Top")))
DllStructSetData($tBI, "Planes", 1)
DllStructSetData($tBI, "BitCount", 32)
DllStructSetData($tBI, "Compression", 0) ; BI_RGB$hDIBBmp = _WinAPI_CreateDIBSection($hDC, $tBI)
[/autoit] [autoit][/autoit] [autoit]
$hOldBmp = _WinAPI_SelectObject($hCDC, $hDIBBmp)
If $hFont Then $hOldFont = _WinAPI_SelectObject($hCDC, $hFont)$tDTO = DllStructCreate($tagDTTOPTS)
[/autoit] [autoit][/autoit] [autoit]
DllStructSetData($tDTO, "Size", DllStructGetSize($tDTO))If $iTextClr <> -1 Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$iFlags = BitOR($iFlags, $DTT_TEXTCOLOR)
DllStructSetData($tDTO, "clrText", $iTextClr)
EndIfDllStructSetData($tDTO, "Flags", $iFlags)
[/autoit] [autoit][/autoit] [autoit]
DllStructSetData($tDTO, "GlowSize", $iGlowSize)_WinAPI_DrawThemeTextEx($hTheme, $hCDC, 0, 0, $sText, _
[/autoit] [autoit][/autoit] [autoit]
BitOR($DT_SINGLELINE, $DT_CENTER, $DT_VCENTER, $DT_NOPREFIX), $tRc, $tDTO)_WinAPI_BitBlt($hDC, DllStructGetData($tRc, "Left"), DllStructGetData($tRc, "Top"), _
[/autoit] [autoit][/autoit] [autoit]
DllStructGetData($tRc, "Right")-DllStructGetData($tRc, "Left"), _
DllStructGetData($tRc, "Bottom")-DllStructGetData($tRc, "Top"), $hCDC, 0, 0, 0xCC0020) ; SRCCOPY ;top+Sqrt($menuFontSize)_WinAPI_SelectObject($hCDC, $hOldBmp)
[/autoit] [autoit][/autoit] [autoit]
If $hFont Then _WinAPI_SelectObject($hCDC, $hOldFont)
_WinAPI_DeleteObject($hDIBBmp)
_WinAPI_DeleteDC($hCDC)
EndFuncFunc _WinAPI_CreateDIBSection($hDC, Const ByRef $tBmpInfo, $iUsage = 0, $pBits = 0, $hSecond = 0, $iOffset = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall("gdi32.dll", "hwnd", "CreateDIBSection", "hwnd", $hDC, "ptr", DllStructGetPtr($tBmpInfo), _
"uint", $iUsage, "ptr", $pBits, "hwnd", $hSecond, "uint", $iOffset)If @error Then Return SetError(@error, @extended, 0)
[/autoit] [autoit][/autoit] [autoit]
If $aResult[0] = 87 Then Return SetError(1, 1, 0); 87 = ERROR_INVALID_PARAMETER
If $aResult[0] = 0 Then Return SetError(1, 2, 0)
Return SetError(0, 0, $aResult[0])
EndFuncFunc _WinAPI_DrawThemeTextEx($hTheme, $hDC, $iPartId, $iStateId, $sText, $iFlags, ByRef $tRect, Const ByRef $tDTTOPTS)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall("uxtheme.dll", "int", "DrawThemeTextEx", "ptr", $hTheme, "hwnd", $hDC, "int", $iPartId, "int", $iStateId, _
"wstr", $sText, "int", -1, "uint", $iFlags, "ptr", DllStructGetPtr($tRect), "ptr", DllStructGetPtr($tDTTOPTS))If @error Then Return SetError(@error, @extended, 0)
[/autoit] [autoit][/autoit] [autoit]
If $aResult[0] <> 0 Then Return SetError(1, 0, 0)
Return SetError(0, 0, $aResult[0] = 0)
EndFuncFunc _WinAPI_OpenThemeData($hWnd, $sClassList)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall("uxtheme.dll", "hwnd", "OpenThemeData", "hwnd", $hWnd, "wstr", $sClassList)If @error Then Return SetError(@error, @extended, 0)
[/autoit] [autoit][/autoit] [autoit]
If $aResult[0] = 0 Then Return SetError(1, 0, 0)
Return SetError(0, 0, $aResult[0])
EndFuncFunc _WinAPI_CloseThemeData($hTheme)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall("uxtheme.dll", "int", "CloseThemeData", "hwnd", $hTheme)If @error Then Return SetError(@error, @extended, 0)
[/autoit] [autoit][/autoit] [autoit]
Return SetError(0, 0, $aResult[0] = 0)
EndFunc
#endregionFunc MY_PAINT($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
_Draw_menus()
Return $GUI_RUNDEFMSG
EndFuncFunc _Create_7Image() ;drawn by myself xP
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()
Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($controlGui)
Local $hbitmap = _GDIPlus_BitmapCreateFromGraphics($iwidth, $iheight, $hGraphic)
Local $backbuffer = _GDIPlus_ImageGetGraphicsContext($hbitmap)
Local $LetterSize = 36
Local $Letter = '7'
Local $hbrush = _GDIPlus_BrushCreateSolid(0xFF152a3d)
Local $hbrushB = _GDIPlus_BrushCreateSolid(0xFF000000)
Local $hbrush2 = _GDIPlus_BrushCreateSolid(0x3A152a3d)
Local $hbrush3 = _GDIPlus_BrushCreateSolid(0x28FFFFFF)
Local $hFormat = _GDIPlus_StringFormatCreate ()
Local $hFamily = _GDIPlus_FontFamilyCreate ("Times New Roman")
Local $hPen = _GDIPlus_PenCreate (0xFF454545)
Local $hFont = _GDIPlus_FontCreate ($hFamily, $LetterSize, 1)
Local $tLayout
Local $tLayout2#region malkey's gradient example ;creating gradient
[/autoit] [autoit][/autoit] [autoit]
Local $aFact[4] = [0, 0.3, 0.6, 1.0]
Local $aPosit[4] = [0.0, 0.3, 0.6, 1.0]
Local $hBrushLin2 = gdiplus_CreateLineBrushFromRect($iX, $iY, $iWidth, $iHeight, $aFact, $aPosit, _
0xFF5078fb, 0xFF91e9ff, 0x00000002, 1)
_GDIPlus_GraphicsFillRect($backbuffer, $iX, $iY, $iWidth, $iHeight, $hBrushLin2)
#endregionLocal $StartNum = 1 ;creating little pixels to add texture
[/autoit] [autoit][/autoit] [autoit]
for $j = 1 to 48
for $i = $StartNum to 48 step 3
_GDIPlus_GraphicsFillRect($backbuffer, $i-1, $j-1, 1, 1, $hbrush2)
Next
$StartNum += 1
If $StartNum > 3 then $StartNum = 1
Next
Local $3D_Depth = 3
$tLayout2 = _GDIPlus_RectFCreate ($iX+7, $iY-1, $iWidth, $iHeight)
_GDIPlus_GraphicsDrawStringEx ($backbuffer, $Letter, $hFont, $tLayout2, $hFormat, $hbrush2) ;creating shadow under character
For $i = 1 to $3D_Depth
$tLayout = _GDIPlus_RectFCreate ($iX+6-$i, $iY-$i-2, $iWidth-4, $iHeight+4)
If $i = $3D_Depth then
_GDIPlus_GraphicsDrawStringEx ($backbuffer, $Letter, $hFont, $tLayout, $hFormat, $hBrush) ;creating character
Else
_GDIPlus_GraphicsDrawStringEx ($backbuffer, $Letter, $hFont, $tLayout, $hFormat, $hBrushB) ;creating character depth
EndIf
NextLocal $i_a = 48 ;ellipse points
[/autoit] [autoit][/autoit] [autoit]
Local $i_b = 32
For $j = 1 to 48
For $i = 1 to 48
if $i >= Sqrt($i_a^2-$i_a^2*$j^2/$i_b^2) then _GDIPlus_GraphicsFillRect($backbuffer, 48-$i, 48-$j, 1, 1, $hbrush3) ;creating gloss with ellipse equation
Next
Next_GDIPlus_GraphicsDrawRect($backbuffer, $iX, $iY, $iWidth-1, $iHeight-1, $hPen) ;boxing entire image with dark grey line
[/autoit] [autoit][/autoit] [autoit]Local $GC = _GDIPlus_ImageGetGraphicsContext($hbitmap)
[/autoit] [autoit][/autoit] [autoit]
Local $newBmp = _GDIPlus_BitmapCreateFromGraphics($iwidth, $iheight, $GC)
Local $newGC = _GDIPlus_ImageGetGraphicsContext($newBmp)
_GDIPlus_GraphicsDrawImageRect($newGC, $hbitmap, 0, 0, $iwidth, $iheight)
_GDIPlus_ImageSaveToFile($newBmp, $temp_image) ;saving created image - it's easier to show image and leave it there, than redrawing this entire thing
;when GID+ gets disappeared
_WinAPI_DeleteObject($hbitmap) ;disposing all the unneeded stuff
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_GraphicsDispose($GC)
_GDIPlus_GraphicsDispose($newGC)
_GDIPlus_BitmapDispose($newBmp)
_GDIPlus_BrushDispose($hBrushLin2)
_GDIPlus_BrushDispose($hbrush)
_GDIPlus_BrushDispose($hbrushB)
_GDIPlus_BrushDispose($hbrush2)
_GDIPlus_BrushDispose($hbrush3)
_GDIPlus_PenDispose ($hPen)
_GDIPlus_FontDispose ($hFont)
_GDIPlus_FontFamilyDispose ($hFamily)
_GDIPlus_StringFormatDispose ($hFormat)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($temp_image)
_GDIPlus_Shutdown()
EndFunc#region drawing gradient by Malkey (link at the top of the script)
[/autoit] [autoit][/autoit] [autoit]
Func gdiplus_CreateLineBrushFromRect($iX, $iY, $iWidth, $iHeight, $aFactors, $aPositions, _
$iArgb1 = 0xFF0000FF, $iArgb2 = 0xFFFF0000, $LinearGradientMode = 0x00000001, $WrapMode = 0)Local $tRect, $pRect, $aRet, $tFactors, $pFactors, $tPositions, $pPositions, $iCount
[/autoit] [autoit][/autoit] [autoit]If $iArgb1 = -1 Then $iArgb1 = 0xFF0000FF
[/autoit] [autoit][/autoit] [autoit]
If $iArgb2 = -1 Then $iArgb2 = 0xFFFF0000
If $LinearGradientMode = -1 Then $LinearGradientMode = 0x00000001
If $WrapMode = -1 Then $WrapMode = 1$tRect = DllStructCreate("float X;float Y;float Width;float Height")
[/autoit] [autoit][/autoit] [autoit]
$pRect = DllStructGetPtr($tRect)
DllStructSetData($tRect, "X", $iX)
DllStructSetData($tRect, "Y", $iY)
DllStructSetData($tRect, "Width", $iWidth)
DllStructSetData($tRect, "Height", $iHeight);Note: Withn _GDIPlus_Startup(), $ghGDIPDll is defined
[/autoit] [autoit][/autoit] [autoit]
$aRet = DllCall($ghGDIPDll, "int", "GdipCreateLineBrushFromRect", "ptr", $pRect, "int", $iArgb1, _
"int", $iArgb2, "int", $LinearGradientMode, "int", $WrapMode, "int*", 0)If IsArray($aFactors) = 0 Then Dim $aFactors[4] = [0.0, 0.4, 0.6, 1.0]
[/autoit] [autoit][/autoit] [autoit]
If IsArray($aPositions) = 0 Then Dim $aPositions[4] = [0.0, 0.3, 0.7, 1.0]$iCount = UBound($aPositions)
[/autoit] [autoit][/autoit] [autoit]
$tFactors = DllStructCreate("float[" & $iCount & "]")
$pFactors = DllStructGetPtr($tFactors)
For $iI = 0 To $iCount - 1
DllStructSetData($tFactors, 1, $aFactors[$iI], $iI + 1)
Next
$tPositions = DllStructCreate("float[" & $iCount & "]")
$pPositions = DllStructGetPtr($tPositions)
For $iI = 0 To $iCount - 1
DllStructSetData($tPositions, 1, $aPositions[$iI], $iI + 1)
Next$hStatus = DllCall($ghGDIPDll, "int", "GdipSetLineBlend", "hwnd", $aRet[6], _
[/autoit] [autoit][/autoit] [autoit]
"ptr", $pFactors, "ptr", $pPositions, "int", $iCount)
Return $aRet[6] ; Handle of Line Brush
EndFunc ;==>Gdiplus_CreateLineBrushFromRect
#endregionFunc _CleanUp()
[/autoit]
_WinAPI_CloseThemeData($hTheme)
FileDelete($temp_image)
EndFunc -
Plötzliche Eingebung: Wenn ich {altdown} sende, und die {pause}-Taste am Pedal sende, wird daraus !{pause}. Deswegen stimmt der Hotkey nicht mehr und es lässt sich nicht bedienen. Ich Koffer.
danke, chessiger und shadowigor! -
Plötzliche Eingebung: Wenn ich {altdown} sende, und die {pause}-Taste am Pedal sende, wird daraus !{pause}. Deswegen stimmt der Hotkey nicht mehr und es lässt sich nicht bedienen. Ich Koffer.
lg und danke christoph54 -
Gute Idee! Leider funktioniert es nicht. Außerdem wird lt. einem Beitrag im englischen Forum die mit Hotkeyset festgelegte Funktion erst beim Loslassen der Taste ausgeführt.
-
Grüß euch!
Dieser Thread resultiert aus diesem: https://autoit.de/index.php?page=Thread&threadID=33147Ich habe bei meinem Skript folgendes Problem: Ich sende die Tastenkombi Alt-Tab ({AltDown}{Tab}{AltUp}) aus 3 verschiedenen Funkionen, um via Hotkey (Fußpedal) zwischen den Fenstern umschalten zu können. Leider funktioniert das mit Send () nicht und ich habe mir schon die Finger wundgegooglet, eine lösung zu finden.
Send allein funktioniert; ebenso wie meine Funktion, wenn ich die Tasten in eine Variable schreibe und dann gesammelt absende.Code
[autoit]$t = TimerInit ()
[/autoit]
$s = ""
HotKeySet ("{pause}", "_f1")
Func _f1()
$t = TimerInit ()
HotKeySet ("{pause}", "_f2")
$s = "{altdown}{tab}"
AdlibRegister ("_c", 100)
EndFunc
Func _f2 ()
$t = TimerInit ()
$s &= "{tab}"
EndFunc
Func _c ()
If TimerDiff ($t) > 600 Then
HotKeySet ("{pause}", "_f1")
$s &= "{altup}"
Send ($s)
AdlibUnRegister ("_c")
EndIf
EndFunc
While 1
WEndDanke im Vorraus für Eure Unterstützung!
tobias -
chesstiger: habe mich sofort auf WinList gestürzt. Ich bin jetzt bei dem Problem, dass auch der STart-knopf und die Sidebar gadgets sichtbar sind.(isvisible)
Ich habe herausgefunden, dass ProgMan-Handles 0x00100?? sind und Sidebar MEIST 0x00101??. aber nicht immer: das CPU-Widget hat 2 Handles: eines davon hat 0x00200??. Ein anderes Gadget hat zB 0x01203?? uswusf.
Ich wüsste deswegen gern eine Methode, um die Class (AU3WinInfo) auszulesen: Kennt den jemand?edit: weder _WinAPI_GetClassName() noch WinGetClassList () geben für Gadgets "SideBar_HTMLHostWindow" zurück.
lg und danke für eure bisherigen mühen!!!
-
Ich verstehe. Die While-schleifen habe ich selbst auch bereits eingebaut; dann lässt sich aber überhaupt nur noch 1 Fenser weiterschalten. Die Sleeps wollte ich erst einbauen, wenn das Skript fertig ist
Ich bin am verzweifeln! ich bin mir ziemlich sicher, mein/unser code stimmt!
gibt es einen anderen Weg, durch die Fenster zu schalten als AltTab? (ein Au3-Skript vlt?)
lg -
Danke erstmal Shadowigor. Ich habe den 1. Code natürlich schon probiert und er geht. Der Zweite funktioniert überhaupt nicht (was soll der eigentlich machen?) Ich glaube, das Problem liegt bei dem switchen der Hotkeyfunktion.
lg
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Edit: ich habe jetzt alles mit _isPressed nachprogrammiert. Es hakt, wenn man mehr als 2 Fenster umschalten will. Ich verzweifle langsam!Code
[autoit]#include <Misc.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit]
While 1
If _IsPressed ("13") Then
Send ("{altdown}{tab}")
$tim = TimerInit ()
Do
If _IsPressed ("13") Then
Send ("{tab}")
$tim = TimerInit ()
EndIf
Until TimerDiff ($tim) > 600
Send ("{altup}")
EndIf
WEnd -
Grüß euch!
Ich bin dabei, ein Fußpedal (mit der PAUSE-Taste verbunden) einzusetzen, um zwischen den aktiven Fenstern zu wechseln. Leider funktioniert mein Code zum Weiterschalten von mehr als 1em Fenster (ich drücke 2x aufs pedal->send(alt+tab+tab) nicht. Man gelangt dann wieder zum vorherigen Fenster.Code
[autoit]$tim = TimerInit ();zum globalen definieren (ich weiß...)
[/autoit] [autoit][/autoit] [autoit]
HotKeySet ("{pause}", "tab1")Func tab1()
[/autoit] [autoit][/autoit] [autoit]
$tim = TimerInit ()
Send ("{altdown}{tab}")
HotKeySet ("{pause}", "tab2")
Do
Until TimerDiff ($tim) > 600
HotKeySet ("{pause}", "tab1")
Send ("{altup}")
EndFuncFunc tab2()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Send ("{tab}")
$tim = TimerInit ()
EndFuncWhile 1
[/autoit]
WEnd
bitte helft mir! Der Code ist sicher auch für euch nützlich (wenn er funktionieren würde)lg tobi
-
Danke erstmal! Werde mich einlesen (kann aber etwas dauern, bis ich wegen der Schule wieder Zeit finde)
liebe grüße -
Hallo!
Ich habe meine Frage nun auch auf http://www.autoitscript.com/forum/topic/14…to-power-a-led/ gestellt. Ich möchte damit nicht eure Kompetenz anzweifeln, aber das englische Forum ist doch etwas größer.
Liebe Grüße