创建桌面快捷方式和开始启动项
来源:互联网 发布:js修改offsetleft 编辑:程序博客网 时间:2024/05/14 21:05
2010-11-10 21:31:46
#include <afx.h>
#include<direct.h>
#include<stdlib.h>
#include "Shlwapi.h"
#include <Tlhelp32.h>
#pragma comment(lib,"shlwapi.lib")
void CreateKeyBoard();
BOOL CreateLink(LPSTR szPath,LPSTR szLink);
void NotifyShell(LONG wEventId,LPSTR szPath);
void CreateKeyBoard()
{
HRESULT hr = CoInitialize(NULL);
TCHAR szPath[MAX_PATH];
int iRet;
CString strprogram;
CString strdesktop;
CString strswp;
BOOL bExist=FALSE;
char szlnk[MAX_PATH]="";
//快速启动程序,在C盘的目录
//C:/Documents and Settings/All Users/「开始」菜单/程序
memset(szPath,0,sizeof(szPath));
iRet = SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_PROGRAMS,0);
strprogram.Format("%s",szPath);
//桌面文件,在C盘的目录
//C:/Documents and Settings/All Users/桌面
memset(szPath,0,sizeof(szPath));
iRet = SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_DESKTOPDIRECTORY,0);
strdesktop.Format("%s",szPath);
strswp.Format("%s//测试程序",strprogram);
bExist=PathFileExists(strswp);
if (!bExist)
{
//快速启动创建"测试程序"
_mkdir(strswp);
}
//桌面创建快捷方式
strswp.Format("%s//testMFC.lnk",strdesktop);
strcpy(szlnk,strswp.GetBuffer(strswp.GetLength()+1));
//桌面上的文件和源文件进行连接
CreateLink("D://MFC_App//testMFC.exe",szlnk);
NotifyShell( SHCNE_CREATE|SHCNE_INTERRUPT,szlnk); //通知shell有关变化
strswp.ReleaseBuffer();
//在开始中设置: 快速启动
strswp.Format("%s//测试程序//testMFC.lnk",strprogram);
strcpy(szlnk,strswp.GetBuffer(strswp.GetLength()+1));
CreateLink("D://MFC_App//testMFC.exe",szlnk);
NotifyShell( SHCNE_CREATE|SHCNE_INTERRUPT,szlnk); //通知shell有关变化
strswp.ReleaseBuffer();
}
BOOL CreateLink(LPSTR szPath,LPSTR szLink)
{
HRESULT hres ;
IShellLink * psl ;
IPersistFile* ppf ;
WORD wsz[ MAX_PATH] ;
hres = CoCreateInstance( CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER, IID_IShellLink,(void **)&psl) ;
if( FAILED( hres))
return FALSE ;
psl -> SetPath( szPath) ; //设置目标应用程序
//设置快捷键(此处设为Shift+Ctrl+'R')
psl -> SetHotkey( MAKEWORD( 'R',HOTKEYF_SHIFT |HOTKEYF_CONTROL)) ;
//从IShellLink获取其IPersistFile接口,用于保存快捷方式的数据文件 (*.lnk)
hres = psl -> QueryInterface( IID_IPersistFile, (void**)&ppf) ;
if( FAILED( hres))
return FALSE ;
//确保数据文件名为ANSI格式
MultiByteToWideChar( CP_ACP, 0, szLink, -1, wsz, MAX_PATH) ;
//调用IPersistFile::Save
//保存快捷方式的数据文件 (*.lnk)
hres = ppf -> Save( wsz, STGM_READWRITE) ;
//释放IPersistFile和IShellLink接口
ppf -> Release( ) ;
psl -> Release( ) ;
return TRUE;
}
// 通知shell有关变化
void NotifyShell(LONG wEventId,//事件标志
LPSTR szPath)//路径
{
SHChangeNotify( wEventId,
SHCNF_FLUSH | SHCNF_PATH,
szPath,0);
//取得szPath的父目录
char* p;
for( p=szPath+lstrlen(szPath)-1;
*p != '//';
p--);
*p='/0';
SHChangeNotify(SHCNE_UPDATEDIR|SHCNE_INTERRUPT, SHCNF_FLUSH | SHCNF_PATH,szPath,0);
}
void CWebProcDirDlg::OnButton7()
{
CreateKeyBoard();
}
#include<direct.h>
#include<stdlib.h>
#include "Shlwapi.h"
#include <Tlhelp32.h>
#pragma comment(lib,"shlwapi.lib")
void CreateKeyBoard();
BOOL CreateLink(LPSTR szPath,LPSTR szLink);
void NotifyShell(LONG wEventId,LPSTR szPath);
void CreateKeyBoard()
{
HRESULT hr = CoInitialize(NULL);
TCHAR szPath[MAX_PATH];
int iRet;
CString strprogram;
CString strdesktop;
CString strswp;
BOOL bExist=FALSE;
char szlnk[MAX_PATH]="";
//快速启动程序,在C盘的目录
//C:/Documents and Settings/All Users/「开始」菜单/程序
memset(szPath,0,sizeof(szPath));
iRet = SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_PROGRAMS,0);
strprogram.Format("%s",szPath);
//桌面文件,在C盘的目录
//C:/Documents and Settings/All Users/桌面
memset(szPath,0,sizeof(szPath));
iRet = SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_DESKTOPDIRECTORY,0);
strdesktop.Format("%s",szPath);
strswp.Format("%s//测试程序",strprogram);
bExist=PathFileExists(strswp);
if (!bExist)
{
//快速启动创建"测试程序"
_mkdir(strswp);
}
//桌面创建快捷方式
strswp.Format("%s//testMFC.lnk",strdesktop);
strcpy(szlnk,strswp.GetBuffer(strswp.GetLength()+1));
//桌面上的文件和源文件进行连接
CreateLink("D://MFC_App//testMFC.exe",szlnk);
NotifyShell( SHCNE_CREATE|SHCNE_INTERRUPT,szlnk); //通知shell有关变化
strswp.ReleaseBuffer();
//在开始中设置: 快速启动
strswp.Format("%s//测试程序//testMFC.lnk",strprogram);
strcpy(szlnk,strswp.GetBuffer(strswp.GetLength()+1));
CreateLink("D://MFC_App//testMFC.exe",szlnk);
NotifyShell( SHCNE_CREATE|SHCNE_INTERRUPT,szlnk); //通知shell有关变化
strswp.ReleaseBuffer();
}
BOOL CreateLink(LPSTR szPath,LPSTR szLink)
{
HRESULT hres ;
IShellLink * psl ;
IPersistFile* ppf ;
WORD wsz[ MAX_PATH] ;
hres = CoCreateInstance( CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER, IID_IShellLink,(void **)&psl) ;
if( FAILED( hres))
return FALSE ;
psl -> SetPath( szPath) ; //设置目标应用程序
//设置快捷键(此处设为Shift+Ctrl+'R')
psl -> SetHotkey( MAKEWORD( 'R',HOTKEYF_SHIFT |HOTKEYF_CONTROL)) ;
//从IShellLink获取其IPersistFile接口,用于保存快捷方式的数据文件 (*.lnk)
hres = psl -> QueryInterface( IID_IPersistFile, (void**)&ppf) ;
if( FAILED( hres))
return FALSE ;
//确保数据文件名为ANSI格式
MultiByteToWideChar( CP_ACP, 0, szLink, -1, wsz, MAX_PATH) ;
//调用IPersistFile::Save
//保存快捷方式的数据文件 (*.lnk)
hres = ppf -> Save( wsz, STGM_READWRITE) ;
//释放IPersistFile和IShellLink接口
ppf -> Release( ) ;
psl -> Release( ) ;
return TRUE;
}
// 通知shell有关变化
void NotifyShell(LONG wEventId,//事件标志
LPSTR szPath)//路径
{
SHChangeNotify( wEventId,
SHCNF_FLUSH | SHCNF_PATH,
szPath,0);
//取得szPath的父目录
char* p;
for( p=szPath+lstrlen(szPath)-1;
*p != '//';
p--);
*p='/0';
SHChangeNotify(SHCNE_UPDATEDIR|SHCNE_INTERRUPT, SHCNF_FLUSH | SHCNF_PATH,szPath,0);
}
void CWebProcDirDlg::OnButton7()
{
CreateKeyBoard();
}
- 创建桌面快捷方式和开始启动项
- 在桌面和快速启动中创建快捷方式
- 创建和删除桌面快捷方式
- Qt创建桌面快捷方式和删除桌面快捷方式
- VC 创建快捷方式和得到桌面路径
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式 【转】
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- 设计模式之适配器模式
- 替换应用程序exe图标
- ubuntu下进入tomcat6-admin( Tomcat Manager Application Tomcat Host Manager Application)
- 关于AppDomain
- 简单词法分析器
- 创建桌面快捷方式和开始启动项
- TCP/IP之二
- 数据库坏块的处理
- pku acm1579简单动态规划
- 解决办法之“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 ”
- 循环你应该这样写
- 常用内部排序的实现
- 华为,工资岗位揭秘 2010年08月02日
- 冒泡法排序