在CSDN论坛看到有网友提问如何把程序钉到Windows7的任务栏,ccrun(妖哥)对这个问题很感兴趣,于是google了一下,没有找到相关的API资料,但是在国外的一个站点看到用FolderItemVerb对象来实现的方法,关于具体的资料,可以查阅MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb774172(v=vs.85).aspx

在Delphi中实现的代码如下。编译环境:Delphi7和XE2,测试操作系统为中文和英文Windows7

uses ComObj;procedure CrnPinAppToWin7Taskbar(strPath, strApp: string);
varvShell, vFolder, vFolderItem, vItemVerbs: Variant;vPath, vApp: Variant;i: Integer;str: String;h: HINST;szPinName: array[0..255] of Char;
beginvShell := CreateOleObject('Shell.Application');vPath := strPath;vFolder := vShell.NameSpace(vPath);vApp := strApp;vFolderItem := vFolder.ParseName(vApp);vItemVerbs := vFolderItem.Verbs;h := LoadLibrary('Shell32.dll');LoadString(h, 5386, szPinName, 256);FreeLibrary(h);for i := 1 to vItemVerbs.Count dobeginstr := vItemVerbs.Item(i).Name;if SameText(str, szPinName) thenbegin// 63 63 72 75 6E 2E 63 6F 6DvItemVerbs.Item(i).DoIt;end;end;
end;procedure TForm1.Button1Click(Sender: TObject);
beginCrnPinAppToWin7Taskbar('C:\windows', 'regedit.exe');
end;

在C++Builder中的实现代码如下。编译环境:C++Builder6和XE2,测试操作系统:中文和英文Windows7

#include <comobj.hpp>void __fastcall CrnPinAppToWin7Taskbar(String strPath, String strApp)
{Variant vShell = CreateOleObject("Shell.Application");Variant vFolder = vShell.OleFunction("NameSpace", WideString(strPath));Variant vFolderItem = vFolder.OleFunction("ParseName", WideString(strApp));Variant vItemVerbs = vFolderItem.OleFunction("Verbs");// 获取Pin to Taskbar的Verb字符串, 感谢titilimaHINSTANCE hInst = ::LoadLibrary(TEXT("Shell32.dll"));TCHAR szPinName[256] = { 0 };::LoadString(hInst, 5386, szPinName, 256);::FreeLibrary(hInst);String str;int nCount = vItemVerbs.OlePropertyGet("Count");for (int i = 0; i < nCount; i++){str = vItemVerbs.OleFunction("Item", i).OlePropertyGet("Name");if (SameText(str, szPinName)){// 63 63 72 75 6E 2E 63 6F 6DvItemVerbs.OleFunction("Item", i).OleFunction("DoIt");}}
}void __fastcall TForm1::Button1Click(TObject *Sender)
{CrnPinAppToWin7Taskbar("C:\\windows\\", "notepad.exe");
}

另外,感谢titilima大牛,针对.lnk文件钉到Win7任务栏,有更简便的方法:

C++代码:

::ShellExecute(NULL, TEXT("TaskbarPin"), TEXT("E:\\Temp\\Notepad.lnk"), NULL, NULL, SW_SHOW);

Delphi代码:

ShellExecute(nil, 'TaskbarPin', 'E:\Temp\Notepad.lnk'), nil, nil, SW_SHOW);

如何把程序钉到Windows7任务栏(修正版)相关推荐

  1. WPF程序模彷Windows7的桌面任务栏

    这个程序模彷了Windows7的桌面任务栏,当在桌面上双击某个快捷方式时,将打开一个新的子界面,并且在任务栏里创建一个链接到此界面的任务栏图标,将鼠标移动到任务栏上的图标时,将Popup出界面的实时图 ...

  2. win7锁定计算机任务栏,Windows7任务栏锁定功能怎么使用?win7使用任务栏锁定功能的方法...

    电脑升级到Windows7系统后任务栏功能也有所增强了,其中任务栏"锁定"功能非常实用.除了锁定程序图标外,任务栏锁定功能还有其他的用途.那么Windows7怎么使用任务栏锁定功能 ...

  3. 微信小程序点击页面tab栏切换

    微信小程序点击页面tab栏切换 wxml <view class="container"><view class="swiper-tab"&g ...

  4. 如何在RCP程序中添加一个banner栏

    前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力.以前有个客户提出要在RCP程序中添加一个bann ...

  5. delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数)

    delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数) 转载于:https://www.cnblogs.com/LittleTiger/p/6519238.html

  6. C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)

    C#Windows7任务栏开发Thumbnail Toolbars(缩略图.工具栏按钮) 依旧是在扩展WMP播放器功能时所遇到的问题,我想要实现Windows7所带来的任务栏特性,直接看图. 以网易云 ...

  7. 任务栏没有计算机快捷方式,电脑程序在运行但是任务栏没有图标怎么处理 电脑程序在运行但是任务栏没有图标如何处理...

    今天给大家带来电脑程序在运行但是任务栏没有图标怎么处理,电脑程序在运行但是任务栏没有图标如何处理,让您轻松解决问题. 电脑桌面下方任务栏正在运行的程序图标都消失了怎么办?有时我们在正常使用电脑时,会意 ...

  8. 微信小程序开发错误——底部导航栏没有显示完全

    微信小程序开发错误--底部导航栏没有显示完全 原因:由于在app.json中设置跳转页面时,假设有A.B.C.D四个图标(点击可以跳转),B和C的跳转页面相同,C的图标就会覆盖B的图标,B的图标就相当 ...

  9. 《编程珠玑(第2版•修订版)》—第2章2.8节变位词程序的实现(边栏)

    本节书摘来自异步社区<编程珠玑(第2版•修订版)>一书中的第2章2.8节变位词程序的实现(边栏),作者[美]Jon Bentley,更多章节内容可以访问云栖社区"异步社区&quo ...

最新文章

  1. 如何求一个数的因数 c语言代码,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  2. 阿里巴巴是如何管理测试环境的?
  3. Metal之基本简介及常用组件说明
  4. 带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云
  5. php7如何安装swoole,PHP7如何安装Swoole?
  6. (9)<textarea>标签在mac环境下的问题
  7. 必须声明标量变量是什么意思_机器视觉学习之halcon系列---一文带你理解handle变量是什么意思...
  8. MEF的asp.net Hello World程序
  9. 电脑误删文件硬盘U盘内存卡数据修复---EasyRecovery恢复
  10. CMPP3.0状态报告状态码
  11. kafka connector使用(Docker一键启动版)
  12. 数据结构:通过hash表方法创建母猪信息录入系统
  13. 有用的SAP系统管理事务码
  14. 配置华为防火墙NAT功能
  15. 从“赌场”到“大市场”——巴菲特进阶式看中国
  16. 每日一学:洛必达法则及其使用条件
  17. 传统虚拟化的技术实现
  18. 使用WinCE CAB Manager制作CAB安装文件
  19. 深入了解什么是可执行文件
  20. Java:一般数据结构

热门文章

  1. 安卓系列手机的H5页面背景色失效的问题(踩坑手机小米8)
  2. 打开Excel,原有的数字内容都自动转换成日期格式的问题
  3. Informer源码分析
  4. OpenGl计算机图形学入门
  5. 设计模式~~~装饰者模式
  6. java托盘 不见了,win7系统任务栏托盘图标消失不见了如何找回
  7. iOS每日一记之———————————————面试杂感。。。。 6月3号到6月14号
  8. Jsoncpp解析中国地区编码JSON数据
  9. 那一刻,我拥有了女朋友!
  10. 【前端教程】给网站添加暗黑模式指南