程序有个特殊的需求,就是运行时,要把状态栏上的图标变成小图标(下图1)。默认情况下,我们的系统状态栏上的图标都是大图标(下图2),在win7,win8上都可以正常运行,实现方式如下:'把SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\的TaskbarSmallIcons值改成1
rc = RegOpenKeyEx(HKEY_CURRENT_USER, SUBKEY_ADVANCED, 0, KEY_SET_VALUE, hSubKey) If rc <> ERROR_SUCCESS Then Exit Sub rc = RegSetValueEx(hSubKey, REGNAME_TASKBARSMALLICONS, 0, REG_DWORD, p_SmallIcons, Len(p_SmallIcons))
rc = RegCloseKey&(HKEY_CURRENT_USER&)'然后给系统发消息
Call SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_ABORTIFHUNG, 5000, w_retCode)
但是win10就是不行,奇了怪了。,望指教
rc = RegOpenKeyEx(HKEY_CURRENT_USER, SUBKEY_ADVANCED, 0, KEY_SET_VALUE, hSubKey) If rc <> ERROR_SUCCESS Then Exit Sub rc = RegSetValueEx(hSubKey, REGNAME_TASKBARSMALLICONS, 0, REG_DWORD, p_SmallIcons, Len(p_SmallIcons))
rc = RegCloseKey&(HKEY_CURRENT_USER&)'然后给系统发消息
Call SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_ABORTIFHUNG, 5000, w_retCode)
但是win10就是不行,奇了怪了。,望指教
图一
看看它是否创建了那个注册表项、并且对应的值(数据类型及格式)是多少。
我的意思不是说看你的程序修改注册表结果对不对。
我是说,你把那个注册表项(TaskbarSmallIcons)删除掉,然后直接操作任务栏的属性,
让它显示为大图标、小图标,看看系统会不会把TaskbarSmallIcons创建出来、以及大图标、小图标时对应什么样的数据。
(就是首先要搞清楚:在Win10下,是不是跟Win7、Win8还是一样的。)
注册表那儿没变,看来是消息的变动了,这个不知道能不能查到资料。
WM_SETTINGCHANGE这个应该是不会变的,
估计在HWND_BROADCAST这个参数上有变化。不知道可不可以用 Spy++把这个消息“找出来”。
我msdn的论坛上也提问了,就是没有人理,奇了怪,麻烦大虾们上去顶顶..
https://social.technet.microsoft.com/Forums/en-US/c6160636-a7ad-4bd0-9fc4-061b75c9b4ea/windows10-desktop-app-how-to-dynamically-set-the-icon-on-the-taskbar-to-large-or-small
我的英文很烂,如果上面没有描述清楚,麻烦给咱在上面回帖说明下,谢谢了