热门标签 | 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]" <}


推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers: ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
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社区 版权所有