【发布时间】:2009-04-28 13:17:25
【问题描述】:
有一些免费软件工具(例如,Taskbar Shuffle、XNeat 等)能够更改任务栏上按钮的顺序,而无需实际关闭或打开任何窗口。不幸的是,它们似乎都不是开源的。
更改任务栏中按钮的顺序需要哪些 API 调用?
【问题讨论】:
标签: windows winapi button taskbar
有一些免费软件工具(例如,Taskbar Shuffle、XNeat 等)能够更改任务栏上按钮的顺序,而无需实际关闭或打开任何窗口。不幸的是,它们似乎都不是开源的。
更改任务栏中按钮的顺序需要哪些 API 调用?
【问题讨论】:
标签: windows winapi button taskbar
答案是在对SendMessage() 的调用中使用TB_MOVEBUTTON,如the WinAPI documentation here 中所述。
SendMessage() (hWndControl) 的第一个参数需要是对包含任务栏按钮的工具栏的引用。这并非易事,但 Chris Clarke 的回答中提到的 CodeProject entry 具有检索此句柄所需的所有代码。
wParam和lParam需要分别设置为要移动的按钮的按钮ID和要移动到的位置。这些 ID 是代表每个按钮的TBBUTTON 结构中的idCommand 字段;如何检索这些按钮的结构也可以从上面的CodeProject entry获取。
【讨论】:
Windows API 不公开重新排列任务栏按钮的方法是有意的。没有支持的方法来执行此操作。
请参阅this 文章(及其链接的文章),了解 shell 开发人员为何不公开此功能背后的想法。
然而, 足智多谋的人已经设计了实现此目的的技巧(请参阅其他答案)。我怀疑这些方法会随着 Windows 的发展(Windows 7、64 位等)而分崩离析。当这些技术停止工作时,不要感到惊讶。
【讨论】: