欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ 創(chuàng)建桌面快捷方式 開始菜單的實現(xiàn)代碼

 更新時間:2013年06月30日 15:39:50   作者:  
這篇文章介紹了C++ 創(chuàng)建桌面快捷方式,開始菜單的實現(xiàn)代碼,需要的朋友可以參考一下

復(fù)制代碼 代碼如下:

void CInstall_ProgressDlg::CreateShortCut(CString csLinkPath, CString csExePath, CString csIconPath)
{
    HRESULT hres;
    hres = ::CoInitialize(NULL);
    if(S_OK == hres)
    {
        //delete old link
        CFileFind cfind;
        if(cfind.FindFile(csLinkPath)){
            CFile::Remove(csLinkPath);
        }

        IShellLink * pShellLink ;
        hres = ::CoCreateInstance( CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER, IID_IShellLink,(void **)&pShellLink);
        if( SUCCEEDED( hres))
        {
            pShellLink -> SetPath(csExePath);
            if(PathFileExists(csIconPath))
                pShellLink -> SetIconLocation(csIconPath, 0);
            pShellLink -> SetHotkey( MAKEWORD( 'R', HOTKEYF_SHIFT | HOTKEYF_CONTROL));
            CString csWorkingDir;
            csWorkingDir = csExePath.Left(2);
            csWorkingDir.Append(FILE_SEPARATOR);
            TRACE_CS(csWorkingDir);
            pShellLink -> SetWorkingDirectory(csWorkingDir);

            IPersistFile *pPersistFile;
            hres = pShellLink -> QueryInterface( IID_IPersistFile, (void **)&pPersistFile) ;
            if( SUCCEEDED(hres))
            {
                hres = pPersistFile -> Save(csLinkPath, TRUE);
                pPersistFile -> Release();
            }
            pShellLink -> Release();
        }
        ::CoUninitialize();
    }   
}   

復(fù)制代碼 代碼如下:

void CInstall_ProgressDlg::CreateStartMenu()
{
    TCHAR chStartupFolder[MAX_PATH];
    /*
    *parm1: hwnd
    *parm2: path buffer
    *parm3: CSIDL_PROGRAMS 0x0002  / Start Menu\Programs
    *parm4: true:if file !exist to create, false:not create
    */
    SHGetSpecialFolderPath(this->GetSafeHwnd(), chStartupFolder,CSIDL_PROGRAMS,FALSE);
    CString csStartupFolder = chStartupFolder;
    csStartupFolder.Append(FILE_SEPARATOR);
    csStartupFolder.Append(FOLDER_APP_NAME);
    if(!PathFileExists(csStartupFolder)){
        g_InstallHelper.CreateInstallFolder(csStartupFolder);
    }

    CString csInstallPath;
    csInstallPath = g_InstallInfo.chInstallPath;

    CString csEXEFilePath;
    csEXEFilePath = csInstallPath;
    csEXEFilePath.Append(FILE_SEPARATOR);
    csEXEFilePath.Append(FILE_APP_NAME);
    CString csUnExeFilePath;
    csUnExeFilePath = csInstallPath;
    csUnExeFilePath.Append(FILE_SEPARATOR);
    csUnExeFilePath.Append(FILE_UNINSTALL_NAME);
    CString csLinkFileName = csStartupFolder;
    csLinkFileName.Append(FILE_SEPARATOR);
    csLinkFileName.Append(LINK_NAME);
    csLinkFileName.Append(LINK_EXT);
    CString csUnlinkFileName = csStartupFolder;
    csUnlinkFileName.Append(FILE_SEPARATOR);
    csUnlinkFileName.Append(LINK_UNINSTALL_NAME);
    csUnlinkFileName.Append(LINK_EXT);

    //get icon path
    CString csExeIconPath;
    csExeIconPath = csInstallPath;
    csExeIconPath.Append(FILE_SEPARATOR);
    csExeIconPath.Append(ICON_APP_EXE_NAME);
    CString csUnExeIconPath;
    csUnExeIconPath = csInstallPath;
    csUnExeIconPath.Append(FILE_SEPARATOR);
    csUnExeIconPath.Append(ICON_UNINSTALL_EXE_NAME);

    TRACE_CS(csLinkFileName);
    TRACE_CS(csEXEFilePath);
    TRACE_CS(csExeIconPath);
    TRACE_CS(csUnlinkFileName);
    TRACE_CS(csUnExeFilePath);
    TRACE_CS(csUnExeIconPath);
    CreateShortCut(csLinkFileName, csEXEFilePath, csExeIconPath);
    CreateShortCut(csUnlinkFileName, csUnExeFilePath, csUnExeIconPath);
}

相關(guān)文章

  • VC定制個性化的MessageBox解決方法

    VC定制個性化的MessageBox解決方法

    這篇文章主要介紹了VC定制個性化的MessageBox解決方法,有助于進一步的了解windows應(yīng)用程序的消息機制及運行原理,需要的朋友可以參考下
    2014-07-07
  • C++實現(xiàn)單鏈表按k值重新排序的方法

    C++實現(xiàn)單鏈表按k值重新排序的方法

    這篇文章主要介紹了C++實現(xiàn)單鏈表按k值重新排序的方法,結(jié)合實例形式分析了C++單鏈表中按照給定值進行判斷與排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • CreateThread()與beginthread()的區(qū)別詳細解析

    CreateThread()與beginthread()的區(qū)別詳細解析

    很多開發(fā)者不清楚這兩者之間的關(guān)系,他們隨意選一個函數(shù)來用,發(fā)現(xiàn)也沒有什么大問題,于是就忙于解決更為緊迫的任務(wù)去了。等到有一天忽然發(fā)現(xiàn)一個程序運行時間很長的時候會有細微的內(nèi)存泄露,開發(fā)者絕對不會想到是因為這兩套函數(shù)用混的結(jié)果
    2013-09-09
  • 深入解析Linux下\r\n的問題

    深入解析Linux下\r\n的問題

    本篇文章是對Linux下\r\n的問題進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 標(biāo)準(zhǔn)C++類string的Copy-On-Write技術(shù)

    標(biāo)準(zhǔn)C++類string的Copy-On-Write技術(shù)

    這里,我想從C++類或是設(shè)計模式的角度為各位揭開Copy-On-Write技術(shù)在string中實現(xiàn)的面紗,以供各位在用C++進行類庫設(shè)計時做一點參考
    2013-11-11
  • C++中的map使用方法詳解

    C++中的map使用方法詳解

    C++中的map是一種關(guān)聯(lián)容器,用于存儲鍵值對。它提供了一種非常高效的方法來快速查找特定的值,并且允許我們根據(jù)鍵來排序和遍歷數(shù)據(jù)。在本文中,我們將深入了解C++中的map以及如何使用它來提高程序的效率,感興趣的朋友可以參考下
    2023-05-05
  • C++ Boost命令行解析庫的應(yīng)用詳解

    C++ Boost命令行解析庫的應(yīng)用詳解

    命令行解析庫是一種用于簡化處理命令行參數(shù)的工具,它可以幫助開發(fā)者更方便地解析命令行參數(shù)并提供適當(dāng)?shù)膸椭畔?本文主要介紹了不同的命令行解析庫和它們在C++項目中的應(yīng)用,希望對大家有所幫助
    2023-11-11
  • c++的virtual和override作用及說明

    c++的virtual和override作用及說明

    這篇文章主要介紹了c++的virtual和override作用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • opencv 做人臉識別 opencv 人臉匹配分析

    opencv 做人臉識別 opencv 人臉匹配分析

    opencv 人臉識別通過級聯(lián)分類器對特征的分級篩選來確定是否是人臉,每個節(jié)點的正確識別率很高,但正確拒絕率很低,任一節(jié)點判斷沒有人臉特征則結(jié)束運算,宣布不是人臉
    2012-11-11
  • C++實現(xiàn)推箱子功能附加回撤示例

    C++實現(xiàn)推箱子功能附加回撤示例

    本文主要介紹了C++實現(xiàn)推箱子功能附加回撤示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論