GridMove/Aero_Lib.ahk
2013-02-22 09:58:19 +00:00

970 lines
29 KiB
AutoHotkey
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Aero_Libary
DWM - - Desktop Window Manager
Name: Aero_Lib
Autors:= Bentschi ; RaptorOne ;
Beta From 11.10.10
Funktions:
Aero_StartUp() ; Load important dll Files for more perfomance. ; Line: 52
Aero_Enable() ; Enable or disable the DWM. ; Line: 82
Aero_IsEnabled() ; Return True if DWM is enabled, False if it disabled. ; Line: 104
Aero_BlurWindow() ; Set a Blur behind a window. ; Line: 135
Aero_GuiBlurWindow() ; Set a Blur behind a window. ; Line: 174
Aero_ChangeFrameArea() ; Extend the Frame Area into the Client Area. ; Line: 220
Aero_GuiChangeFrameArea() ; Extend the Frame Area into the Client Area. ; Line: 261
Aero_ChangeFrameAreaAll() ; Extend the Frame Area into the whole Client Area. ; Line: 291
Aero_GuiChangeFrameAreaAll() ; Extend the Frame Area into the whole Client Area. ; Line: 316
Aero_GetDWMColor() ; Gets the Color of the current DWM options. ; Line: 337
Aero_GetDWMTrans() ; Gets the Transparent of the Current DWM options. ; Line: 362
Aero_SetDWMColor() ; Set´s the DWM Window Color. ; Line: 389
Aero_SetTrans() ; Set´s the DWM Transparent value. ; Line: 416
Aero_DrawPicture() ; Draws a Picture onto a DWM Gui. ; Line: 454
Aero_CreateBuffer() ; Creates a buffer from a Handle. ; Line: 481
Aero_CreateGuiBuffer() ; Creates a buffer from a GuiCount. ; Line: 502
Aero_DeleteBuffer() ; Deletes a buffer. ; Line: 523
Aero_UpdateWindow() ; Updates a window where is a DWM draw. ; Line: 550
Aero_UpdateGui() ; Updates a window where is a DWM draw. ; Line: 574
Aero_AutoRepaint() ; Set a Buffer to Autoredraw, everytime it is need it. ; Line: 598
Aero_AutoRepaintGui() ; Set a Buffer to Autoredraw, everytime it is need it. ;Line: 622
Aero_DisableAutoRepaint() ; Disables the AutoRedraw. ; Line: 643
Aero_DisableAutoRepaintGui() ; Disables the AutoRedraw. ; Line: 664
Aero_ClearBuffer() ; Clears a Buffer. ; Line: 685
Aero_LoadImage() ; Load image in a variable. ; Line: 714
Aero_DeleteImage() ; Deletes a loaded image. ; Line: 745
Aero_DrawImage() ; Draw the Picture on the Window. ; Line: 779
Aero_End() ; Unload the dll Files. ; Line: 805
*/
;============================================================================
; Funktion
; Api Name: LoadLibary (Kernel32.dll)
;
; Aero_StartUp()
;
; Load important dll Files for more perfomance.
;
;
; Return: Module Id´s (splittet with "|") (or false if OS is not compatible)
;
Aero_StartUp(){
global
If(A_OSVersion=="WIN_VISTA" || A_OSVersion=="WIN_7")
{
MODULEID3:=DllCall("LoadLibrary", "str", "dwmapi")
MODULEID2:=DllCall("LoadLibrary", "str", "uxtheme") ;zwar noch nicht gebraucht aber egal
MODULEID:=MODULEID3 . "|" . MODULEID2
Return,MODULEID
}Else{
MsgBox, 4112, DWM Stop, Dwm cannot applied with these OS version.
Return,False
}
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmEnableComposition (dwmapi.dll)
;
; Aero_Enable()
;
; Enable or disable the DWM.
;
; Params:
;
; 1. enableBool (True == 1)
; TRUE change to Aero Theme, False change to Windows Basic Theme.
;
; Return: A_LastError
;
Aero_Enable(enableBool=1){
global
If(!MODULEID)
Aero_StartUp()
If(A_OSVersion=="WIN_VISTA" || A_OSVersion=="WIN_7")
DllCall("dwmapi\DwmEnableComposition","UInt",enableBool)
Else
MsgBox, 4112, DWM Stop, Dwm cannot applied with these OS version.
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmIsCompositionEnabled (dwmapi.dll)
;
; Aero_IsEnabled()
;
; Return True if DWM is enabled, False if it disabled.
;
; Return: EnabledBool
;
Aero_IsEnabled(){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(_ISENABLED,4)
DllCall("dwmapi\DwmIsCompositionEnabled","UInt",&_ISENABLED)
Return,NumGet(&_ISENABLED,0)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmEnableBlurBehindWindow (dwmapi.dll)
;
; Aero_BlurWindow()
;
; Set a Blur behind a window.
;
; Params:
;
; 1. hwndWin
; The handle to the window on which the blur behind data is applied.
;
; 2. enableBool (True == 1)
; TRUE to register the window handle to DWM blur behind; FALSE to unregister the window handle from DWM blur behind.
;
; 3. region (False == 0)
; The region within the client area to apply the blur behind. A NULL value will apply the blur behind the entire client area.
;
; Return: A_LastError
;
Aero_BlurWindow(hwndWin ,enableBool=1 ,region=0){
global
If(!MODULEID)
Aero_StartUp()
If(region)
dwmConstant:=0x00000001 | 0x00000002 ;DWM_BB_ENABLE | DWM_BB_BLURREGION
Else
dwmConstant:=0x00000001 ;DWM_BB_ENABLE
VarSetCapacity(DWM_BLURBEHIND,16)
NumPut(dwmConstant,&DWM_BLURBEHIND,0,"UInt")
NumPut(enableBool,&DWM_BLURBEHIND,4,"UInt")
NumPut(region,&DWM_BLURBEHIND,8,"UInt")
NumPut(False,&DWM_BLURBEHIND,12,"UInt")
DllCall("dwmapi\DwmEnableBlurBehindWindow","UInt",hwndWin,"UInt",&DWM_BLURBEHIND)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmEnableBlurBehindWindow (dwmapi.dll)
;
; Aero_GuiBlurWindow()
;
; Set a Blur behind a window.
;
; Params:
;
; 1. GuiNum (deafult == current Gui)
; Gui Number.
;
; 2. enableBool (True == 1)
; TRUE to register the window handle to DWM blur behind; FALSE to unregister the window handle from DWM blur behind.
;
; 3. region (False == 0)
; The region within the client area to apply the blur behind. A NULL value will apply the blur behind the entire client area.
;
; Return: A_LastError
;
Aero_GuiBlurWindow(GuiNum="default" ,enableBool=1 ,region=0){
global
If(!MODULEID)
Aero_StartUp()
If(region)
dwmConstant:=0x00000001 | 0x00000002 ;DWM_BB_ENABLE | DWM_BB_BLURREGION
Else
dwmConstant:=0x00000001 ;DWM_BB_ENABLE
VarSetCapacity(DWM_BLURBEHIND,16)
NumPut(dwmConstant,&DWM_BLURBEHIND,0,"UInt")
NumPut(enableBool,&DWM_BLURBEHIND,4,"UInt")
NumPut(region,&DWM_BLURBEHIND,8,"UInt")
NumPut(False,&DWM_BLURBEHIND,12,"UInt")
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
DllCall("dwmapi\DwmEnableBlurBehindWindow","UInt",WinExist(),"UInt",&DWM_BLURBEHIND)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmExtendFrameIntoClientArea (dwmapi.dll)
;
; Aero_ChangeFrameArea()
;
; Extend the Frame Area into the Client Area.
;
; Params:
;
; 1. hwndWin
; The handle to the window for which the frame is extended into the client area.
;
; 2. leftPos (0)
; Width of the left border that retains its size.
;
; 3. rightPos (0)
; Width of the right border that retains its size.
;
; 2. topPos (0)
; Height of the top border that retains its size.
;
; 3. bottomPos (0)
; Height of the bottom border that retains its size.
;
; Return: A_LastError
;
Aero_ChangeFrameArea(hwndWin, leftPos=0, rightPos=0, topPos=0, bottomPos=0){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(_MARGINS,16)
NumPut(leftPos,&_MARGINS,0,"UInt")
NumPut(rightPos,&_MARGINS,4,"UInt")
NumPut(topPos,&_MARGINS,8,"UInt")
NumPut(bottomPos,&_MARGINS,12,"UInt")
DllCall("dwmapi\DwmExtendFrameIntoClientArea", "UInt", hwndWin, "UInt", &_MARGINS)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmExtendFrameIntoClientArea (dwmapi.dll)
;
; Aero_GuiChangeFrameArea()
;
; Extend the Frame Area into the Client Area.
;
; Params:
;
; 1. GuiNum (default == current Gui)
; Gui Number.
;
; 2. leftPos (0)
; Width of the left border that retains its size.
;
; 3. rightPos (0)
; Width of the right border that retains its size.
;
; 2. topPos (0)
; Height of the top border that retains its size.
;
; 3. bottomPos (0)
; Height of the bottom border that retains its size.
;
; Return: A_LastError
;
Aero_GuiChangeFrameArea(GuiNum="default", leftPos=0, rightPos=0, topPos=0, bottomPos=0){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(_MARGINS,16)
NumPut(leftPos,&_MARGINS,0,"UInt")
NumPut(rightPos,&_MARGINS,4,"UInt")
NumPut(topPos,&_MARGINS,8,"UInt")
NumPut(bottomPos,&_MARGINS,12,"UInt")
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
DllCall("dwmapi\DwmExtendFrameIntoClientArea", "UInt", WinExist(), "UInt", &_MARGINS)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmExtendFrameIntoClientArea (dwmapi.dll)
;
; Aero_ChangeFrameAreaAll()
;
; Extend the Frame Area into the whole Client Area.
;
; Params:
;
; 1. hwndWin
; The handle to the window for which the frame is extended into the client area.
;
; Return: A_LastError
;
Aero_ChangeFrameAreaAll(hwndWin){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(_AllMARGINS,16,-1)
DllCall("dwmapi\DwmExtendFrameIntoClientArea", "UInt", hwndWin, "UInt", &_AllMARGINS)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmExtendFrameIntoClientArea (dwmapi.dll)
;
; Aero_GuiChangeFrameAreaAll()
;
; Extend the Frame Area into the whole Client Area.
;
; Params:
;
; 1. GuiNum (default == current Gui)
; Number of a Gui
;
; Return: A_LastError
;
Aero_GuiChangeFrameAreaAll(GuiNum="deafult"){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(_AllMARGINS,16,-1)
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
DllCall("dwmapi\DwmExtendFrameIntoClientArea", "UInt", WinExist(), "UInt", &_AllMARGINS)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmGetColorizationColor (dwmapi.dll)
;
; Aero_GetDWMColor()
;
; Gets the Color of the current DWM options.
;
; Return: dwmColor (0xAARRGGBB)
;
Aero_GetDWMColor(){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(dwmColor,16)
VarSetCapacity(subend,4)
DllCall("dwmapi\DwmGetColorizationColor", "UInt", &dwmColor, "UInt", &subend)
SetFormat,integer,hex
dwmColor2:=NumGet(&dwmColor,0)+0
SetFormat,IntegerFast,d
Return,dwmColor2
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DwmGetColorizationColor (dwmapi.dll)
;
; Aero_GetDWMTrans()
;
; Gets the Transparent of the Current DWM options.
;
; Return: dwmTransparent (False==Transparent ; True==Not Transparent)
;
Aero_GetDWMTrans(){
global
If(!MODULEID)
Aero_StartUp()
VarSetCapacity(subend,16)
VarSetCapacity(dwmTrans,4)
DllCall("dwmapi\DwmGetColorizationColor", "UInt", &subend, "UInt", &dwmTrans)
Return,NumGet(&dwmTrans,0,"UInt")
}
;============================================================================
;============================================================================
; Funktion
; Api Name: none ()
;
; Aero_SetDWMColor()
;
; Set´s the DWM Window Color.
;
; Params:
;
; 1. dwmColor
; A 32 bit Color (0xAARRGGBB)
;
; Return: A_LastError
;
Aero_SetDWMColor(dwmColor=0x910047ab){
global
If(!MODULEID)
Aero_StartUp()
RegWrite,REG_DWORD,HKCU,Software\Microsoft\Windows\DWM,ColorizationColor,%dwmColor%
RegWrite,REG_DWORD,HKCU,Software\Microsoft\Windows\DWM,ColorizationAfterglow,%dwmColor%
DllCall("dwmapi\DwmEnableComposition","UInt",False)
DllCall("dwmapi\DwmEnableComposition","UInt",True)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: none ()
;
; Aero_SetTrans()
;
; Set´s the DWM Transparent value.
;
; Params:
;
; 1. dwmTrans
; A Bool. False is transparent, True is not Transparent.
;
; Return: A_LastError
;
Aero_SetTrans(dwmTrans){
global
If(!MODULEID)
Aero_StartUp()
RegWrite,REG_DWORD,HKCU,Software\Microsoft\Windows\DWM,ColorizationOpaqueBlend,%dwmTrans%
DllCall("dwmapi\DwmEnableComposition","UInt",False)
DllCall("dwmapi\DwmEnableComposition","UInt",True)
Return,A_LastError
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many xD (view in source)
;
; Aero_DrawPicture()
;
; Draws a Picture onto a DWM Gui.
;
; Params:
;
; 1. hwnd
; Handle of the Window which the Picture is to draw.
;
; 2. picturePath
; Path to a Picture (All supportet Gdi32 Pictures (also Transparent Pictures))
;
; 3. xPos (0)
; X Position where the Picture is to draw.
;
; 4. yPos (0)
; Y Position where the Picture is to draw.
;
; 5. autoUpdate (True==1)
; Redraw the Picture everytime need it.
;
; Return: The Buffer of the Picture.
;
Aero_DrawPicture(hwnd,picturePath,xPos=0,yPos=0,autoUpdate=1){
hBuffer := Aero_CreateBuffer(hwnd)
hImage := Aero_LoadImage(picturePath)
Aero_DrawImage(hBuffer, hImage, xPos, yPos)
If(autoUpdate)
Aero_AutoRepaintGui(hBuffer)
Aero_DeleteImage(hImage)
Return,hBuffer
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_CreateBuffer()
;
; Creates a buffer from a Handle.
;
; Params:
;
; 1. hWnd
; Handle of the Window which the buffer is applied.
;
; Return: Created buffer.
;
Aero_CreateBuffer(hWnd){
hDC := DllCall("GetDC", "uint", hWnd)
Return Aero_CreateBufferFromBuffer(hDC)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_CreateGuiBuffer()
;
; Creates a buffer from a GuiCount.
;
; Params:
;
; 1. GuiNum (default==current Gui)
; Gui number
;
; Return: Created buffer.
;
Aero_CreateGuiBuffer(GuiNum="default"){
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
Return Aero_CreateBuffer(WinExist())
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_DeleteBuffer()
;
; Deletes a buffer.
;
; Params:
;
; 1. hBuffer
; Handle of a Buffer.
;
; Return: True
;
Aero_DeleteBuffer(byref hBuffer){
hBitmap := DllCall("GetCurrentObject", "uint", hBuffer, "uint", 7)
DllCall("DeleteDC", "uint", hBuffer)
DllCall("DeleteObject", "uint", hBitmap)
hBuffer := 0
Return 1
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_UpdateWindow()
;
; Updates a window where is a DWM draw.
;
; Params:
;
; 1. hWnd
; Handle of the window who is to update.
;
; 2. hBuffer
; A handle of a Buffer
;
; Return: NonZero if succes otherwise NULL
;
Aero_UpdateWindow(hWnd, hBuffer){
hDC := DllCall("GetDC", "uint", hWnd)
Return Aero_Blit(hDC, hBuffer)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_UpdateGui()
;
; Updates a window where is a DWM draw.
;
; Params:
;
; 1. hBuffer
; Handle of a Buffer.
;
; 2. GuiNum (default == current Gui)
; Gui number.
;
; Return: NonZero if succes otherwise NULL
;
Aero_UpdateGui(hBuffer, GuiNum="default"){
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
Return Aero_UpdateWindow(WinExist(), hBuffer)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_AutoRepaint()
;
; Set a Buffer to Autoredraw, everytime it is need it.
;
; Params:
;
; 1. hWnd
; Handle of a Window.
;
; 2. hBuffer
; handle of a Buffer.
;
; Return: Errorlevel
;
Aero_AutoRepaint(hWnd, hBuffer){
OnMessage(0x0F, "Aero_AutoRepaintCallback")
Return Aero_AutoRepaintCallback(hBuffer, 0, "register", hWnd)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_AutoRepaintGui()
;
; Set a Buffer to Autoredraw, everytime it is need it.
;
; Params:
;
; 1. hBuffer
; Handle of a buffer.
;
; 2. GuiNum (default == current Gui)
; Gui Number.
;
; Return: ErrorLevel
;
Aero_AutoRepaintGui(hBuffer, GuiNum="default"){
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
Return Aero_AutoRepaint(WinExist(), hBuffer)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_DisableAutoRepaint()
;
; Disables the AutoRedraw.
;
; Params:
;
; 1. hWnd
; Handle of the Window.
;
; Return: True
;
Aero_DisableAutoRepaint(hWnd){
Aero_AutoRepaint(hWnd, "")
Return 1
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_DisableAutoRepaintGui()
;
; Disables the AutoRedraw.
;
; Params:
;
; 1. GuiNum (default == current Gui)
; Gui Number.
;
; Return: True
;
Aero_DisableAutoRepaintGui(GuiNum="default"){
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
Return Aero_DisableAutoRepaint(WinExist())
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_ClearBuffer()
;
; Clears a Buffer.
;
; Params:
;
; 1. hBuffer
; Handle of a Buffer.
;
; Return: True for succes otherwise False
;
Aero_ClearBuffer(hBuffer){
VarSetCapacity(Img, 24, 0)
hBitmap := DllCall("GetCurrentObject", "uint", hBuffer, "uint", 7)
DllCall("GetObject", "uInt", hBitmap "uInt", 24, "uInt", &Img)
VarSetCapacity(rect, 16, 0)
NumPut(((NumGet(Img, 4)=0) ? A_ScreenWidth : NumGet(Img, 4)), rect, 8, "int")
NumPut(((NumGet(Img, 8)=0) ? A_ScreenHeight : NumGet(Img, 8)), rect, 12, "int")
hBrush := DllCall("CreateSolidBrush", "uint", 0)
retval := DllCall("FillRect", "uint", hBuffer, "uint", &rect, "uint", hBrush)
DllCall("DeleteObject", "uint", hBrush)
Return ((retval!=0) ? 1 : 0)
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_LoadImage()
;
; Load image in a variable.
;
; Params:
;
; 1. FileName
; Path to a Picture (All suportet Gdi32 Pictures)
;
; Return: The Image.
;
Aero_LoadImage(Filename){
DllCall("LoadLibrary", "str", "gdiplus")
VarSetCapacity(pGdiplusToken, 4, 0)
VarSetCapacity(pGdiplusInput, 16, 0)
NumPut(1, pGdiplusInput)
DllCall("gdiplus\GdiplusStartup", "uint", &pGdiplusToken, "uint", &pGdiplusInput, "uint", 0)
Aero_MultibyteToWide(Filename, WideFilename)
DllCall("gdiplus\GdipCreateBitmapFromFile", "uint", &WideFilename, "uint*", GdiplusBitmap)
DllCall("gdiplus\GdipCreateHBITMAPFromBitmap", "uint", GdiplusBitmap, "uint*", hImage, "uint", 0xFF000000)
DllCall("gdiplus\GdipDisposeImage", "uint", GdiplusBitmap)
DllCall("gdiplus\GdiplusShutdown", "uint", NumGet(pGdiplusToken))
DllCall("FreeLibrary", "uint", DllCall("GetModuleHandle", "str", "gdiplus"))
Return hImage
}
;============================================================================
;============================================================================
; Funktion
; Api Name: DeleteObject (Gdi32.dll)
;
; Aero_DeleteImage()
;
; Deletes a loaded image.
;
; Params:
;
; 1. hImage
; A Image in a variable.
;
; Return: True
;
Aero_DeleteImage(byref hImage){
DllCall("DeleteObject", "uint", hImage)
hImage := 0
Return 1
}
;============================================================================
;============================================================================
; Funktion
; Api Name: many (view in source)
;
; Aero_DrawImage()
;
; Draw the Picture on the Window.
;
; Params:
;
; 1. hBuffer
; Handle to a Buffer
;
; 2. hImage
; An Image.
;
; 3. x (0)
; X Position of the Picture
;
; 3. y (0)
; Y Position of the Picture
;
; 3. alpha (256 (0xFF))
; Alpha Value.
;
; Return: Selected Buffer.
;
Aero_DrawImage(hBuffer, hImage, x=0, y=0, alpha=0xFF){
If (hImage = 0)
Return 0
hBufferSrc := DllCall("CreateCompatibleDC", "uint", hBuffer)
DllCall("SelectObject", "uint", hBufferSrc, "uint", hImage)
retval := Aero_AlphaBlend(hBuffer, hBufferSrc, x, y, alpha)
DllCall("DeleteDC", "uint", hBufferSrc)
Return retval
}
;============================================================================
;============================================================================
; Funktion
; Api Name: FreeLibary (Kernel32.dll)
;
; Aero_End()
;
; Unload the dll Files.
;
; Params:
;
; 1. MODUELIDPARAM_ (""nonzero"")
; The Return MODULID from Aero_StartUp() .
;
; Return: True for succes otherwise False for fail
;
Aero_End(MODUELIDPARAM_=""){
global
If(MODUELIDPARAM_)
{
StringSplit,MODULEIDARRAY,MODULEID,% "|"
Loop,%MODULEIDARRAY0%
DllCall("FreeLibary", "Uint", MODULEIDARRAY%A_Index%)
Return,True
}Else{
If(MODULEID)
{
StringSplit,MODULEIDARRAY,MODULEID,% "|"
Loop,%MODULEIDARRAY0%
DllCall("FreeLibary", "Uint", MODULEIDARRAY%A_Index%)
Return,True
}Else{
MsgBox, 4144, DWM Stop, No Loaded Libarys found.`n`nAero_End() fail !
Return,False
}
}
}
;============================================================================
;============================================================================
;============================================================================
;============================================================================
;=============================PRIVATE FUNKTIONS==============================
;============================================================================
;============================================================================
Aero_CreateBufferFromBuffer(hBuffer)
{
hNewBuffer := DllCall("CreateCompatibleDC", "uint", hBuffer)
if (hBufferOut=0)
Return 0
w := DllCall("GetDeviceCaps", "uint", hBuffer, "int", 8)
h := DllCall("GetDeviceCaps", "uint", hBuffer, "int", 10)
VarSetCapacity(bmi, 40, 0)
NumPut(40, bmi, 0, "uint")
NumPut(((w=0) ? A_ScreenWidth : w), bmi, 4, "int")
NumPut(((h=0) ? A_ScreenHeight : h), bmi, 8, "int")
NumPut(1, bmi, 12, "ushort")
NumPut(32, bmi, 14, "ushort")
hBitmap := DllCall("CreateDIBSection", "uint", hBuffer, "uint", &bmi, "uint", 0, "uint*", diBits, "uint", 0, "uint", 0)
if (hBitmap=0)
Return 0
DllCall("SelectObject", "uint", hNewBuffer, "uint", hBitmap)
Return hNewBuffer
}
;============================================================================
Aero_AutoRepaintCallback(wParam, lParam, msg, hWnd)
{
static
SetFormat, Integer, h
hWnd += 0
SetFormat, Integer, d
if (msg="register")
{
Buffer%hWnd% := wParam
Return Aero_UpdateWindow(hWnd, wParam)
}
if ((Buffer%hWnd%!=""))
{
Aero_UpdateWindow(hWnd, Buffer%hWnd%)
SendMessage, % msg, % wParam, % lParam,, ahk_id %hWnd%
Return errorlevel
}
SendMessage, % msg, % wParam, % lParam,, ahk_id %hWnd%
Return errorlevel
}
;============================================================================
Aero_AlphaBlend(hBufferDst, hBufferSrc, x=0, y=0, alpha=0xFF)
{
VarSetCapacity(ImgSrc, 24, 0)
VarSetCapacity(ImgDst, 24, 0)
hBitmapSrc := DllCall("GetCurrentObject", "uint", hBufferSrc, "uint", 7)
hBitmapDst := DllCall("GetCurrentObject", "uint", hBufferDst, "uint", 7)
DllCall("GetObject", "uInt", hBitmapSrc, "uInt", 24, "uInt", &ImgSrc)
DllCall("GetObject", "uInt", hBitmapDst, "uInt", 24, "uInt", &ImgDst)
w := ((NumGet(ImgSrc, 4)<=NumGet(ImgDst, 4)) ? NumGet(ImgSrc, 4) : NumGet(ImgDst, 4))
h := ((NumGet(ImgSrc, 8)<=NumGet(ImgDst, 8)) ? NumGet(ImgSrc, 8) : NumGet(ImgDst, 8))
alpha := ((alpha>0xFF) ? 0xFF : (alpha<0) ? 0 : alpha)
Return DllCall("GdiAlphaBlend", "uint", hBufferDst, "int", x, "int", y, "int", w, "int", h, "uint", hBufferSrc
, "int", 0, "int", 0, "int", w, "int", h, "uint", 0x01000000 | (alpha*0x10000))
}
;============================================================================
Aero_Blit(hBufferDst, hBufferSrc, x=0, y=0)
{
VarSetCapacity(ImgSrc, 24, 0)
VarSetCapacity(ImgDst, 24, 0)
hBitmapSrc := DllCall("GetCurrentObject", "uint", hBufferSrc, "uint", 7)
hBitmapDst := DllCall("GetCurrentObject", "uint", hBufferDst, "uint", 7)
DllCall("GetObject", "uInt", hBitmapSrc, "uInt", 24, "uInt", &ImgSrc)
DllCall("GetObject", "uInt", hBitmapDst, "uInt", 24, "uInt", &ImgDst)
w := ((NumGet(ImgSrc, 4)<=NumGet(ImgDst, 4)) ? NumGet(ImgSrc, 4) : NumGet(ImgDst, 4))
h := ((NumGet(ImgSrc, 8)<=NumGet(ImgDst, 8)) ? NumGet(ImgSrc, 8) : NumGet(ImgDst, 8))
Return DllCall("BitBlt", "uint", hBufferDst, "int", x, "int", y, "int", w, "int", h, "uint", hBufferSrc
, "int", 0, "int", 0, "uint", 0xCC0020)
}
;============================================================================
Aero_MultibyteToWide(Multibyte, byref Wide)
{
SizeOfString := DllCall("MultiByteToWideChar", "uInt", 0, "uInt", 0, "uInt", &Multibyte, "Int", -1, "uInt", 0, "Int", 0) * 2
VarSetCapacity(Wide, SizeOfString, 0)
Return DllCall("MultiByteToWideChar", "uInt", 0, "uInt", 0, "uInt", &Multibyte, "Int", -1, "uInt", &Wide, "uInt", SizeOfString)
}
;============================================================================
Aero_DrawText(hBuffer, Text, x=10, y=10, color="", glowsize=14) ;BUGGY , DONT WORK , DONT USE IT
{
Gui, +LastFound ;Zum verwenden des Theme
Aero_MultibyteToWide("CompositedWindow::Window", WideClass)
hTheme := DllCall("uxtheme\OpenThemeData", "uint", WinExist(), "uint", &WideClass)
hTmpBuffer := Aero_CreateBufferFromBuffer(hBuffer)
hFont := DllCall("GetCurrentObject", "uint", hBuffer, "uint", 6)
DllCall("SelectObject", "uint", hTmpBuffer, "uint", hFont)
VarSetCapacity(Img, 24, 0)
hBitmap := DllCall("GetCurrentObject", "uint", hBuffer, "uint", 7)
DllCall("GetObject", "uInt", hBitmap, "uint", 24, "uint", &Img)
VarSetCapacity(rect, 16, 0)
NumPut(x, rect, 0, "int")
NumPut(y, rect, 4, "int")
NumPut(NumGet(Img, 4)-x, rect, 8, "int")
NumPut(NumGet(Img, 8)-y, rect, 12, "int")
VarSetCapacity(dttopts, 64, 0)
NumPut(64, dttopts, 0, "uint") ;dwSize
NumPut(0x2800 + ((color!="") ? 1 : 0), dttopts, 4, "uint") ;dwFlags (DTT_COMPOSITED | DTT_GLOWSIZE)
if (color!="")
NumPut(((color&0xFF0000)>>16) | (color&0xFF00) | ((color&0xFF)<<16), dttopts, 8, "uint") ;RGB to BGR
NumPut(glowsize, dttopts, 52, "int")
Aero_MultibyteToWide(Text, WideText)
DllCall("uxtheme\DrawThemeTextEx", "uint", hTheme, "uint", hTmpBuffer, "int", 0, "int", 0, "uint", &WideText, "int", -1, "uint", 0x40000, "uint", &rect, "uint", &dttopts)
Aero_AlphaBlend(hBuffer, hTmpBuffer)
Aero_DeleteBuffer(hTmpBuffer)
}
Aero_UseFont(hWnd, hBuffer)
{
hDC := DllCall("GetDC", "uint", hWnd)
hFont := DllCall("GetCurrentObject", "uint", hDC, "uint", 6)
DllCall("SelectObject", "uint", hBuffer, "uint", hFont)
return 1
}
Aero_UseGuiFont(hBuffer, GuiNum="default")
{
Gui, % ((GuiNum="default") ? "" : GuiNum ":") "+LastFound"
return Aero_UseFont(WinExist(), hBuffer)
}
IDE_DrawTransImage(hwnd,Path="")
{
If(!Path)
Return,False
hDC := DllCall("GetDC", "uint", hwnd)
hBuffer:=Aero_CreateBuffer(hwnd)
hImage:=Aero_LoadImage(Path)
hBuffer:=Aero_DrawImage(hBuffer, hImage)
Aero_Blit(hDC, hBuffer)
Aero_DeleteImage(hImage)
}