browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

操作 Windows7 任务栏的快捷方式

Posted by on 2009 年 11 月 18 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

2011.3.3 更新:

目前已经有了可以直接调用的方法。通过 ShellExecute 的 taskbarpin 动词直接实现,如:

1
2
3
ShellExecute(NULL, _T("taskbarpin"),
    _T("C:\\Users\\titilima\\Desktop\\Test.lnk"),
    NULL, NULL, SW_SHOWNORMAL);

因此,下面的内容可以无视了。

———- 传说中的分隔线 ———-

Windows 7 发布已经有段时间了,今天的话题正是针对于此——占领 Windows7 的任务栏,将应用程序 pin 到任务栏上,或者 unpin 之。
具体的方法我在网上也搜到一些,不过在逆向了某程序之后,发现还是它做的优雅一些,于是这里介绍的就是这种方法。需要说明的是,由于各种原因所限,我不能给出源代码。在这里我只给个大概的步骤,相信看懂还是不成问题的。如有不明白的,请自行根据关键字查阅 MSDN 文档。

  1. 查阅 shell32.dll 的字符串资源,找到 pin 和 unpin 命令字符串的 id,记下以便以后使用;
  2. 创建一个 IShellDispatch 接口;
  3. 经由 IShellDispatch 接口获得应用程序所在路径对应的 Folder 接口指针;
  4. 经由 Folder 接口获得应用程序文件名对应的 FolderItem 接口指针;
  5. 经由 FolderItem 接口获取 FolderItemVerbs 接口指针;
  6. 枚举 FolderItemVerbs 接口对应的动词集,获取每个动词的名称;根据第 1 步记下的字符串 id 获取字符串资源,与动词名称比对,直到找到对应的 FolderItemVerb 接口指针;
  7. 调用 FolderItemVerb::DoIt 方法,应用程序便会被 pin 或 unpin 到任务栏上了。

订阅本站

5 Comments

  • At 2009.11.18 13:37, cdut-boy said:

    感谢分享.

    • At 2009.11.18 19:03, watersky said:

      能否告知那个软件叫什么名字?

      • At 2009.11.19 08:48, 李马 said:

        抱歉,我不能在这里给出那个软件的名字。
        其实大可以找一找,有很多号称实现了“Windows 7 兼容”的软件中都应该有类似的功能。

        • At 2010.02.16 19:04, lover4ever said:

          应该有相应的API吧,用得着这么麻烦不,

          • At 2010.02.20 16:01, 李马 said:

            我曾到微软听过 Win7 的相关介绍,那里的技术人员明确指出这个特性是没有 API 直接支持的。

            (Required)
            (Required, will not be published)