//删除快捷方式的数据文件 (*.lnk)
BOOL DeleteLink( LPSTR lpszShortcut)
{
SHFILEOPSTRUCT fos ;
ZeroMemory( &fos, sizeof(fos)) ;
fos.hwnd = HWND_DESKTOP ;
fos.wFunc = FO_DELETE ;
fos.pFrom = lpszShortcut;
fos.pTo = NULL ;
fos.fFlags = FOF_SILENT | FOF_ALLOWUNDO ;
//删除快捷方式(*.lnk)
if( 0 != SHFileOperation( &fos))
return FALSE ;
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);
}
///////////////////////////////////////////////////
// CSortCutDlg dialog
CSortCutDlg::CSortCutDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSortCutDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSortCutDlg)
//把圆形按钮“桌面”设为选中状态
m_nLocation = 0;
……
}
……
void CSortCutDlg::OnCreateGroup()
{
LPITEMIDLIST pidlBeginAt, pidlDestination ;
char szPath[ MAX_PATH] ;
// 取得开始菜单或桌面的PIDL
SHGetSpecialFolderLocation( HWND_DESKTOP,
nBeginAt, &pidlBeginAt) ;
// 取得新建文件夹的父文件夹
if( !BrowseForFolder(pidlBeginAt ,
&pidlDestination,
"请选择新建文件夹/菜单组的位置: "))
return ;
// 把PIDL转换为路径名
SHGetPathFromIDList( pidlDestination, szPath) ;
//取得新建文件夹的名字
CNameDlg name_dlg;
if(name_dlg.DoModal() == IDCANCEL)
return;
//形成完整的新建文件夹名
wsprintf(szPath+lstrlen(szPath), "//%s ",
name_dlg.m_strName);
//创建文件夹(子目录)
if( !CreateDirectory( szPath, NULL))
{
MessageBox( "创建文件夹失败! ") ;
return ;
}
// 通知shell有关变化
NotifyShell( SHCNE_MKDIR|SHCNE_INTERRUPT,
szPath);
}
void CSortCutDlg::OnCreateItem()
{
char szPath[MAX_PATH]= " ";
//快捷方式的目标应用程序名
char szLink[MAX_PATH]= " ";
//快捷方式的数据文件名
// 取得快捷方式的目标应用程序名
if( !SelectMenuItem( szPath))
return ;
// 取得新建快捷方式所在的文件夹
//并形成其数据文件名
if( !GetShortcutCrt( szLink))
return ;
// 创建快捷方式
if(!CreateLink( szPath, szLink) )
return;
// 通知shell有关变化
NotifyShell( SHCNE_CREATE|SHCNE_INTERRUPT,
szLink) ;
}
void CSortCutDlg::OnDeleteGroup()
{
LPITEMIDLIST pidlBeginAt, pidlFolder ;
char szPath[MAX_PATH]= " ";
// 取得开始菜单或桌面的PIDL
SHGetSpecialFolderLocation( HWND_DESKTOP,
nBeginAt, &pidlBeginAt) ;
// 取得要删除的文件夹
if( !BrowseForFolder( pidlBeginAt, &pidlFolder,
"请选择要删除的文件夹/菜单组: "))
return ;
// 把PIDL转化为路径名
SHGetPathFromIDList( pidlFolder, szPath) ;
// 删除文件夹
if(!DeleteFolder( szPath))
return ;
// 通知shell有关变化
NotifyShell( SHCNE_RMDIR|SHCNE_INTERRUPT,
szPath) ;
}
void CSortCutDlg::OnDeleteItem()
{
LPITEMIDLIST pidlBeginAt ;
char szShortcut[ MAX_PATH]= " ",
szPath[ MAX_PATH]= " ";
// 取得开始菜单或桌面的PIDL
SHGetSpecialFolderLocation( HWND_DESKTOP,
nBeginAt, &pidlBeginAt) ;
// 把PIDL转化为路径名
SHGetPathFromIDList( pidlBeginAt, szPath) ;
// 取得要删除的快捷方式
if( !GetShortcutDel( szPath, szShortcut))
return ;
// 删除快捷方式
if( !DeleteLink(szShortcut))
return ;
// 通知SHELL有关改变
NotifyShell( SHCNE_DELETE|SHCNE_INTERRUPT,
szShortcut) ;
}
void CSortCutDlg::OnDesktop()
{
//设置起始文件夹为桌面
nBeginAt=CSIDL_DESKTOPDIRECTORY ;
}
void CSortCutDlg::OnStartmenu()
{
//设置起始文件夹为“开始”菜单
nBeginAt=CSIDL_STARTMENU;
}
vc删除应用程序快捷方式
最新推荐文章于 2020-07-13 15:36:24 发布