创建文件快捷方式

【勇芳软件工作室】汉化HomePreviousNext

以下示例中的CreateLink功能创建快捷方式。参数包括指向要链接的文件的名称的指针,指向要创建的快捷方式的名称的指针,以及指向链接描述的指针。描述由字符串“【文件名】的快捷方式”组成,其中【文件名】是要链接的文件的名称。

因为CreateLink调用CoCreateInstance函数,所以假设已经调用了CoInitialize函数。CreateLink使用IPersistFile界面保存快捷方式和IShellLink界面来存储文件名和描述。

// CreateLink - 使用shell的IShellLink和IPersistFile接口

//创建并存储指定对象的快捷方式。

//返回调用接口成员函数的结果。

// lpszPathObj - 包含对象路径的缓冲区的地址

// lpszPathLink - 包含路径的缓冲区的地址

// shell链接被存储

// lpszDesc - 包含描述的缓冲区的地址

// Set the path to the shortcut target, and add the

HRESULT CreateLink(LPCSTR lpszPathObj,

LPSTR lpszPathLink,LPSTR lpszDesc)

{

HRESULT hres;

IShellLink* psl;

//获取指向IShellLink界面的指针。

hres = CoCreateInstance(&CLSID_ShellLink, NULL,

CLSCTX_INPROC_SERVER, &IID_IShellLink, &psl);

if(SUCCEEDED(hres)){

IPersistFile* ppf;

//设置快捷目标的路径,并添加

// description。

psl->lpVtbl->SetPath(psl, lpszPathObj);

psl->lpVtbl->SetDescription(psl, lpszDesc);

//查询用于保存IPersistFile界面的IShellLink

//持久存储中的快捷方式。

hres = psl->lpVtbl->QueryInterface(psl, &IID_IPersistFile,

&ppf);

if(SUCCEEDED(hres)){

WORD wsz[MAX_PATH];

//确保字符串为ANSI。

MultiByteToWideChar(CP_ACP,0,lpszPathLink,-1,

wsz, MAX_PATH);

//通过调用IPersistFile :: Save保存链接。

hres = ppf->lpVtbl->Save(ppf, wsz, TRUE);

ppf->lpVtbl->Release(ppf);

}

psl->lpVtbl->Release(psl);

}

return hres;

}