创建快捷方式

#include <iostream>
#include <atlconv.h>
#include <ShlObj.h>
#include <Shlwapi.h>

#pragma comment(lib, "Shlwapi.lib")

void createShutcut(char* szExe, char* szLink)
{
    ::CoInitialize(NULL);

    HRESULT hr = S_OK;
    IShellLink * pShl = NULL;
    IPersistFile * ppf = NULL;

    hr = ::CoCreateInstance(  // 启动组件
        CLSID_ShellLink,      // 快捷方式 CLSID
        NULL,                 // 聚合用(注4)
        CLSCTX_INPROC_SERVER, // 进程内(Shell32.dll)服务
        IID_IShellLink,       // IShellLink 的 IID
        (LPVOID *)&pShl);     // 得到接口指针

    if (SUCCEEDED(hr))
    {
        pShl->SetPath(szExe);   // 全路径程序名
        //pShl->SetArguments();      // 命令行参数
        //pShl->SetDescription();    // 备注
        //pShl->SetHotkey();         // 快捷键
        //pShl->SetIconLocation();   // 图标
        //pShl->SetShowCmd();        // 窗口尺寸

        // 根据 EXE 的文件名,得到目录名
        char workDir[MAX_PATH] = { 0 };
        strcpy_s(workDir, szExe);
        PathRemoveFileSpecA(workDir);
        // 设置 EXE 程序的默认工作目录

        pShl->SetWorkingDirectory(workDir);

        hr = pShl->QueryInterface(  // 查找持续性文件接口指针
            IID_IPersistFile,      // 持续性接口 IID
            (LPVOID *)&ppf);      // 得到接口指针

        if (SUCCEEDED(hr))
        {
            USES_CONVERSION;
            ppf->Save(A2OLE(szLink), TRUE);
        }
    }

    if (pShl)
    {
        pShl->Release();
    }
    if (ppf)
    {
        ppf->Release();
    }

    ::CoUninitialize();
}

int main(int argc, char* argv[])
{
    createShutcut("C:\\Program Files (x86)\\Notepad++\\notepad++.exe",  // 记事本程序。注意,你的系统是否也是这个目录?
        "C:\\Users\\Administrator\\Desktop\\我的记事本.lnk");
    // 桌面上建立快捷方式(lnk)文件的全路径名。注意,你的系统是否也是这个目录?
    // 如果用程序实现寻找桌面的路径,则可以查注册表
    // HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值