精华内容
下载资源
问答
  • 2016-12-19 15:57:31

    首先需要获取三个路径 :桌面路径 、快速启动栏路径、 开始->程序组路径

    //得到当前桌面路径  
    BOOL GetDesktopPath(char *pszDesktopPath)  
    {  
    	LPITEMIDLIST  ppidl = NULL;   
    
    	if (SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &ppidl) == S_OK)  
    	{  
    		BOOL flag = SHGetPathFromIDList(ppidl, pszDesktopPath);  
    		CoTaskMemFree(ppidl);  
    		return flag;  
    	}  
    
    	return FALSE;  
    }     
    //得到快速启动栏的路径  
    BOOL GetIEQuickLaunchPath(char *pszIEQueickLaunchPath)  
    {     
    	LPITEMIDLIST  ppidl;              
    
    	if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK)  
    	{  
    		BOOL flag = SHGetPathFromIDList(ppidl, pszIEQueickLaunchPath);  
    		strcat(pszIEQueickLaunchPath, "\\Microsoft\\Internet Explorer\\Quick Launch");  
    		CoTaskMemFree(ppidl);  
    		return flag;  
    	}  
    
    	return FALSE;  
    }  
    //得到 开始->程序组 的路径  
    BOOL GetProgramsPath(char *pszProgramsPath)  
    {  
    	LPITEMIDLIST  ppidl;   
    
    	if (SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAMS, &ppidl) == S_OK)  
    	{  
    		BOOL flag = SHGetPathFromIDList(ppidl, pszProgramsPath);  
    		CoTaskMemFree(ppidl);  
    		return flag;  
    	}  
    
    	return FALSE;  
    }  
    这样返回的 pszProgramsPath就是指当前获取的路径


    程序的思路:得到路径,在当前路径下创建exe相对应的快捷方式,并通过ShellExecute函数来锁定到快速启动栏或开始菜单


    /* 
    函数功能:对指定文件在指定的目录下创建其快捷方式 
    函数参数: 
    lpszFileName    指定文件,为NULL表示当前进程的EXE文件。 
    lpszLnkFileDir  指定目录,不能为NULL。 
    lpszLnkFileName 快捷方式名称,为NULL表示EXE文件名。 
    wHotkey         为0表示不设置快捷键 
    pszDescription  备注 
    iShowCmd        运行方式,默认为常规窗口 
    */  
    BOOL CreateFileShortcut(LPCSTR lpszFileName, LPCSTR lpszLnkFileDir, LPCSTR lpszLnkFileName, LPCSTR lpszWorkDir, WORD wHotkey, LPCTSTR lpszDescription, int iShowCmd = SW_SHOWNORMAL)  
    {  
    	if (lpszLnkFileDir == NULL)  
    		return FALSE;  
    
    	HRESULT hr;  
    	IShellLink     *pLink;  //IShellLink对象指针  
    	IPersistFile   *ppf; //IPersisFil对象指针  
    
    	//创建IShellLink对象  
    	hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pLink);  
    	if (FAILED(hr))  
    		return FALSE;  
    
    	//从IShellLink对象中获取IPersistFile接口  
    	hr = pLink->QueryInterface(IID_IPersistFile, (void**)&ppf);  
    	if (FAILED(hr))  
    	{  
    		pLink->Release();  
    		return FALSE;  
    	}  
        //获取当前exe所在路径
    	TCHAR exeFullPath[MAX_PATH]; // MAX_PATH
    	GetModuleFileName(NULL,exeFullPath,MAX_PATH);
    	
    	//目标  
    	if (lpszFileName == NULL)  
    		pLink->SetPath(_pgmptr);  
    	else  
    		pLink->SetPath(exeFullPath); 
    
    	//工作目录  
    	if (lpszWorkDir != NULL)  
    		pLink->SetWorkingDirectory(lpszWorkDir);  
    
    	//快捷键  
    	if (wHotkey != 0)  
    		pLink->SetHotkey(wHotkey);  
    
    	//备注  
    	if (lpszDescription != NULL)  
    		pLink->SetDescription(lpszDescription);  
    
    	//显示方式  
    	pLink->SetShowCmd(iShowCmd);  
    
    	//快捷方式的路径 + 名称  
    	char szBuffer[MAX_PATH];  
    	if (lpszLnkFileName != NULL) //指定了快捷方式的名称  
    		sprintf(szBuffer, "%s\\%s", lpszLnkFileDir, lpszLnkFileName);  
    	else     
    	{  
    		//没有指定名称,就从取指定文件的文件名作为快捷方式名称。  
    		//char *pstr;  
    
    		char *buf = new char[strlen(lpszFileName)+1];
    		strcpy(buf, lpszFileName);  
    
    		if (buf == NULL)  
    		{     
    			ppf->Release();  
    			pLink->Release();  
    			return FALSE;  
    		}  
    		//注意后缀名要从.exe改为.lnk  
    		sprintf(szBuffer, "%s\\%s", lpszLnkFileDir, buf);  
    		int nLen = strlen(szBuffer);
    		//char lkName = ;
    		strcat(szBuffer, ".lnk");
    	}  
    	//保存快捷方式到指定目录下  
    	WCHAR  wsz[MAX_PATH];  //定义Unicode字符串  
    	MultiByteToWideChar(CP_ACP, 0, szBuffer, -1, wsz, MAX_PATH);  
    
    	hr = ppf->Save(wsz, TRUE);  
    
    	ppf->Release();  
    	pLink->Release();  
    	CoUninitialize(); //释放com接口
    	return SUCCEEDED(hr);  
    }  

    下面说一下调用 :


    char  szPath[MAX_PATH];  
    CoInitialize(NULL);  
    
    GetDesktopPath(szPath);
    //GetIEQuickLaunchPath(szPath);
    //GetProgramsPath(szPath);
    			
    if (!CreateFileShortcut(_T("QQMusicEx"), szPath, NULL, NULL, 0 , NULL)) 
    	return ;
    else
    {
    	//strcat(szPath,"\\QQMusicEx.lnk");
    	//ShellExecute(NULL,_T("TaskbarPin"), szPath, NULL, NULL, SW_SHOW); // 锁定程序到任务栏
    	//ShellExecute(NULL,_T("startpin"), szPath, NULL, NULL, SW_SHOW); // 锁定程序到开始菜单
    				//startpin
    }

    红色代表桌面快捷方式,下面的else注释掉 

    蓝色放开注释,else里面的strcat跟着一起放开

    紫色放开注释,else操作同上


    注意:1.  需要注意的是 在创建开解方式的时候需要添加头文件 

    #include <shlobj.h>
    
    #pragma comment(lib, "shell32.lib")


    2. TaskbarPin是锁定  Task barUnpin是解锁 

        startpin和startunpin是相对应的




    更多相关内容
  • 如何在开始菜单创建快捷方式

    千次阅读 2021-01-28 11:58:28
    伙伴们,我们新下载的软件,有时候会出现开始菜单没有快捷方式的问题,搜索框也搜不到,今天hby给大家带来一个开始菜单快捷方式...这个方法亲测有效,但是一般的软件是会在开始菜单创建快捷方式的。 记得点赞。 ...

    伙伴们,我们新下载的软件,有时候会出现开始菜单没有快捷方式的问题,搜索框也搜不到,今天hby给大家带来一个开始菜单快捷方式创建的方法。

    首先复制你要创建的快捷方式。
    然后在开始菜单随便找到一个软件,右键,更多,打开文件位置。在这里插入图片描述
    打开如下文件夹:在这里插入图片描述
    然后把复制的快捷方式粘贴到这个文件夹里,就会发现开始菜单有快捷方式啦!

    这个方法亲测有效,但是一般的软件是会在开始菜单创建快捷方式的。

    记得点赞。

    展开全文
  • 介绍了C++ 创建桌面快捷方式,开始菜单的实现代码,需要的朋友可以参考一下
  • 联想工程师专用小工具 开始菜单创建关机快捷方式工具V2.41.1联想工程师专用小工具 开始菜单创建关机快捷方式工具V2.41.1联想工程师专用小工具 开始菜单创建关机快捷方式工具V2.41.1联想工程师专用小工具 开始菜单...
  • 内容索引:VB源码,系统相关,菜单,快捷方式 vb一个小例子,让你程序的快捷方式出现Windows的开始菜单中,选择加入,则选择文件,将其快捷方式加入到Windows开始菜单->文档菜单中去,这个应该够实用吧,软件作者都...
  • 很多公司的软件安装包不再使用InstallShied、InnoSetup... 创建快捷方式的代码是通用的,不管是创建桌面快捷方式,还是创建开始菜单快捷方式,都要调用下面封装的接口CreateFileShortcut:(该接口中主要使用前两个...

    VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=M3K6https://blog.csdn.net/chenlycly/article/details/124272585       很多公司的软件安装包不再使用InstallShied、InnoSetup等打包工具,他们自己编写代码去制作安装包,这样就能灵活地控制打包的流程、实现酷炫的UI界面。自制安装包的一个重要的一项就是创建桌面和开始菜单的快捷方式,这其中可能会产生一些bug,我们都遇到过,在此将这块的内容分享给大家。

    展开全文
  • Delphi创建Windows开始菜单程序组快捷方式,就像是程序安装完毕后,在开始菜单中生成快捷方式的功能,本程序以Winform窗口的方式让用户自定义各项菜单,最终生成菜单组。
  • c#通过纯代码创建桌面快捷方式创建程序菜单项、将网页添加到收藏夹
  • Delphi创建快捷方式到“开始菜单中,这是许多软件最终需要实现的一个功能,把自己的程序快捷方式添加到Windows的开始菜单程序组中,用户通过程序组中的快捷方式可打开软件,生成安装程序时,本功能应该嵌入到...
  • c#通过纯代码创建桌面快捷方式创建程序菜单项、将网页添加到收藏夹
  • vc创建开始菜单、桌面快捷方式

    热门讨论 2011-10-16 09:18:05
    vc创建开始菜单、桌面快捷方式,winxp,win2k3下测试通过。
  • 摘要:Delphi源码,其它类别,快捷方式 桌面创建快捷方式,学习创建一个程序的快捷方式,快捷方式的初始化等知识,如本例示,本程序将桌面及开始菜单创建一个名为“常州拨云通讯人事管理系统 V1.0”的快捷方式,...
  • VC++为你的应用程序创建和删除快捷方式,添加开始菜单程序组菜单,这里首先利用OLE通过调用CoCreateInstance()函数建立一个IID_IShellLink实例,并同时得到其接口指针。利用这个接口指针可以对其各项属性进行设置。...
  • 摘要:VB源码,系统相关,收藏夹,快捷方式 VB创建网页快捷方式,程序可以把网页快捷方式添加到桌面、添加到收藏夹、添加到开始菜单。程序根据指定的文件夹获得程序的文件名,从窗体程序文件列表中获取程序文件的具体...
  • 快捷方式可以方便我们的操作,节省我们去寻找软件的时间,开始菜单内也是可以直接添加快捷方式的,那要怎么最新的Win11系统中添加呢,很多用户还不知道,下面教给大家操作方法,希望大家看完都能学会。更多win11...

    快捷方式可以方便我们的操作,节省我们去寻找软件的时间,开始菜单内也是可以直接添加快捷方式的,那要怎么在最新的Win11系统中添加呢,很多用户还不知道,下面教给大家操作方法,希望大家看完都能学会。更多win11系统教程可以参考小白一键网。

    方法一:添加应用图标

    打开开始菜单,点击右上角【所有应用】。

    Win11开始菜单添加快捷方式操作方法

    打开开始菜单,点击右上角【所有应用】。

    Win11开始菜单添加快捷方式操作方法

    进入应用列表中,右键点击”应用“,在弹出的菜单中点击【固定到”开始“屏幕】,即可将应用快捷方式添加到开始菜单。

    Win11开始菜单添加快捷方式操作方法

    方法二:添加常用文件夹

    打开开始菜单,点击【设置】,打开win11设置界面。

    Win11开始菜单添加快捷方式操作方法

    进入个性化界面,点击【开始】选项。

    Win11开始菜单添加快捷方式操作方法

    点击【文件夹】选项。

    Win11开始菜单添加快捷方式操作方法

    选择要添加的文件夹,打开右侧的开关即可。

    Win11开始菜单添加快捷方式操作方法

    还没有受到微软推送的升级通知,看这里,在线安装Windows11,无需顾虑微软推送的升级限制

     

    展开全文
  • c++实现添加菜单,桌面快捷方式 c++实现添加菜单,桌面快捷方式
  • 4、不勾选“创建位置”的方式下,默认创建快捷方式到拖放文件的安装目录;。5、“重命软件”栏如果保持“默认”或者为空,则创建同拖放文件相同文件名的快捷方式;。6、软件智能识别文件和文件夹,创建对应快捷...
  • 提供快速创建桌面快捷方式开始菜单快捷方式、收藏夹快捷方式等源代码。
  • 使用delphi7创建桌面和开始菜单快捷方式程序代码,包括源文件和txt文本说明

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,226
精华内容 28,890
关键字:

怎么在开始菜单创建快捷方式