//=========================================================================//
// 功 能:给当前应用程序创建快捷方式 //
// 参 数:sExePath,当前应用程序的绝对路径 //
// sSavePath,要创建快捷方式的绝对路径 //
// 返回值:无 //
// 备 注:无 //
//=========================================================================//
void CreateShotCut(CString sExePath,CString sSavePath)
{
HRESULT hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
IShellLink *pisl;
hr = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pisl);
if (SUCCEEDED(hr))
{
IPersistFile* pIPF;
//要创建快捷方式的原文件地址
pisl->SetPath(sExePath);//L"c://windows//notepad.exe");
hr = pisl->QueryInterface(IID_IPersistFile, (void**)&pIPF);
if (SUCCEEDED(hr))
{
//要创建快捷方式的目标地址
pIPF->Save(sSavePath,FALSE);
pIPF->Release();
}
pisl->Release();
}
CoUninitialize();
}
}
//=========================================================================//
// 功 能:给当前应用程序创建在“启动”目录下的快捷方式 //
// 参 数:无 //
// 返回值:无 //
// 备 注:无 //
//=========================================================================//
void CreateAutoStartLnk()
{
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
CString sPath;
sPath=exeFullPath;
int nPos=sPath.ReverseFind ('//');
int lPos=sPath.ReverseFind('.');
CString oldpath=sPath;
sPath=oldpath.Left (nPos+1);
CString sExeName=oldpath.Mid(nPos+1,lPos-(nPos+1));
CString sExeNameJT=_T("C://Documents and Settings//All Users//「开始」菜单//程序//启动");
CString sExeNameFT=_T("C://Documents and Settings//All Users//「開始」功能表//程式集//啟動");
CString sExeNameYY=_T("C://Documents and Settings//All Users//Start Menu//Programs//Startup");
WIN32_FIND_DATA FindFileData;
if(FindFirstFile(sExeNameJT,&FindFileData) != INVALID_HANDLE_VALUE)
sExeName=sExeNameJT+_T("//")+sExeName+_T(".lnk");
if(FindFirstFile(sExeNameFT,&FindFileData) != INVALID_HANDLE_VALUE)
sExeName=sExeNameFT+_T("//")+sExeName+_T(".lnk");
if(FindFirstFile(sExeNameYY,&FindFileData) != INVALID_HANDLE_VALUE)
sExeName=sExeNameYY+_T("//")+sExeName+_T(".lnk");
CreateShotCut(oldpath,sExeName);
}