VC MFC 创建桌面快捷方式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC MFC 创建桌面快捷方式

2010-06-30 15:12

BOOL CreateDesktopShotCut( CString strName, CString strSourcePath ) {

if(FAILED(CoInitialize(NULL)))

{

return FALSE;

}

int i;

char Path[MAX_PA TH+1];

CString strDestDir;

i=CSIDL_DESKTOPDIRECTORY;

LPITEMIDLIST pidl;

LPMALLOC pShell;

if(SUCCEEDED(SHGetMalloc(&pShell)))

{

if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,i,&pidl)))

{

if(!SHGetPathFromIDList(pidl,Path))

{

pShell->Free(pidl);

::CoUninitialize();

return FALSE;

}

pShell->Release();

strDestDir.Format("%s",Path);

strDestDir+="\\";

strDestDir+=strName;//设置桌面快捷方式的名字

strDestDir+=".lnk";

IShellLink* psl;

if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_ IShellLink,(LPVOID*)&psl)))

{

psl->SetPath(strSourcePath);//设置快捷方式的目标位置

//比如目标位置为C:\windows\a.txt 起始位置就应该设置为C:\windows否则会导致不可预料的错误

//如果是文件夹的快捷方式起始位置和目标位置可以设置为一样

psl->SetWorkingDirectory(strSourcePath); //设置快捷方式的起始位置

IPersistFile* ppf;

if(SUCCEEDED(psl->QueryInterface(IID_IPersistFile,(LPVOID*)&ppf)))

{

WCHAR wsz[MAX_PA TH];

MultiByteToWideChar(CP_THREAD_ACP,MB_PRECOMPOSED,strDestDir,-1,wsz,MAX_PA T

H);//设置桌面快捷方式的名字

if(SUCCEEDED(ppf->Save(wsz,TRUE)))//保存快捷方式到桌面

{

ppf->Release();

psl->Release();

::CoUninitialize();

return TRUE;

}else

{

ppf->Release();

psl->Release();

::CoUninitialize();

return FALSE;

}

}else

{

ppf->Release();

psl->Release();

::CoUninitialize();

return FALSE;

}

}else

{

::CoUninitialize();

return FALSE;

}

}else

{

::CoUninitialize();

return FALSE;

}

}else

{

::CoUninitialize();

return FALSE;

}

}

相关文档
最新文档