win7如何把一个程序锁定到任务栏
来源:互联网 发布:手机淘宝无法确认收货 编辑:程序博客网 时间:2024/05/16 14:33
#include "stdafx.h"
#include "PinAppToTaskbar.h"
#include <Shlwapi.h>
#include <atlpath.h>
#include <shobjidl.h>
#define RETURN_IF_NULL_EX(ret, pPointer) { \
if (!(pPointer)) \
{ \
return ret; \
} \
}
#define RETURN_IF_FALSE_EX(ret, val) { \
if (!(val)) \
{ \
return ret; \
} \
}
//1. 得到IShellDispatch
//2. 得到Folder
//3. 得到FolderItem
//4. 得到Verb
//5. 执行verb
long PinAppToTaskbar(const CString& csFullName)
{
if (!PathFileExists(csFullName))
{
return ERROR_FILE_NOT_FOUND;
}
//加载字符串,形如"锁定到任务栏(K)"
//如果找不到,则可能系统版本低于win7
HINSTANCE hInst = ::LoadLibrary(_T("Shell32.dll"));
CString csVerb;
::LoadString(hInst, 5386,csVerb.GetBuffer(256), 256);
::FreeLibrary(hInst);
csVerb.ReleaseBuffer();
if (csVerb.IsEmpty())
{
//只有在win7及以上才支持
return CO_E_WRONGOSFORAPP;
}
CLSID clsid;
::CLSIDFromProgID(_T("Shell.Application"), &clsid);
CComQIPtr<IShellDispatch>pShell;
HRESULT hr = ::CoCreateInstance(CLSID_Shell,NULL, CLSCTX_INPROC_SERVER,IID_IShellDispatch, (void**)&pShell);
ASSERT(SUCCEEDED(hr));
RETURN_IF_FALSE_EX(hr,SUCCEEDED(hr));
CString csName = PathFindFileName(csFullName);
CPath path(csFullName);
path.RemoveFileSpec();
CString csPath = path;
CComVariant varPath(csPath);
CComQIPtr<Folder>pFolder;
//NameSpace方法
//Creates and returns a Folder object for the specified folder.
pShell->NameSpace(varPath, &pFolder);
ASSERT(pFolder);
RETURN_IF_NULL_EX(E_NOINTERFACE,pFolder);
CComBSTR bstrName(csName);
CComQIPtr<FolderItem>pFolderItem;
//ParseName方法 Creates and returns a FolderItem object that represents a specified item.
pFolder->ParseName(bstrName, &pFolderItem);
ASSERT(pFolderItem);
RETURN_IF_NULL_EX(E_NOINTERFACE,pFolderItem);
CComQIPtr<FolderItemVerbs>pVerbs;
pFolderItem->Verbs(&pVerbs);
ASSERT(pVerbs);
long lCount = 0;
pVerbs->get_Count(&lCount);
for (longi = 0; i < lCount; ++i)
{
CComQIPtr<FolderItemVerb>pOneVerb;
pVerbs->Item(CComVariant(i), &pOneVerb);
CComBSTR bstrVerbName;
pOneVerb->get_Name(&bstrVerbName);
if (CString(bstrVerbName).Compare(csVerb) == 0)
{
pOneVerb->DoIt();
return S_OK;
}
}
return E_FAIL;
}
- win7如何把一个程序锁定到任务栏
- 把程序锁定到Win7任务栏
- 把程序锁定到Win7任务栏
- win7不能把程序锁定到任务栏的解决方法
- [分享]把程序锁定到Win7任务栏,该怎么处理
- win7下如何把程序图标添加到任务栏…
- win7下如何把程序图标添加到任务栏…
- WIN7将程序锁定到任务栏消失不见了怎么办
- 如何把程序钉到Windows7任务栏
- 将程序锁定到任务栏
- win7没有锁定到任务栏问题解决
- Win7无法将应用程序锁定到任务栏
- 解决Win7中程序无法“锁定到任务栏”或“附到开始菜单”的问题
- winapi 锁定程序到任务栏 c++
- c++ 将程序锁定到任务栏
- 如何把程序钉到Windows7任务栏(修正版)
- win7锁定任务栏
- win7 锁定和解锁图标到开始菜单和任务栏
- Qt学习:Qt中QGridLayout按比例设定布局
- PCFG
- 不能为virtual 的函数
- 无法访问共享文件(局域网)
- 轻松掌握设计 Sql Server触发器的原理
- win7如何把一个程序锁定到任务栏
- ios字体样式
- 交换机光口对通注意事项
- java实现双端队列
- 数据结构--参数传递的问题解释
- C语言中基本类型转换(红字部分需求证)
- shm_open和mmap,以及共享内存
- mysql 命令行插入中文没问题 java代码插入成问号
- 在Ubuntu(Debian)上安装最新版Git