VC 创建快捷方式和得到桌面路径

 需要先调用 CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
 使用CoUninitialize() 释放资源

 

//注意lpLink 必须以.lnk为扩展名

//如:CeateShortcut(GetDesktopPath()  + L"//QQ.lnk",  L"C://Tencent//QQ//QQ.exe", L"C://Tencent//QQ//QQ.ico", 0);

//

#include <Windows.h>

#include <Objbase.h>
#include <atlbase.h>

#include <shlobj.h>
#include <atlcoll.h>

BOOL CreateShortcut(LPCWSTR lpLink, LPCWSTR lpPath, LPCWSTR lpIconPath, int nIconIndex)
{
 CComQIPtr<IShellLink> pSL;
 pSL.CoCreateInstance(CLSID_ShellLink);
 if (!pSL)
  return FALSE;

 

 HRESULT hr = pSL->SetPath(lpPath);
 if (FAILED(hr))
  return FALSE;

 

 if (lpIconPath != NULL)
 {
  hr = pSL->SetIconLocation(lpIconPath, nIconIndex);
  if (FAILED(hr))
   return FALSE;
 }

 

 CComQIPtr<IPersistFile> pPF = pSL;
 if (!pPF)
  return FALSE;

 

 hr = pPF->Save(lpLink, STGM_READWRITE);
 if (FAILED(hr))
  return FALSE;

 

 return TRUE;

}

 

//得到桌面的物理路径

//

#include <windows.h>

#include <string>

#include <tchar.h>

using namespace std;

 

wstring GetDesktopPath()
{
 wstring strPath;
 WCHAR szPath[MAX_PATH + 1];

 ::ZeroMemory(szPath, sizeof(szPath));

 

 if (::SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, FALSE))
  strPath = szPath;

 

 return strPath;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值