c语言创建快捷方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言创建快捷方式相关的知识,希望对你有一定的参考价值。
在windows下用c语言创建快捷方式
1、将C语言编辑器装在哪个文件夹下,找到那儿,应该有个比较鲜艳的图标,选中它后点右键,创建快捷方式,应该就可以了,如果找不到,那就到控制面板里面去将它卸载后重新安装的时候将它的安装路径记下来,就可以找到那儿创建快捷方式了
2、例程:
#include <windows.h>
/* C run time library headers */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* COM headers (requires shell32.lib, ole32.lib, uuid.lib) */
#include <objbase.h>
#include <shlobj.h>
static HRESULT CreateShortCut(LPSTR pszTargetfile, LPSTR pszTargetargs,
LPSTR pszLinkfile, LPSTR pszDescription,
int iShowmode, LPSTR pszCurdir,
LPSTR pszIconfile, int iIconindex)
HRESULT hRes; /* Returned COM result code */
IShellLink* pShellLink; /* IShellLink object pointer */
IPersistFile* pPersistFile; /* IPersistFile object pointer */
WORD wszLinkfile[MAX_PATH]; /* pszLinkfile as Unicode string */
int iWideCharsWritten; /* Number of wide characters written */
hRes = E_INVALIDARG;
if (
(pszTargetfile != NULL) && (strlen(pszTargetfile) > 0) &&
(pszTargetargs != NULL) &&
(pszLinkfile != NULL) && (strlen(pszLinkfile) > 0) &&
(pszDescription != NULL) &&
(iShowmode >= 0) &&
(pszCurdir != NULL) &&
(pszIconfile != NULL) &&
(iIconindex >= 0)
)
hRes = CoCreateInstance(&CLSID_ShellLink, /* pre-defined CLSID of the IShellLink object */
NULL, /* pointer to parent interface if part of aggregate */
CLSCTX_INPROC_SERVER, /* caller and called code are in same process */
&IID_IShellLink, /* pre-defined interface of the IShellLink object */
&pShellLink); /* Returns a pointer to the IShellLink object */
if (SUCCEEDED(hRes))
/* Set the fields in the IShellLink object */
hRes = pShellLink->lpVtbl->SetPath(pShellLink, pszTargetfile);
hRes = pShellLink->lpVtbl->SetArguments(pShellLink, pszTargetargs);
if (strlen(pszDescription) > 0)
hRes = pShellLink->lpVtbl->SetDescription(pShellLink, pszDescription);
if (iShowmode > 0)
hRes = pShellLink->lpVtbl->SetShowCmd(pShellLink, iShowmode);
if (strlen(pszCurdir) > 0)
hRes = pShellLink->lpVtbl->SetWorkingDirectory(pShellLink, pszCurdir);
if (strlen(pszIconfile) > 0 && iIconindex >= 0)
hRes = pShellLink->lpVtbl->SetIconLocation(pShellLink, pszIconfile, iIconindex);
/* Use the IPersistFile object to save the shell link */
hRes = pShellLink->lpVtbl->QueryInterface(pShellLink, /* existing IShellLink object */
&IID_IPersistFile, /* pre-defined interface of the IPersistFile object */
&pPersistFile); /* returns a pointer to the IPersistFile object */
if (SUCCEEDED(hRes))
iWideCharsWritten = MultiByteToWideChar(CP_ACP, 0, pszLinkfile, -1, wszLinkfile, MAX_PATH);
hRes = pPersistFile->lpVtbl->Save(pPersistFile, wszLinkfile, TRUE);
pPersistFile->lpVtbl->Release(pPersistFile);
pShellLink->lpVtbl->Release(pShellLink);
return (hRes);
int main(int n, char **argv)
HRESULT hRes; /* result of calling COM functions */
hRes = CoInitialize(NULL);
if (SUCCEEDED(hRes))
hRes = CreateShortCut(argv[0],
"", /* Target arguments */
"E:\\\\sam.lnk", /* Short-cut filename */
"Samurai 2", /* Short-cut description */
SW_SHOW, /* Showmode constant */
"", /* Working directory for linked file */
"", /* Icon file shown for the link */
0); /* Index of icon in the file */
/* call CoUninitialize() and exit the program. */
CoUninitialize();
return 0;
参考技术A #define STRICT
#include <windows.h>
/* C run time library headers */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* COM headers (requires shell32.lib, ole32.lib, uuid.lib) */
#include <objbase.h>
#include <shlobj.h>
static HRESULT CreateShortCut(LPSTR pszTargetfile, LPSTR pszTargetargs,
LPSTR pszLinkfile, LPSTR pszDescription,
int iShowmode, LPSTR pszCurdir,
LPSTR pszIconfile, int iIconindex)
HRESULT hRes; /* Returned COM result code */
IShellLink* pShellLink; /* IShellLink object pointer */
IPersistFile* pPersistFile; /* IPersistFile object pointer */
WORD wszLinkfile[MAX_PATH]; /* pszLinkfile as Unicode string */
int iWideCharsWritten; /* Number of wide characters written */
hRes = E_INVALIDARG;
if (
(pszTargetfile != NULL) && (strlen(pszTargetfile) > 0) &&
(pszTargetargs != NULL) &&
(pszLinkfile != NULL) && (strlen(pszLinkfile) > 0) &&
(pszDescription != NULL) &&
(iShowmode >= 0) &&
(pszCurdir != NULL) &&
(pszIconfile != NULL) &&
(iIconindex >= 0)
)
hRes = CoCreateInstance(&CLSID_ShellLink, /* pre-defined CLSID of the IShellLink object */
NULL, /* pointer to parent interface if part of aggregate */
CLSCTX_INPROC_SERVER, /* caller and called code are in same process */
&IID_IShellLink, /* pre-defined interface of the IShellLink object */
&pShellLink); /* Returns a pointer to the IShellLink object */
if (SUCCEEDED(hRes))
/* Set the fields in the IShellLink object */
hRes = pShellLink->lpVtbl->SetPath(pShellLink, pszTargetfile);
hRes = pShellLink->lpVtbl->SetArguments(pShellLink, pszTargetargs);
if (strlen(pszDescription) > 0)
hRes = pShellLink->lpVtbl->SetDescription(pShellLink, pszDescription);
if (iShowmode > 0)
hRes = pShellLink->lpVtbl->SetShowCmd(pShellLink, iShowmode);
if (strlen(pszCurdir) > 0)
hRes = pShellLink->lpVtbl->SetWorkingDirectory(pShellLink, pszCurdir);
if (strlen(pszIconfile) > 0 && iIconindex >= 0)
hRes = pShellLink->lpVtbl->SetIconLocation(pShellLink, pszIconfile, iIconindex);
/* Use the IPersistFile object to save the shell link */
hRes = pShellLink->lpVtbl->QueryInterface(pShellLink, /* existing IShellLink object */
&IID_IPersistFile, /* pre-defined interface of the IPersistFile object */
&pPersistFile); /* returns a pointer to the IPersistFile object */
if (SUCCEEDED(hRes))
iWideCharsWritten = MultiByteToWideChar(CP_ACP, 0, pszLinkfile, -1, wszLinkfile, MAX_PATH);
hRes = pPersistFile->lpVtbl->Save(pPersistFile, wszLinkfile, TRUE);
pPersistFile->lpVtbl->Release(pPersistFile);
pShellLink->lpVtbl->Release(pShellLink);
return (hRes);
int main(int n, char **argv)
HRESULT hRes; /* result of calling COM functions */
hRes = CoInitialize(NULL);
if (SUCCEEDED(hRes))
hRes = CreateShortCut(argv[0],
"", /* Target arguments */
"E:\\sam.lnk", /* Short-cut filename */
"Samurai 2", /* Short-cut description */
SW_SHOW, /* Showmode constant */
"", /* Working directory for linked file */
"", /* Icon file shown for the link */
0); /* Index of icon in the file */
/* call CoUninitialize() and exit the program. */
CoUninitialize();
return 0;
中国物联网校企联盟技术部本回答被提问者采纳 参考技术B C语言创建快捷方式,c++builder测试通过。
/* C run time library headers */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* COM headers (requires shell32.lib, ole32.lib, uuid.lib) */
#include <objbase.h>
#include <shlobj.h>
批处理创建快捷方式
发个有用的东西——批处理创建快捷方式。非我原创,这里整理一下,希望对大家有用。
一、批处理生成快捷方式:
1、可以直接生成:
echo [InternetShortcut]>>"%USERPROFILE%\桌面\BatMPlayer.url" echo URL="C:\BatMPlayer\BatMPlayer.bat">>"%USERPROFILE%\桌面\BatMPlayer.url" echo IconIndex=99>>"%USERPROFILE%\桌面\BatMPlayer.url" echo IconFile=%SystemRoot%\system32\SHELL32.dll>>"%USERPROFILE%\桌面\BatMPlayer.url"
2、也可以先设置变量:
@echo off set "path=C:\BatMPlayer\BatMPlayer.bat" set "name=我的BatMPlayer" set m="%USERPROFILE%\桌面\%name%.url" echo [InternetShortcut] >>%m% echo URL="%path%" >>%m% echo IconIndex=10 >>%m% echo IconFile=C:\windows\system32\shell32.dll >>%m% pause
二、查看与解释
1、生成的快捷方式是一个url链接,用记事本打开,得到以下内容:
[InternetShortcut] URL="C:\BatMPlayer\BatMPlayer.bat" IconIndex=17 IconFile=C:\WINDOWS\system32\SHELL32.dll
2、以下是快捷方式内容的解释:
[InternetShortcut] ;快捷方式。 URL="C:\BatMPlayer\BatMPlayer.bat" ;快捷方式的程序路径。 IconIndex=99 ;快捷方式使用的图标的顺序号(此处为系统文件中的图标的顺序,位于以下的IconFile文件夹中,具体查看第三部分的《Shell32.Dll 图标资源对照表》)。 IconFile=%SystemRoot%\system32\SHELL32.dll ;快捷方式图标的位置(此处为系统文件路径,常见系统快捷方式的图标存放位置)。 "%USERPROFILE%\桌面\BatMPlayer.url" ; 快捷方式创建位置(此处为桌面),注意双引号和后缀名。
三、Windows系统Shell32.Dll 图标资源对照表
Windows系统Shell32.Dll 图标资源对照表
Shell32.Dll 图标资源对照表 001:默认图标(无扩展名文件) 002:默认文本 003:EXE文件 004:文件夹闭合 005:文件夹打开 006:5.25" 5寸盘 007:3.5" 3寸盘/ 008:移动存储 009:磁盘 010:网络硬盘 011:网络硬盘(离线) 012:空CD驱动器 013:Ram 盘 014:全球 015:不知(图标描述:一个地球上有一个鼠标) 016:我的电脑) 017:打印机 018:网上邻居 019:工作组 020:查看(详细描述:工具栏上的"平铺"、"图标"、"列表"、"详细信息"、的图标) 021:历史纪录文档 022:控制面版 023:搜索(描述:单纯的一个搜索放大镜) 024:帮助 025:运行 026:睡眠模式 027:弹出(256色) 028:关闭(描述:好像是关闭电源的那种) 029:共享 030:快捷方式小箭头 031:不知(类似 快捷箭头大小 黑色里有一个小圈圈) 032:回收站[空] 033:回收站[满] 034:网络空间文件夹 035:显示桌面 036:控制面版(256色) 037:{与020 相同} 查看(描述:工具栏上的"平铺"、"图标"、"列表"、"详细信息"、的图标) 038:打印机文件夹 (256色) 039:字体文件夹 040:任务栏和开始菜单 041:音频CD 042:不知(图标描述:和上Ftp的时候地址栏的图标一样。) 043:不知(图标描述:底层一个文件夹图标,顶层一个电脑图标) 044:收藏夹 045:登陆/注销 046:搜索文件夹 047:Windows 自动更新 048:不知(图标描述:一把锁) 049:不知(图标描述:底层一个文件夹窗口,顶层一个蓝色屏幕电脑图标) 050~053:都是空白图标 054:未知磁盘 133:不知(图标描述:层叠着的空白文件) 134:搜索(详细描述:打开方式那里的搜索。) 135:搜索我的电脑 137:{与022 相同} 控制面版 138:打印机和传真 139:添加新的打印机 140:网络打印机 141:不知(图标描述:一个打印机和一个软盘) 142~144:另类回收站[满](描述:和32.33 图标不一样,另一种回收站[满]样式) 145:不知(图标描述:2个文本文档,底层是一个红叉文档,顶层是一个完好文档,好像是完好文档替换损坏文档的意思) 146:复制文件 147:文件重命名 148:不知(图标描述:一个电脑+一个齿轮转移到一个文件夹内,好像是配置备份的意思。) 151:配置文件 152:文本文档 153:批处理文件(256色) 154:DLL文件 155:A字体(不好意思,不知道A字体的全名) 156:TrueType Font Truetype字体 157:Type 1 Font Type 1 字体 160:{与025 相同} 运行 161:删除 165:文件备份硬盘 166:光驱错误校验 167:磁盘碎片 168:安装打印机 169:安装网络打印机 170:不知(图标描述:一个打印机和一个软盘,左上角有一小勾勾) 171:颜色交换文件 172:共享文档 173:{与044 相同}收藏夹! 174:不知(图标描述:一个文件夹,文件夹上有几种颜色.有一个箭头指着,好像是要选择文件颜色还是怎么) 175:连接到 176:新建网络文件夹(256色) 177:不知(图标描述:一个文件夹窗口和一个齿轮,好像是配置文件夹) 178:添加新的连接- 179:不知(图标描述:底层一个地球,顶层一台电脑和主机) 180:不知(图标描述:一个显示器,打开了很多窗口.都缩小到了任务栏) 181:不知(图标描述:一个显示器,显示的空白桌面) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 下面的是文件夹选项中的图标: 182:在文件夹显示常见任务 183:使用 Windows 传统风格的文件夹 184:在同一窗口中打开每个文件夹 185:在不同窗口中打开不同的文件夹! 186:通过单击打开项目(指向时选定) 187:通过双击打开项目(单击时选定) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 191:另类回收站[空](256色)(描述:和32.33 图标不一样,另一种回收站[空]样式) 192:与191是一个图标样式的回收站[满](256色) 193:网络文件夹 194:不知(图标描述:3把钥匙) 196:传真机 197:安装传真机 198:安装网络传真机 199:网络传真机 200:禁止动作 210:文件夹选项 220:用户(256色) 221:电源开关! 222:DVD光盘 223:不知(图标描述:3张层叠的文档) 224:视频文件 225:音频文件 226:图像文件 227:混合媒体文件 228:音频CD (256色) 229:CF卡读卡器 230:Zip驱动器 231:不知(图标描述:类似快捷箭头的向下小图标) 232:{与231 相同} 不知(图标描述:类似快捷箭头的向下小图标) 233:{与008 相同} 移动存储 234:Zip驱动器(无盘) 235:我的文档 236:我的图片 237:我的音乐 238:我的视频 239:Msn 240:取消 241:不知(图标描述:我的文档图标+一个向右的箭头,难道是.........) 242:选择 243:2个文本文档 244:把此文件发布到Web 245:{与017 相同}打印机 246:播放 247:在线音乐商店 248:照相机 249:幻灯片 250:显示 (详细描述:控制面版的“显示”,也就是桌面属性) 251:在线定购打印机 252:打印图片 253:不知(图标描述:一个默认图标,中间一个红色的勾勾) 254:{与032 相同} 回收站[空] 255:前一文件夹 256:{与146 相同} 复制文件 257:{与175 相同} 连接到 258:新建网络共享文件夹 259:网络安装向导 260:将文件烧制到CD 261:将软件刻录到CD 262:将光盘仍到回收站 263:帮助 264:复制到文件夹 265:电子邮件 266:复制到CD 267:共享文件夹 268:辅助功能选项 269:用户帐户 270:桌面主题 271:添加/删除程序 272:打印机和其他硬件 273:网络和Internet连接! 274:选项 275:性能和维护 276:日期、时间、语言和区域选项 277:声音、语音和音频设备 278:批处理 279:{与269 相同} 用户帐户 281:放大镜 282:语音 283:屏幕键盘 284:不知(图标描述:2个黑白三角型组成的正方型图标) 289:帮助文档 290:确定、开始、Go 。 291:DVD驱动器 292:增强CD 293:未知CD 294:CD-ROM光盘 295:CD-R光盘 296:CD-RW光盘 297:DVD-RAM光盘 298:DVD-R光盘 299:MP3 播放器 300:大磁带驱动器 301:小磁带驱动器 302:普通CD 303:CF卡 304:DVD-ROM光盘 305:{与008 相同} 移动存储 306:PC卡 307:SD卡 308:智能卡 309:{与248 相同} 照相机 310:手机 311:不知(图标描述:底层一个地球,顶层一个打印机) 312:JAZ驱动器 313:{与230 相同} Zip驱动器 314:PDA 315:扫描仪 316:扫描仪和相机 317:DV机 318:DVD-RW光盘 319:新建文件夹 320:{与266 相同} 复制到CD 321:{与022 相同} 控制面版2 322:{与044 相同} 收藏夹 323:{与023 相同} 搜索(描述:单纯的一个搜索放大镜) 324:{与024 相同} 帮助 325:{与045 相同} 登陆/注销 326:{与020 相同,只不过小一点} 查看(描述:工具栏上的"平铺"、"图标"、"列表"、"详细信息"、的图标) 327:{与021 相同,只不过小一点} 历史纪录文档 328:{与025 相同} 运行 329:关闭 330:{与022 相同} 控制面版 331:弹出 337:不知(图标描述:一个放大镜在找驱动里面的东西) 338:{与200 相同} 禁止动作 512:Internet Explorer 1001:气球提示 1002:{与168 相同} 安装打印机 1003:不知(图标描述:一个主机上有一个勾) 1004:{与289 相同} 帮助文档 1005:不知(图标描述:一个默认图标+一个向右的箭头) 1006:打印文档 1007:{与253 相同} 不知(图标描述:一个默认图标,中间一个红色的勾勾) 1008:暂停打印 1009:开始打印 1010:共享传真机 1011:另类传真机(详细描述:与196有所不同) 8240:另类我的电脑(详细描述:与016有所不同) 16710~16721:所有{与161 相同} 删除
以上是关于c语言创建快捷方式的主要内容,如果未能解决你的问题,请参考以下文章