现在的位置: 首页 > 综合 > 正文

给当前应用程序创建在“启动”目录下的快捷方式

2013年11月16日 ⁄ 综合 ⁄ 共 2566字 ⁄ 字号 评论关闭

//=========================================================================//
//    功  能:给当前应用程序创建快捷方式                                   //
//    参  数: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);

抱歉!评论已关闭.