创建快捷方式

 1 void CInstall_ProgressDlg::CreateShortCut(CString csLinkPath, CString csExePath, CString csIconPath)
 2 {
 3     HRESULT hres;
 4     hres = ::CoInitialize(NULL);
 5     if(S_OK == hres)
 6     {
 7         //delete old link
 8         CFileFind cfind;
 9         if(cfind.FindFile(csLinkPath)){
10             CFile::Remove(csLinkPath);
11         }
12         IShellLink * pShellLink ;
13         hres = ::CoCreateInstance( CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER, IID_IShellLink,(void **)&pShellLink);
14         if( SUCCEEDED( hres))
15         {
16             pShellLink -> SetPath(csExePath);
17             if(PathFileExists(csIconPath))
18                 pShellLink -> SetIconLocation(csIconPath, 0); 
19             pShellLink -> SetHotkey( MAKEWORD( 'R', HOTKEYF_SHIFT | HOTKEYF_CONTROL));
20             CString csWorkingDir;
21             csWorkingDir = csExePath.Left(2);
22             csWorkingDir.Append(FILE_SEPARATOR);
23             TRACE_CS(csWorkingDir);
24             pShellLink -> SetWorkingDirectory(csWorkingDir);
25             IPersistFile *pPersistFile;
26             hres = pShellLink -> QueryInterface( IID_IPersistFile, (void **)&pPersistFile) ;
27             if( SUCCEEDED(hres))
28             {
29                 hres = pPersistFile -> Save(csLinkPath, TRUE);
30                 pPersistFile -> Release();
31             }
32             pShellLink -> Release();
33         }
34         ::CoUninitialize();
35     }    
36 } 
View Code
 1 void CInstall_ProgressDlg::CreateStartMenu()
 2 {
 3     TCHAR chStartupFolder[MAX_PATH];
 4     /*
 5     *parm1: hwnd
 6     *parm2: path buffer
 7     *parm3: CSIDL_PROGRAMS 0x0002  / Start MenuPrograms
 8     *parm4: true:if file !exist to create, false:not create
 9     */
10     SHGetSpecialFolderPath(this->GetSafeHwnd(), chStartupFolder,CSIDL_PROGRAMS,FALSE);
11     CString csStartupFolder = chStartupFolder;
12     csStartupFolder.Append(FILE_SEPARATOR);
13     csStartupFolder.Append(FOLDER_APP_NAME);
14     if(!PathFileExists(csStartupFolder)){
15         g_InstallHelper.CreateInstallFolder(csStartupFolder);
16     }
17     CString csInstallPath;
18     csInstallPath = g_InstallInfo.chInstallPath;
19     CString csEXEFilePath;
20     csEXEFilePath = csInstallPath;
21     csEXEFilePath.Append(FILE_SEPARATOR);
22     csEXEFilePath.Append(FILE_APP_NAME);
23     CString csUnExeFilePath;
24     csUnExeFilePath = csInstallPath;
25     csUnExeFilePath.Append(FILE_SEPARATOR);
26     csUnExeFilePath.Append(FILE_UNINSTALL_NAME);
27     CString csLinkFileName = csStartupFolder;
28     csLinkFileName.Append(FILE_SEPARATOR);
29     csLinkFileName.Append(LINK_NAME);
30     csLinkFileName.Append(LINK_EXT);
31     CString csUnlinkFileName = csStartupFolder;
32     csUnlinkFileName.Append(FILE_SEPARATOR);
33     csUnlinkFileName.Append(LINK_UNINSTALL_NAME);
34     csUnlinkFileName.Append(LINK_EXT);
35     //get icon path
36     CString csExeIconPath;
37     csExeIconPath = csInstallPath;
38     csExeIconPath.Append(FILE_SEPARATOR);
39     csExeIconPath.Append(ICON_APP_EXE_NAME);
40     CString csUnExeIconPath;
41     csUnExeIconPath = csInstallPath;
42     csUnExeIconPath.Append(FILE_SEPARATOR);
43     csUnExeIconPath.Append(ICON_UNINSTALL_EXE_NAME);
44     TRACE_CS(csLinkFileName);
45     TRACE_CS(csEXEFilePath);
46     TRACE_CS(csExeIconPath);
47     TRACE_CS(csUnlinkFileName);
48     TRACE_CS(csUnExeFilePath);
49     TRACE_CS(csUnExeIconPath);
50     CreateShortCut(csLinkFileName, csEXEFilePath, csExeIconPath);
51     CreateShortCut(csUnlinkFileName, csUnExeFilePath, csUnExeIconPath);
52 }
View Code
原文地址:https://www.cnblogs.com/guozht/p/9645189.html