Windows 8及以上系统中,哪个API能返回任务栏图标的实际24×24尺寸?
获取Windows 8及以上系统任务栏默认24×24图标尺寸的API方案
使用
GetThemePartSizeAPI:- 通过
OpenThemeData获取任务栏的主题数据,传入任务栏窗口句柄和L"TASKBAND"作为主题类名; - 调用
GetThemePartSize,指定参数TS_TRUE、NULL、TP_BUTTON(任务栏按钮部件)、TPS_NORMAL(正常状态)、NULL、TS_GLYPH(获取图标区域尺寸),即可得到默认DPI下24×24的实际图标尺寸; - 调用完成后用
CloseThemeData关闭主题数据。
- 通过
通过COM接口
IImageList获取:- 调用
SHGetImageList,传入对应任务栏图像列表的标识(如SHIL_SMALL),获取图像列表接口; - 调用
IImageList::GetIconSize方法,直接获取该列表中图标的实际尺寸; - 使用完毕后释放COM对象。
- 调用
注意:GetSystemMetrics(SM_CXICON)和GetSystemMetrics(SM_CXSMICON)返回的是系统标准图标尺寸,Windows 8及之后调整了任务栏视觉样式但保留了旧API的兼容性返回值,因此这两个接口无法直接拿到任务栏实际使用的24×24尺寸。
内容的提问来源于stack exchange,提问作者Medinoc
相关产品推荐
相关产品推荐

