想用sdk寫個程序,如何刪除開始菜單中程序裏的快捷方式?

yuki737 2005-01-31 02:00:14
誰能給個思路?謝謝
...全文
309 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看看是不是快捷方式被设了只读
yuki737 2005-02-01
  • 打赏
  • 举报
回复
谢谢大家
你们提供的方法我试过可以删文件,但是快捷方式怎么也删不掉

比如我在快捷方式同级目录下新建文件1.doc或文件夹1都能删,就是快捷方式不行
怎么办呢?
  • 打赏
  • 举报
回复
使用SHGetSpecialFolderPath 记得包含 shlobj.h
  • 打赏
  • 举报
回复
你要先找到开始菜单的位置:
SHGetSpecialFolderPath(NULL,szPath,csidl,FALSE);
csidl的取值为:
CSIDL_STARTMENU 开始菜单(个人)
CSIDL_PROGRAMS 开始菜单->程序(个人)
CSIDL_COMMON_STARTMENU 开始菜单(公共)
CSIDL_COMMON_PROGRAMS 开始菜单->程序(公共)
其他的可以查阅MSDN
然后可以用FindFirstFile,FindNextFile遍历所有的文件和目录,用DeleteFile删除文件
yuki737 2005-01-31
  • 打赏
  • 举报
回复
可是不同的語言生成的快捷方式名稱都不同
chuanke 2005-01-31
  • 打赏
  • 举报
回复
其实,那些快捷方式是在
C:\Documents and Settings\Administrator\「开始」菜单\程序
C:\Documents and Settings\(YourName)\「开始」菜单\程序
下的,

你只要删除这些文件夹里面的文件即可。
//////////////////////////////////////////////
需要使用的函数:
BOOL DeleteFile(
LPCTSTR lpFileName
);


同意
galaxy_fxstar 2005-01-31
  • 打赏
  • 举报
回复
C:\Documents and Settings\(YourName)\「开始」菜单\程序
下的所有快捷方式和------開始菜單->所有程序-> 里的菜单项是一一对应的,所以只要删除相应的快捷方式就可以删除对应的菜单项,(那种有子菜单的菜单项对应了一个文件夹)
还有上面的目录结构是win2k和xp的,98下的目录结构是不一样的,自己找吧。

建议你的程序依次实现以下功能
1。浏览当前的开始菜单内容(根据操作系统和当前用户的不同从相应的目录中读取)
2。删除功能 (也就是删除对应快捷方式的功能,简单的文件删除)
bobob 2005-01-31
  • 打赏
  • 举报
回复
其实,那些快捷方式是在
C:\Documents and Settings\Administrator\「开始」菜单\程序
C:\Documents and Settings\(YourName)\「开始」菜单\程序
下的,

你只要删除这些文件夹里面的文件即可。
//////////////////////////////////////////////
需要使用的函数:
BOOL DeleteFile(
LPCTSTR lpFileName
);


同意
Imagist 2005-01-31
  • 打赏
  • 举报
回复
明白你的意思,
用我提供的方法即可完成。
yuki737 2005-01-31
  • 打赏
  • 举报
回复
錯了,開始菜單->所有程序->microsoft->vc
msdn
uninstall vc
yuki737 2005-01-31
  • 打赏
  • 举报
回复
我的意思是這樣的
例如
開始菜單->Microsoft{vc
msdn
uninstall vc

我要刪除vc和uninstall vc
Imagist 2005-01-31
  • 打赏
  • 举报
回复
其实,那些快捷方式是在
C:\Documents and Settings\Administrator\「开始」菜单\程序
C:\Documents and Settings\(YourName)\「开始」菜单\程序
下的,

你只要删除这些文件夹里面的文件即可。
//////////////////////////////////////////////
需要使用的函数:
BOOL DeleteFile(
LPCTSTR lpFileName
);

吹泡泡的小猫 2005-01-31
  • 打赏
  • 举报
回复
使用 IShellLink,下面是创建快捷方式的例子:
// CreateLink - uses the Shell's IShellLink and IPersistFile interfaces
// to create and store a shortcut to the specified object.
// Returns the result of calling the member functions of the interfaces.
// lpszPathObj - address of a buffer containing the path of the object.
// lpszPathLink - address of a buffer containing the path where the
// Shell link is to be stored.
// lpszDesc - address of a buffer containing the description of the
// Shell link.

HRESULT CreateLink(LPCSTR lpszPathObj,
LPCSTR lpszPathLink, LPCSTR lpszDesc)
{
HRESULT hres;
IShellLink* psl;

// Get a pointer to the IShellLink interface.
hres = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl);
if (SUCCEEDED(hres)) {
IPersistFile* ppf;

// Set the path to the shortcut target and add the
// description.
psl->SetPath(lpszPathObj);
psl->SetDescription(lpszDesc);

// Query IShellLink for the IPersistFile interface for saving the
// shortcut in persistent storage.
hres = psl->QueryInterface(&IID_IPersistFile,
(LPVOID*)&ppf);

if (SUCCEEDED(hres)) {
WCHAR wsz[MAX_PATH];

// Ensure that the string is Unicode.
MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1,
wsz, MAX_PATH);

// Save the link by calling IPersistFile::Save.
hres = ppf->Save(wsz, TRUE);
ppf->Release();
}
psl->Release();
}
return hres;
}

xuzheng318 2005-01-31
  • 打赏
  • 举报
回复
HWND hDesktop;
hDesktop=FindWindow("ProgMan",NULL);
ShowWindow(hDesktop,SW_HIDE);//隐藏,SW_SHOW是显示桌面图标

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧