如何把程序钉到Windows7任务栏(修正版)
来源:互联网 发布:linux 线程cpu利用率 编辑:程序博客网 时间:2024/04/30 02:36
在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);var vShell, vFolder, vFolderItem, vItemVerbs: Variant; vPath, vApp: Variant; i: Integer; str: String; h: HINST; szPinName: array[0..255] of Char;begin vShell := 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 do begin str := vItemVerbs.Item(i).Name; if SameText(str, szPinName) then begin // 63 63 72 75 6E 2E 63 6F 6D vItemVerbs.Item(i).DoIt; end; end;end;procedure TForm1.Button1Click(Sender: TObject);begin CrnPinAppToWin7Taskbar('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字符串, 感谢titilima HINSTANCE 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 6D vItemVerbs.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任务栏(修正版)
- 如何把程序钉到Windows7任务栏
- win7如何把一个程序锁定到任务栏
- win7下如何把程序图标添加到任务栏…
- win7下如何把程序图标添加到任务栏…
- 把程序锁定到Win7任务栏
- 把程序锁定到Win7任务栏
- windows7系统不能将成程序锁定到任务栏方法
- windows7不能将程序快捷方式附加到任务栏的解决办法
- windows7 旗舰版 不能将程序锁定到任务栏
- Windows7任务栏程序找不到历史记录
- windows7不能将程序快捷方式附加到任务栏,没有"将此程序锁定到任务栏"项的解决办法
- win7不能把程序锁定到任务栏的解决方法
- [分享]把程序锁定到Win7任务栏,该怎么处理
- windows7右键没有“锁定到任务栏”选项
- 如何通过代码使程序最小化到任务栏
- 把窗体钉在桌面是如何实现的
- 找回Windows7的“将此程序锁定到任务栏”功能(Pin to Taskbar / Pin to Start Menu)
- 用MATLAB做T检验(ttest)
- 关于sql和bigdecimal的除法
- [mysql] 用bat文件执行mysql数据库sql文件
- java开源消息服务(OpenJMS&ActiveMQ)-OpenJMS学习笔记二(运行)
- C语言面试题
- 如何把程序钉到Windows7任务栏(修正版)
- HTTP学习笔记之三——Proxy代理服务器
- GCC使用入门(一)
- 部分视图调用方法总结(Action 、 RenderAction 、 Partial 、 RenderPartial)
- Axis1.4开发webservice总结
- django中CSRF的问题及解决
- C++中#include包含头文件带 .h 和不带 .h 的区别
- I帧、P帧和B帧的特点
- 经典软件推荐:AppVerifier(应用程序验证器)