title: 添加一个快捷方式
author: Love02xp
date: 2018-08-02 07:23:22
category: [编程代码]
tags: [VC6,编程]
draft: false
cover:
preview:
##### [阅读原文]()
HRESULT CreateLink(LPCSTR lpszPathObj,
LPCSTR lpszPathLink, LPCSTR lpszDesc)
{
HRESULT hres;
IShellLink* psl;
// Get a pointer to the IShellLink interface.
hres = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl);
if (SUCCEEDED(hres)) {
IPersistFile* ppf;
// Set the path to the shortcut target and add the
// description.
psl-> SetPath(lpszPathObj);
psl-> SetDescription(lpszDesc);
// Query IShellLink for the IPersistFile interface for saving the
// shortcut in persistent storage.
hres = psl-> QueryInterface(&IID_IPersistFile,
(LPVOID*)&ppf);
if (SUCCEEDED(hres)) {
WCHAR wsz[MAX_PATH];
// Ensure that the string is Unicode.
MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1,
wsz, MAX_PATH);
// Save the link by calling IPersistFile::Save.
hres = ppf-> Save(wsz, TRUE);
ppf-> Release();
}
psl-> Release();
}
return hres;
}
<!--more-->
=========================================================
// CreateLink - uses the Shell 's IShellLink and IPersistFile interfaces
// to create and store a shortcut to the specified object.
// Returns the result of calling the member functions of the interfaces.
// lpszPathObj - address of a buffer containing the path of the object.
// lpszPathLink - address of a buffer containing the path where the
// Shell link is to be stored.
// lpszDesc - address of a buffer containing the description of the
// Shell link.
HRESULT CreateLink(LPCSTR lpszPathObj,
LPCSTR lpszPathLink, LPCSTR lpszDesc)
{
HRESULT hres;
IShellLink* psl;
// Get a pointer to the IShellLink interface.
hres = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl);
if (SUCCEEDED(hres)) {
IPersistFile* ppf;
// Set the path to the shortcut target and add the
// description.
psl-> SetPath(lpszPathObj);
psl-> SetDescription(lpszDesc);
// Query IShellLink for the IPersistFile interface for saving the
// shortcut in persistent storage.
hres = psl-> QueryInterface(&IID_IPersistFile,
(LPVOID*)&ppf);
if (SUCCEEDED(hres)) {
WCHAR wsz[MAX_PATH];
// Ensure that the string is Unicode.
MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1,
wsz, MAX_PATH);
// Save the link by calling IPersistFile::Save.
hres = ppf-> Save(wsz, TRUE);
ppf-> Release();
}
psl-> Release();
}
return hres;
}