如何把程序钉到Windows7任务栏(修正版)
在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任务栏(修正版)相关推荐
- WPF程序模彷Windows7的桌面任务栏
这个程序模彷了Windows7的桌面任务栏,当在桌面上双击某个快捷方式时,将打开一个新的子界面,并且在任务栏里创建一个链接到此界面的任务栏图标,将鼠标移动到任务栏上的图标时,将Popup出界面的实时图 ...
- win7锁定计算机任务栏,Windows7任务栏锁定功能怎么使用?win7使用任务栏锁定功能的方法...
电脑升级到Windows7系统后任务栏功能也有所增强了,其中任务栏"锁定"功能非常实用.除了锁定程序图标外,任务栏锁定功能还有其他的用途.那么Windows7怎么使用任务栏锁定功能 ...
- 微信小程序点击页面tab栏切换
微信小程序点击页面tab栏切换 wxml <view class="container"><view class="swiper-tab"&g ...
- 如何在RCP程序中添加一个banner栏
前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力.以前有个客户提出要在RCP程序中添加一个bann ...
- delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数)
delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数) 转载于:https://www.cnblogs.com/LittleTiger/p/6519238.html
- C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)
C#Windows7任务栏开发Thumbnail Toolbars(缩略图.工具栏按钮) 依旧是在扩展WMP播放器功能时所遇到的问题,我想要实现Windows7所带来的任务栏特性,直接看图. 以网易云 ...
- 任务栏没有计算机快捷方式,电脑程序在运行但是任务栏没有图标怎么处理 电脑程序在运行但是任务栏没有图标如何处理...
今天给大家带来电脑程序在运行但是任务栏没有图标怎么处理,电脑程序在运行但是任务栏没有图标如何处理,让您轻松解决问题. 电脑桌面下方任务栏正在运行的程序图标都消失了怎么办?有时我们在正常使用电脑时,会意 ...
- 微信小程序开发错误——底部导航栏没有显示完全
微信小程序开发错误--底部导航栏没有显示完全 原因:由于在app.json中设置跳转页面时,假设有A.B.C.D四个图标(点击可以跳转),B和C的跳转页面相同,C的图标就会覆盖B的图标,B的图标就相当 ...
- 《编程珠玑(第2版•修订版)》—第2章2.8节变位词程序的实现(边栏)
本节书摘来自异步社区<编程珠玑(第2版•修订版)>一书中的第2章2.8节变位词程序的实现(边栏),作者[美]Jon Bentley,更多章节内容可以访问云栖社区"异步社区&quo ...
最新文章
- 如何求一个数的因数 c语言代码,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- 阿里巴巴是如何管理测试环境的?
- Metal之基本简介及常用组件说明
- 带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云
- php7如何安装swoole,PHP7如何安装Swoole?
- (9)<textarea>标签在mac环境下的问题
- 必须声明标量变量是什么意思_机器视觉学习之halcon系列---一文带你理解handle变量是什么意思...
- MEF的asp.net Hello World程序
- 电脑误删文件硬盘U盘内存卡数据修复---EasyRecovery恢复
- CMPP3.0状态报告状态码
- kafka connector使用(Docker一键启动版)
- 数据结构:通过hash表方法创建母猪信息录入系统
- 有用的SAP系统管理事务码
- 配置华为防火墙NAT功能
- 从“赌场”到“大市场”——巴菲特进阶式看中国
- 每日一学:洛必达法则及其使用条件
- 传统虚拟化的技术实现
- 使用WinCE CAB Manager制作CAB安装文件
- 深入了解什么是可执行文件
- Java:一般数据结构