创建快捷方式 (并添加到快速启动栏 、桌面、开始菜单)
首先需要获取三个路径 :桌面路径 、快速启动栏路径、 开始->程序组路径
//得到当前桌面路径
BOOL GetDesktopPath(char *pszDesktopPath)
{ LPITEMIDLIST ppidl = NULL; if (SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &ppidl) == S_OK) { BOOL flag = SHGetPathFromIDList(ppidl, pszDesktopPath); CoTaskMemFree(ppidl); return flag; } return FALSE;
}
//得到快速启动栏的路径
BOOL GetIEQuickLaunchPath(char *pszIEQueickLaunchPath)
{ LPITEMIDLIST ppidl; if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK) { BOOL flag = SHGetPathFromIDList(ppidl, pszIEQueickLaunchPath); strcat(pszIEQueickLaunchPath, "\\Microsoft\\Internet Explorer\\Quick Launch"); CoTaskMemFree(ppidl); return flag; } return FALSE;
}
//得到 开始->程序组 的路径
BOOL GetProgramsPath(char *pszProgramsPath)
{ LPITEMIDLIST ppidl; if (SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAMS, &ppidl) == S_OK) { BOOL flag = SHGetPathFromIDList(ppidl, pszProgramsPath); CoTaskMemFree(ppidl); return flag; } return FALSE;
}
这样返回的 pszProgramsPath就是指当前获取的路径
程序的思路:得到路径,在当前路径下创建exe相对应的快捷方式,并通过ShellExecute函数来锁定到快速启动栏或开始菜单
/*
函数功能:对指定文件在指定的目录下创建其快捷方式
函数参数:
lpszFileName 指定文件,为NULL表示当前进程的EXE文件。
lpszLnkFileDir 指定目录,不能为NULL。
lpszLnkFileName 快捷方式名称,为NULL表示EXE文件名。
wHotkey 为0表示不设置快捷键
pszDescription 备注
iShowCmd 运行方式,默认为常规窗口
*/
BOOL CreateFileShortcut(LPCSTR lpszFileName, LPCSTR lpszLnkFileDir, LPCSTR lpszLnkFileName, LPCSTR lpszWorkDir, WORD wHotkey, LPCTSTR lpszDescription, int iShowCmd = SW_SHOWNORMAL)
{ if (lpszLnkFileDir == NULL) return FALSE; HRESULT hr; IShellLink *pLink; //IShellLink对象指针 IPersistFile *ppf; //IPersisFil对象指针 //创建IShellLink对象 hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pLink); if (FAILED(hr)) return FALSE; //从IShellLink对象中获取IPersistFile接口 hr = pLink->QueryInterface(IID_IPersistFile, (void**)&ppf); if (FAILED(hr)) { pLink->Release(); return FALSE; } //获取当前exe所在路径TCHAR exeFullPath[MAX_PATH]; // MAX_PATHGetModuleFileName(NULL,exeFullPath,MAX_PATH);//目标 if (lpszFileName == NULL) pLink->SetPath(_pgmptr); else pLink->SetPath(exeFullPath); //工作目录 if (lpszWorkDir != NULL) pLink->SetWorkingDirectory(lpszWorkDir); //快捷键 if (wHotkey != 0) pLink->SetHotkey(wHotkey); //备注 if (lpszDescription != NULL) pLink->SetDescription(lpszDescription); //显示方式 pLink->SetShowCmd(iShowCmd); //快捷方式的路径 + 名称 char szBuffer[MAX_PATH]; if (lpszLnkFileName != NULL) //指定了快捷方式的名称 sprintf(szBuffer, "%s\\%s", lpszLnkFileDir, lpszLnkFileName); else { //没有指定名称,就从取指定文件的文件名作为快捷方式名称。 //char *pstr; char *buf = new char[strlen(lpszFileName)+1];strcpy(buf, lpszFileName); if (buf == NULL) { ppf->Release(); pLink->Release(); return FALSE; } //注意后缀名要从.exe改为.lnk sprintf(szBuffer, "%s\\%s", lpszLnkFileDir, buf); int nLen = strlen(szBuffer);//char lkName = ;strcat(szBuffer, ".lnk");} //保存快捷方式到指定目录下 WCHAR wsz[MAX_PATH]; //定义Unicode字符串 MultiByteToWideChar(CP_ACP, 0, szBuffer, -1, wsz, MAX_PATH); hr = ppf->Save(wsz, TRUE); ppf->Release(); pLink->Release(); CoUninitialize(); //释放com接口return SUCCEEDED(hr);
}
下面说一下调用 :
char szPath[MAX_PATH];
CoInitialize(NULL); GetDesktopPath(szPath);
//GetIEQuickLaunchPath(szPath);
//GetProgramsPath(szPath);if (!CreateFileShortcut(_T("QQMusicEx"), szPath, NULL, NULL, 0 , NULL)) return ;
else
{//strcat(szPath,"\\QQMusicEx.lnk");//ShellExecute(NULL,_T("TaskbarPin"), szPath, NULL, NULL, SW_SHOW); // 锁定程序到任务栏//ShellExecute(NULL,_T("startpin"), szPath, NULL, NULL, SW_SHOW); // 锁定程序到开始菜单//startpin
}
红色代表桌面快捷方式,下面的else注释掉
蓝色放开注释,else里面的strcat跟着一起放开
紫色放开注释,else操作同上
注意:1. 需要注意的是 在创建开解方式的时候需要添加头文件
#include <shlobj.h>#pragma comment(lib, "shell32.lib")
2. TaskbarPin是锁定 Task barUnpin是解锁
startpin和startunpin是相对应的
创建快捷方式 (并添加到快速启动栏 、桌面、开始菜单)相关推荐
- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式...
{================================================================= 功 能: 创建 桌面.发送到 ...
- 将“360软件小助手添加到“快速启动栏”
1)将"360软件小助手添加到"快速启动栏" 点击"360"-->软件管家-->在"软件管家"的右下角找到" ...
- Ubuntu中创建应用快捷方式并固定到快速启动栏
这种方式通常是在线下手动安装应用时会出现 1.创建快捷方式 .desktop 文件 首先,Ubuntu的快捷方式都放在 /usr/share/applications 文件夹下 创建desktop文件 ...
- 如何在Windows中将“显示桌面”图标移动到快速启动栏或任务栏
If you aren't a fan of scrolling your pointer over to the lower right corner of your monitor to show ...
- 如何在Windows中将应用程序添加到快速启动菜单
The Quick Launch bar, which was removed in Windows 7, can be added back to the Taskbar in Windows 7, ...
- 【解决】快速启动栏消失了
昨天中了木马,快速启动栏还有我的电脑图标都消失了,现在找到了解决方法如下: [我的电脑]:桌面-右键-属性-桌面-自定义桌面---选中"我的电脑",即可 [快速启动栏]:这个我找了 ...
- 如何在快速启动栏创建快捷方式
#define NO_WIN32_LEAN_AND_MEAN #include <shlobj.hpp> #include < VC l.h> // 以上三行放在单元文件最开始 ...
- 创建快捷方式到桌面、任务栏、开始菜单、快速启动栏、程序组中
//得到快速启动栏的路径 BOOL GetIEQuickLaunchPath(WCHAR *pszIEQueickLaunchPath) {LPITEMIDLIST ppidl;if (SHGetSp ...
- win7下快速启动栏的快捷方式的位置
前几天在VMware下装了个win7玩玩,装好后发现ie8的首页被改成2345.com.于是到注册表搜索,把能搜到的所有数据都清空掉. 再次打开ie,发现从桌面上打开的ie时主页已经恢复正常,但是从快 ...
最新文章
- 数字证书及在WCF中的应用
- 天天红单app下载安装_App内测好帮手,稳定内测分发就选择TF签名
- 5、urllib.request.urlopen()
- vue框架开发出现页面空白、白屏的解决方法总汇
- python消费kafka_Python脚本消费kafka数据
- 手机都可以直接敲R了,还要电脑干嘛
- JBoss AS 7中Domain Mode 和 Standalone Mode
- 字符串的数组形式与指针形式
- linux命令行看直播网站,快速搭建linux下视频点播,直播网站。
- 2019最新版QQ音乐api调用(原创)
- 3D纹理贴图制软件The Foundry Mari for Mac
- 使用PS软件修改图片的尺寸
- BZOJ 3654: [湖南集训]图样图森破 SA
- 51nod 1457:小K vs. 竹子
- 跃见非凡!华为Mate40系列国内发布4999元起
- Android Studio实现百度地图定位(显示经纬度和地址)
- Ubuntu 编译ijkplayer 支持几乎所有格式(MP4,mov,mkv,avi,wmv,m4v,mpg,webm,ogv,3g2.flv,f4v,swf)和https
- 从产品角度分析羊了个羊为何能爆火
- 互联网医院系统软件开发|互联网医院管理系统开发的好处
- 记录——折腾 黑苹果
热门文章
- Unity中的三种资源加载和卸载
- Python 矩阵基本运算【numpy】
- mysql 自定义函数,if else
- php 数组合并无效,【已解决】php 数组合并的问题
- Paper之ACMCHUISTICUCIJHC:2009年~2019年人机交互技术(计算系统人为因素会议用户界面软件计算国际会议国际人类计算机研究人机交互的交易)历年最佳论文简介及其解读
- 科目要求一个成本会计分配
- Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
- 关于Antd 表格(Table)中插入图片
- Java中类的继承详解(转载)
- 来自自身的信息——“灵魂暗夜”