zoukankan      html  css  js  c++  java
  • IShellLink应用(创建快捷方式)

    VC操作Windows快捷方式(自己总结)
    二个操作:新建和解析
    主要用到的是COM组件。IShellLink和IPersistFile
    需要添加的头函数
    shobjidl.h
    IPersistFile主要用到两个成员函数:
    1、Save。保存内容到文件中去
    2、Load。读取
     Load的函数原型
     HRESULT Load(
       LPCOLSTR pszFileName, //快捷方式的文件名,应该是ANSI字符
       DWORD dwMode //读取方式
      );
     dwMode可取如下值:
     STGM_READ:只读
           STGM_WRITE:只写
           STGM_READWRITE:读写
    IShellLink主要成员:
    1、GetArguments:获得参数信息
    2、GetDescription:获得描述信息(备注行)
    3、GetHotkey:获得快捷键
    4、GetIconLocation:获得图标 
    5、GetIDList:获得快捷方式的目标对象的item identifier list (Windows外壳中的每个对象如文件,目录和打印机等都有唯一的item identifiler list)
    6、GetPath: 获得快捷方式的目标文件或目录的全路径
    7、GetShowCmd:获得快捷方式的运行方式,比如常规窗口,最大化
    8、GetWorkingDirectory:获得工作目录
    9、Resolve:按照一定的搜索规则试图获得目标对象,即使目标对象已经被删除或移动,重命名
     下面是对应信息的设置方法
    10、SetArguments
    11、SetDescription
    12、SetHotkey
    13、SetIconLocation
    14、SetIDList
    15、SetPath
    16、SetRelativePat
    17、SetShowCmd
    18、SetWorkingDirectory
    一般情况操作如下:
    一、初始化COM接口
    二、创建IShellLink对象
    三、从IShellLink对象中获取IPersistFile对象接口
    四、操作IShellLink对象
    五、释放IPersistFile对象接口
    六、释放IShellLink对象
    七、释放COM接口
    示例代码:
    /*
    注:在桌面上创建快捷方式,快捷方式的名称为"VC创建的快捷方式",快捷方式指向应用程序"c:aa.exe"
    快捷方式的快捷键:无
    快捷方式的工作目录:c:
    快捷方式的备注:VC写写捷方式
    快捷方式的运行方式:常规窗口
    */
    HRESULT hRet;
    IShellLink *pLink;  //IShellLink对象指针
    IPersistFile * ppf; //IPersisFil对象指针
    WCHAR wsz[MAX_PATH];  //定义Unicode字符串
    //初始化COM库
    hRet = ::CoInitialize(NULL);
    if ( hRet != S_OK)  //初始化COM库失败,直接返回
    {
       AfxMessageBox("初始化COM库失败");
       return;
    }
    //创建IShellLink实例
    hRet = ::CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(void**)&pLink);
    if ( hRet != S_ok)
    {
     AfxMessageBox("创建IShellLink实例失败");
    }
    else
    {
     //创建IShellLink实例成功,继续操作
     
     //从IShellLink对象中获取IPersistFile接口
     hRet = pLink->QueryInterface(IID_IpersistFile,(void**)&ppf);
     if ( hRet != S_OK)
     {
      AfxMessageBox("获取IPersistFile接口失败");
     }
     else
     {
      //获取接口成功,继续操作
      //设置快捷方式中的程序路径
      pLink->SetPath("c:\aa.exe");
      //设置快捷方式的工作目录
      pLink->SetWorkingDirectory("c:\");
      //确保快捷方式路径由ANSI字符串组成
      MultiByteToWideChar(
       CP_ACP,
       0,
       "C:\Documents and Settings\hjs\桌面\vc创建的快捷方式.lnk",
       -1,
       wsz,
       MAX_PATH
      );
      //保存快捷方式
      ppf->Save(wsz,TRUE);
     }
    }
    //释放IPersistFile接口
    ppf->Release();
    //释放IShellLink对象
    pLink->Release();
    //释放COM接口
    ::CoUninitialize();
    //注:网上找到其他资料见楼下
  • 相关阅读:
    v-for列表指令
    v-show 指令
    v-else-if 条件语句
    v-else条件语句
    v-if 条件语句
    2020 WPF界面开发新风向:DevExpress WPF支持.NET Core设计时
    轻松进行WPF界面开发,DevExpress WPF Gantt
    Winforms界面使用技巧:Kanban Board增强功能
    2020 WPF界面开发新风向:DevExpress WPF支持.NET Core设计时
    轻松进行WPF界面开发,Data Grid & TreeList
  • 原文地址:https://www.cnblogs.com/For-her/p/3365533.html
Copyright © 2011-2022 走看看