/*
win桌面美化,AHK桌面美化的小工具找得实在是困难,我一直想将那些小工具融合到自己可以调整的AHK中,,,可是资源少
任务栏背景透明
完全透明: accent_state := 2 并且 gradient_color := "0x01000000"
结合UMP应用RoudedTB,它成功将任务栏切割了,并可以单独隐藏右下角托盘区! 希望有人可以去RoudedTB里面看看能否用AHK实现?
UMP微软商店有一个TranslucentTB结合RoudedTB可以比较完美融合,但是我就是想少用一个软件,所以大概可以少用前者了
以下代码我是抄的AutoIt的,https://www.autoitscript.com/forum/topic/188664-function-setwindowcompositionattribute-convert-c-to-autoit/
反正能满足我的需求就可以了,毕竟中文论坛里面没有找到现成能用的
*/
#SingleInstance Force
#NoEnv
#Persistent
; #NoTrayIcon
SetBatchLines -1
; PS:此函数学习研究即可,对系统变化和判断的能力不如TranslucentTB工具
SetTimer, UPDATE_TASKBAR, 100
return
UPDATE_TASKBAR:
TaskBarSet(2, 0x90191919) ; 函数默认全透明了,我就不用传参数了
return
;accent_state := 2 ; 2代表透明,我用2,1
;gradient_color := "0x01000000" ; 0x01前面四个数字代表gradient梯度,它和透明2组合之后效果就是完全透明
;2, 0xa1e3c791) ; <- Set transparent with color 0xd7a78f ( rgb = 0x91c7e3 ) and alpha 0xa1
TaskBarSet(accent_state:=2,gradient_color:="0x01000000")
{
hTrayWnd := DllCall("User32\FindWindow", "str", "Shell_TrayWnd", "ptr", , "ptr")
pad := A_PtrSize=8 ? 4 : 0
WCA_ACCENT_POLICY := 19
accent_size := VarSetCapacity(ACCENT_POLICY, 16, 0)
NumPut((accent_state>0 && accent_state<4) ? accent_state : 0, ACCENT_POLICY, 0, "int")
NumPut(gradient_color, ACCENT_POLICY, 8, "int")
VarSetCapacity(WINCOMPATTRDATA, 4 + pad + A_PtrSize + 4 + pad, 0)
&& NumPut(WCA_ACCENT_POLICY, WINCOMPATTRDATA, 0, "int")
&& NumPut(&ACCENT_POLICY, WINCOMPATTRDATA, 4 + pad, "ptr")
&& NumPut(accent_size, WINCOMPATTRDATA, 4 + pad + A_PtrSize, "uint")
DllCall("user32\SetWindowCompositionAttribute", "ptr", hTrayWnd, "ptr", &WINCOMPATTRDATA)
;就是这么一个API
}
/* 这数据结构是这样的
typedef struct _WINDOWCOMPOSITIONATTRIBDATA {
WINDOWCOMPOSITIONATTRIB Attrib;
PVOID pvData;
SIZE_T cbData;
} WINDOWCOMPOSITIONATTRIBDATA;
typedef enum _WINDOWCOMPOSITIONATTRIB {
WCA_UNDEFINED = 0,
WCA_NCRENDERING_ENABLED = 1,
WCA_NCRENDERING_ENABLED = 1,
WCA_NCRENDERING_POLICY = 2,
WCA_TRANSITIONS_FORCEDISABLED = 3,
WCA_ALLOW_NCPAINT = 4,
WCA_CAPTION_BUTTON_BOUNDS = 5,
WCA_NONCLIENT_RTL_LAYOUT = 6,
WCA_FORCE_ICONIC_REPRESENTATION = 7,
WCA_EXTENDED_FRAME_BOUNDS = 8,
WCA_HAS_ICONIC_BITMAP = 9,
WCA_THEME_ATTRIBUTES = 10,
WCA_NCRENDERING_EXILED = 11,
WCA_NCADORNMENTINFO = 12,
WCA_EXCLUDED_FROM_LIVEPREVIEW = 13,
WCA_VIDEO_OVERLAY_ACTIVE = 14,
WCA_FORCE_ACTIVEWINDOW_APPEARANCE = 15,
WCA_DISALLOW_PEEK = 16,
WCA_CLOAK = 17,
WCA_CLOAKED = 18,
WCA_ACCENT_POLICY = 19,
WCA_FREEZE_REPRESENTATION = 20,
WCA_EVER_UNCLOAKED = 21,
WCA_VISUAL_OWNER = 22,
WCA_LAST = 23
} WINDOWCOMPOSITIONATTRIB;
typedef struct _ACCENT_POLICY {
ACCENT_STATE AccentState;
DWORD AccentFlags;
DWORD GradientColor;
DWORD AnimationId;
} ACCENT_POLICY;
typedef enum _ACCENT_STATE {
ACCENT_DISABLED = 0,
ACCENT_ENABLE_GRADIENT = 1,
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
ACCENT_ENABLE_BLURBEHIND = 3,
ACCENT_INVALID_STATE = 4
} ACCENT_STATE;
_ACCENT_FLAGS {
DrawLeftBorder = 0x20,
DrawTopBorder = 0x40,
DrawRightBorder = 0x80,
DrawBottomBorder = 0x100,
DrawAllBorders = (DrawLeftBorder | DrawTopBorder | DrawRightBorder | DrawBottomBorder)
}
*/
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)