热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windows/Linux创建桌面快捷方式

很多时候为了方便应用程序的快捷使用,我们会创建桌面快捷方式用来便捷调用。如果应用程序没有加密调用参数的话,我们直接创建一个文件快捷方式的链接就可以了。但

很多时候为了方便应用程序的快捷使用,我们会创建桌面快捷方式用来便捷调用。如果应用程序没有加密调用参数的话,我们直接创建一个文件快捷方式的链接就可以了。但是如果应用程序添加了加密调用参数,在动态创建桌面快捷方式的时候就比较麻烦了。这里介绍一下通过windowsAPI动态创建桌面快捷方式的方法。希望对你有帮助。


Windows创建桌面快捷方式

通过WindowsAPI创建带参数的桌面快捷方式

/**@brief 通过windowsAPI创建桌面快捷方式
* @param[in] target_exe_path 应用程序的位置
* @param[in] lnk_path 快捷方式的位置
* @param[in] working_path 应用程序的工作目录
* @param[in] argument 应用程序的调用参数
* @param[in] shortcut 是否有快捷方式
* @param[in] isSHowCmd 是否显示终端
* @param[in] describe 快捷方式的描述信息
* @param[in] icon_path 快捷方式图标的位置
* @return 函数执行结果
* - 1 创建成功
* - 0 创建失败
*/
//函数调用的时候有两点需要注意
//1.快捷方式的后缀名称是lnk
//2.应用程序是无法通过外部文件指定的,需要编译进程序的资源列表中
bool create_desktop_shortcut(const wchar_t *target_exe_path, const wchar_t *lnk_path,const wchar_t *working_path, const wchar_t *argument,int shortcut,bool isShowCmd,const wchar_t* describe,const wchar_t* icon_path)
{if((target_exe_path == NULL) || (lnk_path == NULL) || (working_path == NULL) || (argument == NULL)){return false;}HRESULT hr;IShellLink *pLink;IPersistFile *ppf;hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pLink);if (FAILED(hr))return false;hr = pLink->QueryInterface(IID_IPersistFile, (void**)&ppf);if (FAILED(hr)){pLink->Release();return false;}//设置目标文件的地址pLink->SetPath(target_exe_path);//设置工作目录pLink->SetWorkingDirectory(working_path);//pLink->SetIconLocation(target_exe_path,0);pLink->SetArguments(argument);if (shortcut != 0)pLink->SetHotkey(shortcut);//设置描述信息pLink->SetDescription(describe);//是否显示终端pLink->SetShowCmd(isShowCmd);hr = ppf->Save(lnk_path, TRUE);ppf->Release();pLink->Release();return SUCCEEDED(hr);
}

Linux创建桌面快捷方式

Linux创建桌面快捷方式不需要调用对应的API,只需要创建对应的快捷方式文件就可以了。创建方法如下:

#include
#include
#include
#include
#include /**@brief Linux下创建桌面快捷方式
* @param[in] shortcut_name 应用程序的位置
* @param[in] exe_path 执行程序的位置
* @param[in] argument 程序的调用参数
* @param[in] icon_path 图标位置
* @param[in] version 程序版本信息
*/
void create_desktop_shortcut(QString shortcut_name, QString exe_path, QString argument, QString icon_path, QString version)
{//首先获取桌面的文件路径QString desktop_path &#61; QDir::toNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));//获取桌面快捷方式的位置QString file_name &#61; QString("%1.desktop").arg(shortcut_name);QString file_path &#61; QDir::toNativeSeparators(QString("%1/%2").arg(desktop_path).arg(file_name));QFile file(file_path);if(file.open(QIODevice::WriteOnly | QIODevice::Truncate)){QTextStream txt_output_stream(&file);txt_output_stream <<"[Desktop Entry]" <}


推荐阅读
author-avatar
查建樺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有