Beiträge von UEZ
-
-
Auch von mir ein Happy Birthday und alles Gute! 2 Jahre noch, dann bist du 18 und danach fliegt die Zeit...
Gruß,
UEZ -
-
-
[autoit]
[/autoit]
$tel = "08946353"
$neu = "0" & $tel
MsgBox(0, "Test", $neu)Gruß,
UEZ -
Klappt es direkt, wenn du diese Zeilen in Beispiel 1 benutzt?
[autoit]
[/autoit]
Global $hklm = "HKLM"
If @AutoItX64 Then $hklm = "HKLM64"
Global Const $sFile = RegRead($hklm & "\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") & "\Examples\GUI\Torus.png"Gruß,
UEZ -
Hat jemand noch das gleiche Problem?
Ich habe es unter Win7 x64 (Aero an) und WinXP x86 (Luna an) getestet und beide Beispiele funzen!
Gruß,
UEZ -
_WinAPI_SetWindowTitleIcon() ist eine Funktion, die entweder eine Bild Datei einliest oder ein Memory Bild Handle nimmt, das Bild herunter skaliert und es als Icon im Fenster Titel anzeigt!
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. _WinAPI_SetWindowTitleIcon.au3
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;~ #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include-once
#include <GDIPlus.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("__Exit__");======================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _WinAPI_SetWindowTitleIcon
; Description: Loads an image, scales it to desired width or height and creates and icon handle
;
; Parameters: $sFile: image file to be loaded or bitmap handle
; $hWnd: GUI handle where the new icon should be displayed
; $iW: new image (icon) width. Default values is 32
; $iH: new image (icon) height. Default values is 32
;
; Requirement(s): GDIPlus.au3, _WinAPI_GetClassLongEx() and _WinAPI_SetClassLongEx()
; Return Value(s): Success: HICON handle, Error: 0 (see below)
; Error codes: 1: $sFile value is empty
; 2: $hWnd is not a windows handle
; 3: filename doesn't exist or $sFile is not a valid bitmap handle
; 4: unable to create image from file
; 5: unable to create thumbnail from image handle
; 6: unable to create HICON from bitmap handle
; 7: unable to set ClassLongEx from GUI handle
;
; Limitation: only x86 compatible currently
;
; Author(s): UEZ, Yashied for _WinAPI_GetClassLongEx() and _WinAPI_SetClassLongEx()
; Version: v0.96 Build 2012-06-03 Beta
;
; Remarks: When finished release icon with _WinAPI_DestroyIcon()
;=======================================================================================
Func _WinAPI_SetWindowTitleIcon($sFile, $hWnd, $iW = 32, $iH = 32)
If $sFile = "" Then Return SetError(1, 0, 0)
If Not IsHWnd($hWnd) Then Return SetError(2, 0, 0)
Local Const $GCL_HICON = -14, $GCL_HICONSM = -34
Local $hImage
If Not FileExists($sFile) Then
If _GDIPlus_ImageGetType($sFile) = -1 Then Return SetError(3, @error, 0)
$hImage = $sFile ;interpret $sFile as a bitmap handle
Else
$hImage = _GDIPlus_ImageLoadFromFile($sFile)
If @error Then Return SetError(4, @error, 0)
EndIf
Local $aRes = DllCall($ghGDIPDll, "uint", "GdipGetImageThumbnail", "handle", $hImage, "uint", $iW, "uint", $iH, "int*", 0, "ptr", 0, "ptr", 0)
If @error Then Return SetError(5, @error, 0)
Local $hImageScaled = $aRes[4]
$aRes = DllCall($ghGDIPDll, "uint", "GdipCreateHICONFromBitmap", "handle", $hImageScaled, "int*", 0)
If @error Then
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ImageDispose($hImageScaled)
Return SetError(6, @error, 0)
EndIf
Local $hIconNew = $aRes[2]
_WinAPI_SetClassLongEx($hWnd, $GCL_HICONSM, $hIconNew)
If @error Then
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ImageDispose($hImageScaled)
Return SetError(7, @error, 0)
EndIf
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ImageDispose($hImageScaled)
Return $hIconNew
EndFuncFunc __Exit__()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Shutdown()
EndFunc; #FUNCTION# ====================================================================================================================
[/autoit]
; Name...........: _WinAPI_SetClassLongEx
; Description....: Replaces the specified value into the specified window belongs.
; Syntax.........: _WinAPI_SetClassLongEx ( $hWnd, $iIndex, $iNewLong )
; Parameters.....: $hWnd - Handle to the window.
; $iIndex - The value to be replaced. This parameter can be one of the following values.
;
; $GCL_CBCLSEXTRA
; $GCL_CBWNDEXTRA
; $GCL_HBRBACKGROUND
; $GCL_HCURSOR
; $GCL_HICON
; $GCL_HICONSM
; $GCL_HMODULE
; $GCL_MENUNAME
; $GCL_STYLE
; $GCL_WNDPROC
;
; $iNewLong - The replacement value.
; Return values..: Success - The previous value.
; Failure - 0 and sets the @error flag to non-zero.
; Author.........: Yashied
; Modified.......:
; Remarks........: None
; Related........:
; Link...........: @@MsdnLink@@ SetClassLong
; Example........: Yes
; ===============================================================================================================================
Func _WinAPI_SetClassLongEx($hWnd, $iIndex, $iNewLong)
Local $Ret
If @AutoItX64 Then
$Ret = DllCall('user32.dll', 'ulong_ptr', 'SetClassLongPtrW', 'hwnd', $hWnd, 'int', $iIndex, 'long_ptr', $iNewLong)
Else
$Ret = DllCall('user32.dll', 'ulong', 'SetClassLongW', 'hwnd', $hWnd, 'int', $iIndex, 'long', $iNewLong)
EndIf
If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0)
Return $Ret[0]
EndFunc ;==>_WinAPI_SetClassLongEx
#endregionBeispiel1 (lädt ein Bild):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include "_WinAPI_SetWindowTitleIcon.au3"_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
Global Const $sFile = StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\Torus.png")Global $hWnd = GUICreate("Display Windows Title Icon from file by UEZ 2011", -1, -1, -1, -1, BitOR($WS_CAPTION, $WS_SYSMENU), $WS_EX_DLGMODALFRAME)
[/autoit] [autoit][/autoit] [autoit]
Global $hIcon_New = _WinAPI_SetWindowTitleIcon($sFile, $hWnd)
GUISetState()While 1
[/autoit]
If GUIGetMsg("") = -3 Then
_WinAPI_DestroyIcon($hIcon_New)
_GDIPlus_Shutdown()
GUIDelete($hWnd)
ExitLoop
EndIf
WEndBeispiel 2 (lädt ein Bild vom Speicher):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Memory.au3>
#include <WindowsConstants.au3>
#include "_WinAPI_SetWindowTitleIcon.au3"_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
Global $hWnd = GUICreate("Display Windows Title Icon from file by UEZ 2011", -1, -1, -1, -1, BitOR($WS_CAPTION, $WS_SYSMENU), $WS_EX_DLGMODALFRAME)
Global $hMemImage = Load_BMP_From_Mem(_GIF())
Global $hIcon_New = _WinAPI_SetWindowTitleIcon($hMemImage, $hWnd)
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
If GUIGetMsg("") = -3 Then
_WinAPI_DestroyIcon($hIcon_New)
_GDIPlus_Shutdown()
GUIDelete($hWnd)
Exit
EndIf
WEnd;======================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: Load_BMP_From_Mem
; Description: Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters: $bImage: the binary string which contains any valid image which is supported by GDI+
; Optional: $hHBITMAP: if false a bitmap will be created, if true a hbitmap will be created
;
; Remark: hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;
; Requirement(s): GDIPlus.au3, Memory.au3
; Return Value(s): Success: handle to bitmap or hbitmap, Error: 0
; Error codes: 1: $bImage is not a binary string
; 2: unable to create stream on HGlobal
; 3: unable to create bitmap from stream
;
; Author(s): UEZ
; Additional Code: thanks to progandy for the MemGlobalAlloc and tVARIANT lines
; Version: v0.96 Build 2011-08-14 Beta
;=======================================================================================
Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
Local $declared = True
If Not $ghGDIPDll Then
_GDIPlus_Startup()
$declared = False
EndIf
Local $aResult
Local Const $memBitmap = Binary($bImage) ;load image saved in variable (memory) and convert it to binary
Local Const $len = BinaryLen($memBitmap) ;get length of image
Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002)
Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
_MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE
$aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
If @error Then SetError(2, 0, 0)
Local Const $hStream = $aResult[3]
$aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
If @error Then SetError(3, 0, 0)
Local Const $hBitmap = $aResult[2]
Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
"dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
$tMem = 0
$tVARIANT = 0
If $hHBITMAP Then
Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
_GDIPlus_BitmapDispose($hBitmap)
If Not $declared Then _GDIPlus_Shutdown()
Return $hHBmp
EndIf
If Not $declared Then _GDIPlus_Shutdown()
Return $hBitmap
EndFunc ;==>Load_BMP_From_MemFunc _GIF()
[/autoit] [autoit][/autoit] [autoit]
Local $GIF
$GIF &= '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'
$GIF &= 'OZ54QIDDNkMgcVa9lHDvBwQEII8AgJTwgB0gM0LrCTzIYIo5eqSwRAgQpPKKBFNk45QxU9grQSpePNBAAvYAckAJhgT/Me0G2DhhxwMQXDGLEEdssccm1dSjwAWAOJWP1GsHAUoKLOAiAAGAfAABDzFggI0VL8hTwgEh5KIKOCxgkkwwCqzd9lD1XKG2AvXU0kEf65RiD+d7LwHHCBj8wEPPPYsgzO6DYOLwvb3o1AwuqdwbDSCLALNFKJvrvXcKJzABxxQ9AwKIACLkMUwfHUACgU8SQBA9TJu8fy8BS3BRxg0JGJA38iFIhCAYcADzAYIA9hDAEgrghlgIIgQPs9cUQPASKDQAEK94xQU+IAB9+EEK+gjAA37nPa354AAESOEBE2iAFKTDBwnImk8uIAAtgOsk14DBGlpggFQcwAAzGEIB/xjAgAgIIAQh8N4Bp2APbqWQhQxoQToYIAAIlGACj1jDGm6IQxjokAcG8MCqBlCAASTgAYK4QhLNRwABuPF3bTTAAwbgh0dM4AFQgMYadMhFlCTiC87gRTh80AI/BKAABQiACEyRDDWu0I1uTKEADGCALWjhEUawBS9EsQYy9BEliDhFIVCAAmV8oQD6KEADFAkJVSgiBJKkJCTdKII9uIALjyDDKNsAh6y0hgp0gEMDBnCNRNwgFLmYxSweKUsB5AN9odCDC4iQDnLg4DiKIgoSspCBFWQgDvIgphkSUYoOzCIZv3OjLEUQDEWAAhQdWAcR4ODNFVSAHKgaChLekf+BDNThFqMYwASkwYYOdEAIwRCBOilJSXsoQhUdoAEQhtGINERhBbdAgVOQgALWkCEDUBhAA1hAAyEIQRiQZChDH2AARUSUBtJoRBTYsYI4oGA5Q7GGP7LzhSTgogAzWMAiPOEJA6T0AUhl6BKEIQSJSmEP7BhCGvxRCKdQog47hQY0GABULTTAAyJg6UojgNQHiOAFQtCDHtjAg058oQ7kSII3skKJRtAiCZxApBa0UIAEkHWsESArS9vxggSMQg9wSActCqGLuc7FDsDgxDV24AO+BuCvcoxAAjYb2Ah4wAMJ8EAlYjEEdXDiHogIzDDigYw+mIEFPkikX8u62QD/bPa2tdVHA4aADH54ZC6IYEE/+vAJcLghtgywLVKXkIAAONe5t3UuV4fAiXT8di6XQMYnzrEFNPA1uZu9Ai48EAB93OC5zyViAaSgjk5cNytg4IcdzDAIHlR2iLb1QB4wUQkSVGIR50UvA8iohXLkMjAqSAcXCmAGO6DBAmVMrn5pkIsjAMETAZYuVwtQYGc8IjDGMMEEGpACalgAwikYgD5G4QkgsIEGpbgBEZMbAPVy2AgWSAeIRVyACczAAnwtgDxKAYQOsOHIeZDxjGes13RYAFdzMYQFJkDlGfghyAyoxB7McGQagKMS+mBAmJkM1HQYQQsI3usMZqCFKyNyacCyWAQbznEEM7hAyWSeQJuvoALNwAIKUNBCC6b85hvAgQ2J2MEO5LFkG0/AAipILXNOAQYLxBaRN1hEOxqgygWseQYNaEBQfZCCFHxIBW8otTwYPYAUGGITIIi1rGP9BplB6da4TkhAAAA7'
Return Binary(_Base64Decode($GIF))
EndFunc ;==>_GIFFunc _Base64Decode($input_string)
[/autoit]
Local $struct = DllStructCreate("int")
Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
$a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
Return DllStructGetData($a, 1)
EndFunc ;==>_Base64DecodeTo do:
Wenn man eine GUI erstellt, sie mit einem neue Icon versieht, die GUI löscht und eine neue GUI erstellt und sie wiederum mit einem Icon versehen will, funzt das Ganze nicht mehr!
Sollte jetzt funzen.Läuft nur unter x86 Mode!
Gruß,
UEZ -
Ich werde mich trotzdem mal am Wochenende hinsetzen, um den "Blur" von 25ms auf unter eine halbe Millisekunde zu drücken....bissl was geht immer....aber verratet das nicht meiner Frau^^Und wo ist die Version?
Oder hat's deine Frau mitbekommen und dir eine Strafe verpasst? 
Gruß,
UEZ -
Entwickelt sich sehr gut!

Wenn ich ein neues Projekt erstelle und z.B. einen relativ großen Source Code einfüge, dann dauert es ziemlich lange, bis er eingefügt ist.
Ferner werden im rechten Fenster keine Funktionen und Variablen angezeigt, erst nachdem ich Tidy anschmeiße.
Kann man in dem Editor jede gerade oder ungerade Zeilen anders einfärben?
Kannst ja auch ins engl. Forum stellen...
Gruß,
UEZ -
Allen die heute Geburtstag haben ein herzliches
[Blockierte Grafik: http://hi5sms.in/Download/Wallpapers/Happy-Birthday/Happy-Birthday-26.jpg]
und alles Gute!Gruß,
UEZ -
Das Ding läuft auch unter Vista+, wenn Aero abgeschaltet ist (macht das Skript)!
eukalyptus: gleiches gilt auch für deine beiden Skripte (BlackHole und Mauslupe)!
Gruß,
UEZ -
Klasse! Hast das Skript richtig gut optimiert

Das mit ClientToScreen() ist ja optimal, um die Position unabhängig vom Theme zu bekommen!

Wie gesagt, verwende ich WinXP nur noch sehr selten und der Aero Effekt ab Vista sieht echt klasse aus, zumal Win7 richtig stabil und schnell läuft.
Diesen Effekt hätte man vor 4 Jahren gut gebrauchen können, aber heute ist das "nur" noch eine Demo.
BlackHole und Mauslupe sind super Effekte

Gruß,
UEZ -
Beim Testen von Windows Screenhooter unter WinXP ist mir aufgefallen, dass ich den Bildschirm hinter einer GUI herauslesen und darstellen kann.
Da kam mir die Idee, ob sich unter WinXP ein Aero Effekt implementieren lässt!
Heraus kam das Ding hier (optimierte Version von eukalyptus weiter unten!):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;Pseudo Aero Look für WindowsXP Build 2011-12-02 by UEZ
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)Global Const $hDwmApiDll = DllOpen("dwmapi.dll")
[/autoit] [autoit][/autoit] [autoit]
Global $sChkAero = DllStructCreate("int;")
DllCall($hDwmApiDll, "int", "DwmIsCompositionEnabled", "ptr", DllStructGetPtr($sChkAero))
Global $aero = DllStructGetData($sChkAero, 1)
If $aero Then DllCall($hDwmApiDll, "int", "DwmEnableComposition", "uint", False)
Global $dy
If @OSBuild < 6000 Then
Global $aTheme = _WinAPI_GetCurrentThemeName()
If Not @error Then
$dy = -54
Else
$dy = -40
EndIf
Else
$dy = -47
EndIf_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]")
[/autoit] [autoit][/autoit] [autoit]
Global Const $aFullScreen = WinGetPos($hFullScreen)Global Const $fW = 4
[/autoit] [autoit][/autoit] [autoit]
Global Const $fH = 32
Global Const $iW = 640
Global Const $iH = 400
Global Const $hGUI = GUICreate("", $iW, $iH, -1, -1, $WS_POPUP, $WS_EX_OVERLAPPEDWINDOW + $WS_EX_TOPMOST)
Global Const $idTitle = GUICtrlCreateLabel("Pseudo Aero Effect by UEZ", $fW + 16, $fh / 3, 150, 16)
GUICtrlSetFont(-1, 9, 800, 0, "Arial", 4)
GUICtrlSetBkColor(-1, -2);~ Global Const $idLabel = GUICtrlCreateLabel(@LF & @LF & @LF & @TAB & "Done by UEZ 2011", $fW, $fH, $iW - 2 * $fW - 2, $iH - $fH - $fW)
[/autoit] [autoit][/autoit] [autoit]
;~ GUICtrlSetFont(-1, 30, 400, 0, "Arial", 4)
;~ GUICtrlSetBkColor(-1, -2)
Global Const $idLabel_Min = GUICtrlCreateLabel("[_]", $iW - 50, $fH / 3, $fh / 2, $fh / 2)
GUICtrlSetBkColor(-1, -2)
Global Const $idLabel_Close = GUICtrlCreateLabel("[X]", $iW - 30, $fH / 3, $fh / 2, $fh / 2)
GUICtrlSetBkColor(-1, -2)WinSetTrans($hGUI, "", 0xFF)
[/autoit] [autoit][/autoit] [autoit]Global Const $hGUI_Hidden = GUICreate("", $iW, $iH, 0, 0, Default, $WS_EX_MDICHILD + $WS_EX_LAYERED, $hGUI)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $hGUI_Hidden)
GUISetState(@SW_SHOW, $hGUI)
_SetGuiRoundCorners($hGUI, 16, True, False, True, False)Global $hDev = _WinAPI_GetDC($hGUI)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $hDC_Area = _WinAPI_CreateCompatibleDC($hDev)
Global $hBitmap_Area = _WinAPI_CreateCompatibleBitmap($hDev, $aFullScreen[2], $aFullScreen[3])Global Const $hDC_Zoom = _WinAPI_GetDC(0)
[/autoit] [autoit][/autoit] [autoit]
Global Const $hGUI_ZoomDC = _WinAPI_GetDC($hGUI_Hidden)Global Const $memDC = _WinAPI_CreateCompatibleDC($hGUI_ZoomDC)
[/autoit] [autoit][/autoit] [autoit]
Global Const $memBmp = _WinAPI_CreateCompatibleBitmap($hGUI_ZoomDC, $iW, $iH)
_WinAPI_SelectObject($memDC, $memBmp)Global $aPos = WinGetPos($hGUI)
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_StretchBlt($hGUI_ZoomDC, 0, 0, $iW, $iH, $hDC_Zoom, $aPos[0], $aPos[1], $iW, $iH, $SRCCOPY)_WinAPI_BitBlt($memDC, 0, 0, $iW, $iH, $hGUI_ZoomDC, 0, $dy, 0x00CC0020)
[/autoit] [autoit][/autoit] [autoit]Global Const $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit]
Global Const $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphic)
Global Const $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)Global Const $GW_CHILD = 5
[/autoit] [autoit][/autoit] [autoit]
Global Const $GW_HWNDNEXT = 2
Global $hRegion = _GDIPlus_RegionCreateFromRect(_GDIPlus_RectFCreate(0, 0, $iW, $iH))
Global $hChild = _WinAPI_GetWindow($hGUI, $GW_CHILD)
Global $aRect, $msgDo
[/autoit] [autoit][/autoit] [autoit]
$aRect = ControlGetPos($hChild, "", 0)
_GDIPlus_RegionCombineRect($hRegion, _GDIPlus_RectFCreate($aRect[0], $aRect[1], $aRect[2], $aRect[3]), 3)
$hChild = _WinAPI_GetWindow($hChild, $GW_HWNDNEXT)
Until Not $hChild
_GDIPlus_GraphicsSetClipRegion($hGraphic, $hRegion)
_GDIPlus_RegionDispose($hRegion)Global $tRectF = _GDIPlus_RectFCreate(0, 0, $iW / 1.5, $iH / 1.5)
[/autoit] [autoit][/autoit] [autoit]
Global $hBrush = _GDIPlus_LineBrushCreateFromRectWithAngle($tRectF, 0x80201010, 0xA0F0F0F0, -60, False, 1)Global $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($memBmp)
[/autoit] [autoit][/autoit] [autoit]
Global $hBmp_Blur = _Blur($hBmp, $iW, $iH)
_GDIPlus_GraphicsDrawImage($hContext, $hBmp_Blur, 0, 0)_GDIPlus_GraphicsFillRect($hContext, 0, 0, $iW, $iH, $hBrush)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iW, $iH)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_BitmapDispose($hBmp_Blur)GUIRegisterMsg($WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED")
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")Global $exit = False
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent($GUI_EVENT_RESTORE, "Restored", $hGUI)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $hGUI)
GUICtrlSetOnEvent($idLabel_Close, "_Exit")
GUICtrlSetOnEvent($idLabel_Min, "_MinWin")While Sleep(30)
[/autoit] [autoit][/autoit] [autoit]
;~ Repaint()
If $exit Then ExitLoop
WEndGUIRegisterMsg($WM_WINDOWPOSCHANGED, "")
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_DeleteDC($memDC)
_WinAPI_DeleteObject($memBmp)
_WinAPI_DeleteObject($hBitmap_Area)
_WinAPI_ReleaseDC($hGUI, $hDev)
_WinAPI_ReleaseDC($hGUI, $hGUI_ZoomDC)
_WinAPI_ReleaseDC(0, $hDC_Zoom)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hContext)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
GUIDelete()
$tRectF = 0
If $aero Then DllCall($hDwmApiDll, "int", "DwmEnableComposition", "uint", True)
ExitFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
$exit = True
EndFuncFunc _MinWin()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_MINIMIZE, $hGUI)
EndFuncFunc Restored()
[/autoit] [autoit][/autoit] [autoit]
Repaint()
EndFuncFunc WM_WINDOWPOSCHANGED($hWnd, $iMsg, $StartWIndowPosaram, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Repaint()
Return "GUI_RUNDEFMSG"
EndFuncFunc Repaint()
[/autoit] [autoit][/autoit] [autoit]
$aPos = WinGetPos($hGUI)
_WinAPI_StretchBlt($hGUI_ZoomDC, 0, 0, $iW, $iH, $hDC_Zoom, $aPos[0]+16, $aPos[1] + 3, $iW, $iH, $SRCCOPY)
_WinAPI_BitBlt($memDC, 0, 0, $iW, $iH, $hGUI_ZoomDC, 0, $dy, 0x00CC0020)
DllStructSetData($tRectF, "X", $aPos[0])
DllStructSetData($tRectF, "Y", $aPos[1])
$hBrush = _GDIPlus_LineBrushCreateFromRectWithAngle($tRectF, 0x80302020, 0xA0F0F0F0, -60, False, 1)
$hBmp = _GDIPlus_BitmapCreateFromHBITMAP($memBmp)
$hBmp_Blur = _Blur($hBmp, $iW, $iH)
_GDIPlus_GraphicsDrawImage($hContext, $hBmp_Blur, 0, 0)
_GDIPlus_GraphicsFillRect($hContext, 0, 0, $iW, $iH, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iW, $iH)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_BitmapDispose($hBmp_Blur)
_GDIPlus_BrushDispose($hBrush)
EndFuncFunc WM_NCHITTEST($hWndGUI, $MsgID, $WParam, $LParam)
[/autoit] [autoit][/autoit] [autoit]
If ($hWndGUI = $hGui) And ($MsgID = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTESTFunc _Blur($hBitmap, $iW, $iH, $fScale = 0.30, $qual = 6); by eukalyptus
[/autoit] [autoit][/autoit] [autoit]
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
Local $hBmpSmall = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphics)
Local $hGfxSmall = _GDIPlus_ImageGetGraphicsContext($hBmpSmall)
DllCall($ghGDIPDll, "uint", "GdipSetPixelOffsetMode", "hwnd", $hGfxSmall, "int", 2)
Local $hBmpBig = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphics)
Local $hGfxBig = _GDIPlus_ImageGetGraphicsContext($hBmpBig)
DllCall($ghGDIPDll, "uint", "GdipSetPixelOffsetMode", "hwnd", $hGfxBig, "int", 2)
_GDIPlus_GraphicsScaleTransform($hGfxSmall, $fScale, $fScale)
_GDIPlus_GraphicsSetInterpolationMode($hGfxSmall, $qual)_GDIPlus_GraphicsScaleTransform($hGfxBig, 1 / $fScale, 1 / $fScale)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetInterpolationMode($hGfxBig, $qual)_GDIPlus_GraphicsDrawImageRect($hGfxSmall, $hBitmap, 0, 0, $iW, $iH)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGfxBig, $hBmpSmall, 0, 0, $iW, $iH)_GDIPlus_GraphicsDispose($hGraphics)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BitmapDispose($hBmpSmall)
_GDIPlus_GraphicsDispose($hGfxSmall)
_GDIPlus_GraphicsDispose($hGfxBig)
Return $hBmpBig
EndFunc ;==>_BlurFunc _WinAPI_StretchBlt($hDestDC, $iXDest, $iYDest, $iWidthDest, $iHeightDest, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iRop)
[/autoit] [autoit][/autoit] [autoit]
Local $Ret = DllCall("gdi32.dll", "int", "StretchBlt", "hwnd", $hDestDC, "int", $iXDest, "int", $iYDest, "int", $iWidthDest, "int", $iHeightDest, "hwnd", $hSrcDC, "int", $iXSrc, "int", $iYSrc, "int", $iWidthSrc, "int", $iHeightSrc, "dword", $iRop)
If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0)
Return 1
EndFunc ;==>_WinAPI_StretchBlt; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _WinAPI_GetCurrentThemeName
; Description....: Retrieves the name of the current visual styles, color scheme name, and size name.
; Syntax.........: _WinAPI_GetCurrentThemeName ( )
; Parameters.....: None
; Return values..: Success - The array that contains the following information:
;
; [0] - The theme path and file name.
; [1] - The color scheme name.
; [2] - The size name.
;
; Failure - 0 and sets the @error flag to non-zero, @extended flag may contain the system error code.
; Author.........: Yashied
; Modified.......:
; Remarks........: None
; Related........:
; Link...........: @@MsdnLink@@ GetCurrentThemeName
; Example........: Yes
; ===============================================================================================================================
Func _WinAPI_GetCurrentThemeName()
Local $Ret = DllCall('uxtheme.dll', 'uint', 'GetCurrentThemeName', 'wstr', '', 'int', 4096, 'wstr', '', 'int', 2048, 'wstr', '', 'int', 2048)
If @error Then
Return SetError(1, 0, 0)
Else
If $Ret[0] Then
Return SetError(1, $Ret[0], 0)
EndIf
EndIf
Local $Result[3]
For $i = 0 To 2
$Result[$i] = $Ret[$i * 2 + 1]
Next
Return $Result
EndFunc ;==>_WinAPI_GetCurrentThemeNameFunc _SetGuiRoundCorners($hGUI, $iEllipse, $iLeftUp = True, $iLeftDown = True, $iRightUp = True, $iRightDown = True)
[/autoit] [autoit][/autoit] [autoit]
Local $hCornerRgn
Local $aGuiSize = WinGetPos($hGUI)
Local $hRgn = _WinAPI_CreateRoundRectRgn(0, 0, $aGuiSize[2], $aGuiSize[3], $iEllipse, $iEllipse)
If $iLeftUp = False Then
$hCornerRgn = _WinAPI_CreateRectRgn(0, 0, $aGuiSize[2] / 2, $aGuiSize[3] / 2)
_WinAPI_CombineRgn($hRgn, $hRgn, $hCornerRgn, $RGN_OR)
_WinAPI_DeleteObject($hCornerRgn)
EndIf
If $iLeftDown = False Then
$hCornerRgn = _WinAPI_CreateRectRgn(0, $aGuiSize[3] / 2, $aGuiSize[2] / 2, $aGuiSize[3])
_WinAPI_CombineRgn($hRgn, $hRgn, $hCornerRgn, $RGN_OR)
_WinAPI_DeleteObject($hCornerRgn)
EndIf
If $iRightUp = False Then
$hCornerRgn = _WinAPI_CreateRectRgn($aGuiSize[2] / 2, 0, $aGuiSize[2], $aGuiSize[3] / 2)
_WinAPI_CombineRgn($hRgn, $hRgn, $hCornerRgn, $RGN_OR)
_WinAPI_DeleteObject($hCornerRgn)
EndIf
If $iRightDown = False Then
$hCornerRgn = _WinAPI_CreateRectRgn($aGuiSize[2] / 2, $aGuiSize[3] / 2, $aGuiSize[2] - 1, $aGuiSize[3] - 1)
_WinAPI_CombineRgn($hRgn, $hRgn, $hCornerRgn, $RGN_OR)
_WinAPI_DeleteObject($hCornerRgn)
EndIf
_WinAPI_SetWindowRgn($hGUI, $hRgn)
EndFunc ;==>_SetGuiRoundCorners#region additional GDI+ functions
[/autoit] [autoit][/autoit] [autoit]
Func _GDIPlus_GraphicsScaleTransform($hGraphics, $nScaleX, $nScaleY, $iOrder = 0)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGraphics, "float", $nScaleX, "float", $nScaleY, "int", $iOrder)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsScaleTransformFunc _GDIPlus_GraphicsSetInterpolationMode($hGraphics, $iInterpolationMode)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hGraphics, "int", $iInterpolationMode)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetInterpolationModeFunc _GDIPlus_LineBrushCreateFromRectWithAngle($tRectF, $iARGBClr1, $iARGBClr2, $nAngle, $fIsAngleScalable = True, $iWrapMode = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $pRectF, $aResult
$pRectF = DllStructGetPtr($tRectF)
$aResult = DllCall($ghGDIPDll, "uint", "GdipCreateLineBrushFromRectWithAngle", "ptr", $pRectF, "uint", $iARGBClr1, "uint", $iARGBClr2, "float", $nAngle, "int", $fIsAngleScalable, "int", $iWrapMode, "int*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[7]
EndFunc ;==>_GDIPlus_LineBrushCreateFromRectWithAngleFunc _GDIPlus_GraphicsSetClipRegion($hGraphics, $hRegion, $iCombineMode = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetClipRegion", "hwnd", $hGraphics, "hwnd", $hRegion, "int", $iCombineMode)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0] = 0
EndFuncFunc _GDIPlus_RegionCreateFromRect($tRectF)
[/autoit] [autoit][/autoit] [autoit]
Local $pRectF, $aResult
$pRectF = DllStructGetPtr($tRectF)
$aResult = DllCall($ghGDIPDll, "uint", "GdipCreateRegionRect", "ptr", $pRectF, "int*", 0)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[2]
EndFuncFunc _GDIPlus_RegionCombineRect($hRegion, $tRectF, $iCombineMode = 2)
[/autoit] [autoit][/autoit] [autoit]
Local $pRectF, $aResult
$pRectF = DllStructGetPtr($tRectF)
$aResult = DllCall($ghGDIPDll, "uint", "GdipCombineRegionRect", "hwnd", $hRegion, "ptr", $pRectF, "int", $iCombineMode)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0] = 0
EndFuncFunc _GDIPlus_RegionDispose($hRegion)
[/autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipDeleteRegion", "hwnd", $hRegion)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0] = 0
EndFunc
#endregionIch persönlich benutze WinXP zum Kompatibilitätstest, wenn ich Lust habe und somit ist dies wirklich nur als experimentell anzusehen!
Einige Dinge, wie z.B. ständiges Update oder transparente Label fehlen noch. Wer Lust hat, kann ja herum basteln!
Außerdem ist das Ganze etwas langsam.
Wenn die klassische Ansicht aktiviert ist, muss der Parameter für _WinAPI_BitBlt($memDC, 0, 0, $iW, $iH, $hGUI_ZoomDC, 0, -52, 0x00CC0020) auf -38 angepasst werden, damit die Darstellung einigermaßen stimmt.Wenn jemand eine Möglichkeit kennt zwischen der klassischen Ansicht und Luna zu unterscheiden, dann her damit.Gruß,
UEZ -
Vielleicht das hier: [UDF] (Teil)transparente Bilder-GUIs nach einem Rezept von Meister UEZ
Das mit dem Meister darfst du nicht so ernst nehmen

Gruß,
UEZ -
Schon mal im Forum gesucht?
Gruß,
UEZ -
-
-
Kann es sein das leere Ordner nicht mitkopiert werden? Kann man den Timestamp vielleicht auch mitkopieren?
Ferner ist eine Restdauer Anzeige in Sekunden nicht leicht zu interpretieren; hh:mm:ss wäre da besser. Vielleicht sogar eine "verstrichene Zeit" als Info.
Wie wäre es mit einer Sicherung in ein Archive Format, wie z.B. ZIP?
Gruß,
UEZ -
Happy Birthday euch beiden!
Gruß,
UEZ