hi,
我尝试在XP下改变快速启动栏中图标的顺序,想把最后一个图标放到第一个位置上。我的代码实现如下: HWND hDesktop = GetDesktopWindow();
HWND hTray = FindWindowEx( hDesktop , 0, _T("Shell_TrayWnd") , NULL );
HWND hReBar = FindWindowEx( hTray , 0, _T("ReBarWindow32") , NULL );
HWND hToolbar = FindWindowEx( hReBar , 0, _T("ToolbarWindow32") , NULL );
int Count = SendMessage(hToolbar, TB_BUTTONCOUNT, 0, 0);
TBBUTTON tButton;
SendMessage(hToolbar, TB_MOVEBUTTON, Count-1, 0);
SendMessage(hTray, TBN_TOOLBARCHANGE, NULL, NULL);
SendMessage(hTray, TBN_SAVE, NULL, NULL);如果当前快速启动栏中没有隐藏的图标,则这段程序能够正确执行,改变顺序。但是当快速启动栏中有隐藏的图标(就是要点击快速启动栏右边的箭头才能看到的图标)时,一开始能够看到本来是隐藏图标的最后一个图标出现在了第一个位置上,可是当我单击显示隐藏图标的箭头时,所有图标的顺序又恢复成改变前的样子了。
请问我是少处理了什么过程么?应该如何做才能让改变后的顺序保存下来呢?
谢谢
我尝试在XP下改变快速启动栏中图标的顺序,想把最后一个图标放到第一个位置上。我的代码实现如下: HWND hDesktop = GetDesktopWindow();
HWND hTray = FindWindowEx( hDesktop , 0, _T("Shell_TrayWnd") , NULL );
HWND hReBar = FindWindowEx( hTray , 0, _T("ReBarWindow32") , NULL );
HWND hToolbar = FindWindowEx( hReBar , 0, _T("ToolbarWindow32") , NULL );
int Count = SendMessage(hToolbar, TB_BUTTONCOUNT, 0, 0);
TBBUTTON tButton;
SendMessage(hToolbar, TB_MOVEBUTTON, Count-1, 0);
SendMessage(hTray, TBN_TOOLBARCHANGE, NULL, NULL);
SendMessage(hTray, TBN_SAVE, NULL, NULL);如果当前快速启动栏中没有隐藏的图标,则这段程序能够正确执行,改变顺序。但是当快速启动栏中有隐藏的图标(就是要点击快速启动栏右边的箭头才能看到的图标)时,一开始能够看到本来是隐藏图标的最后一个图标出现在了第一个位置上,可是当我单击显示隐藏图标的箭头时,所有图标的顺序又恢复成改变前的样子了。
请问我是少处理了什么过程么?应该如何做才能让改变后的顺序保存下来呢?
谢谢
memset(bzData, 0, sizeof(bzData));
NReg::GetReg(HKEY_CURRENT_USER, pRegPath, "TaskbarWinXP", bzData, sizeof(bzData));
里面是个结构体, 很复杂, 建议换个方法吧