QQ登录

只需一步,快速开始

223上位机VC MFC在桌面菜单等目录创建应用程序快捷方式

[ 复制链接 ]

223上位机VC MFC在桌面菜单等目录创建应用程序快捷方式

223上位机VC MFC在桌面菜单等目录创建应用程序快捷方式
223上位机VC MFC在桌面菜单等目录创建应用程序快捷方式
功能展示
我们电脑桌面或桌面左下脚的开始菜单都有很程序的快捷图标,双击可以很方便的打开我们想要的程序,我们当前例程也实现向桌面和开始菜单创建指定程序的快捷图标,效果如图,首先通过<选择要创建快捷图标的程序>或<获取自身路径>指定要创建快捷图标的程序,通过另外两按钮创建快捷图标;
要点提示
例程是通过函数SHChangeNotify()创建指定程序的快捷图标;
WINSHELLAPI void WINAPI SHChangeNotify(
LONG wEventID, //指定事件类型
UINT uFlags, //确定dwItem1和dwItem2作的标志
LPCVOIDdwItem1,
LPCVOID dwItem2
);
1.wEventId:其取值有很多
SHCNE_ASSOCCHANGED:修改文件关联
SHCNE_ATTRIBUTES:改变文件属性
SHCNE_CREATE:创建新文件
SHCNE_DELETE:删除文件
更多取值可以查阅MSDN手册
2.uFlags:
指示dwItem1和dwItem2参数含义的标志。uFlags参数必须是以下值之一:
SHCNF_DWORD
      dwItem1和dwItem2参数是DWORD值.
SHCNF_IDLIST
  dwItem1和dwItem2是代表这个项目被变更影响的ITEMIDLIST结构的地址。每个ITEMIDLIST必须是相对于桌面的文件夹。
SHCNF_PATH
      dwItem1和dwItem2是最大长度为MAX_PATH的以'\0'结束的字符串的地址,包含了该被变更影响的项目的完整路径名称。
SHCNF_PRINTER
      dwItem1和dwItem2是以'\0'结束的字符串的地址,代表被变更影响的打印机的友好名称。
SHCNF_FLUSH
      函数不应该返回,直到已通知所有受影响的组件。由于这标志修改其他数据类型标志,它不能由自己使用。
SHCNF_FLUSHNOWAIT
      函数应该开始通知所有受影响的组件,但当进程已经开始通知时就应返回。由于这标志修改其他数据类型标志,它不能由自己使用。此标志包含SHCNF_FLUSH。
SHCNF_NOTIFYRECURSIVE
      Notify clients registered for all children.
dwItem1
可选。第一个事件相关的值。
dwItem2
可选。第二个事件相关的值。
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1用于显示要创建快捷图标的程序路径
3.拖拽按钮控件<选择要创建快捷图标的程序><获取自身路径><创建桌面快捷图标><创建开始菜单快捷图标>关联函数实现相应功能
  1. void CGkbc8Dlg::OnChoose()
  2. {
  3.         CFileDialog Dlg(FALSE,"*.exe","可执行文件",OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,"可执行程序|*.exe||",NULL);
  4.         if(Dlg.DoModal()==IDOK)
  5.                 SetDlgItemText(IDC_EDIT1,Dlg.GetPathName());
  6. }
  7. void CGkbc8Dlg::OnGetme()
  8. {
  9.         char buf[MAX_PATH];
  10.         GetModuleFileName(NULL,buf,MAX_PATH);
  11.         SetDlgItemText(IDC_EDIT1,buf);
  12. }
  13. void CGkbc8Dlg::OnDesktop()
  14. {
  15.         CString sEXEPathName;
  16.         GetDlgItemText(IDC_EDIT1,sEXEPathName);
  17.         if(sEXEPathName.Right(sEXEPathName.GetLength()-sEXEPathName.ReverseFind('.'))!=".exe") return;
  18.         LPITEMIDLIST pid;
  19.         char path[MAX_PATH];
  20.         ::SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pid);
  21.         ::SHGetPathFromIDList(pid,path);//获取桌面目录
  22.         if(!CreateShortcut(sEXEPathName,CString(path)))
  23.                 MessageBox("创建桌面快捷图标失败");
  24. }
复制代码
  1. void CGkbc8Dlg::OnStartmenu()
  2. {
  3.         CString sEXEPathName;
  4.         GetDlgItemText(IDC_EDIT1,sEXEPathName);
  5.         if(sEXEPathName.Right(sEXEPathName.GetLength()-sEXEPathName.ReverseFind('.'))!=".exe")
  6.                 return;
  7. //<>
  8.         LPITEMIDLIST pid;
  9.         char path[MAX_PATH];
  10.         ::SHGetSpecialFolderLocation(NULL,CSIDL_PROGRAMS,&pid);
  11.         ::SHGetPathFromIDList(pid,path);//开始菜单目录
  12. //<>
  13.         if(!CreateShortcut(sEXEPathName,CString(path)))
  14.                 MessageBox("创建开始菜单快捷图标失败");
  15. }
复制代码
其中CreateShortcut()函数为我们自定义函数,函数体过长,可打开例程源码查阅
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:223.上位机VC MFC在桌面菜单等目录创建应用程序快捷方式.rar 
文件大小:140.34 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索