VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1441|回复: 7

[已解决]使用 ShellExecuteEx 函数打开 C:\Windows 目录的文件属性对话框。

[复制链接]
49_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-6 11:09:00 | 显示全部楼层 |阅读模式
使用 ShellExecuteEx 函数打开 C:\Windows 目录的文件属性对话框。
按照课后习题答案给的程序,运行成功之后,为什么没有打开文件属性的对话框?

生成解决方案之后显示没有错误

生成解决方案之后显示没有错误
最佳答案
51_avatar_small
2020-6-9 18:05:48
我刚刚用这个代码测试没问题,可以正常显示文件夹的属性对话框:
  1. void ShowProp()
  2. {
  3.         SHELLEXECUTEINFO ShExecInfo = { 0 };
  4.         ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  5.         ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST;
  6.         ShExecInfo.hwnd = NULL;
  7.         ShExecInfo.lpVerb = _T("properties");
  8.         ShExecInfo.lpFile = _T("C:\\Windows\");
  9.         ShExecInfo.lpParameters = _T("");
  10.         ShExecInfo.lpDirectory = NULL;
  11.         ShExecInfo.nShow = SW_SHOW;
  12.         ShExecInfo.hInstApp = NULL;
  13.         ShellExecuteEx(&ShExecInfo);
  14. }
复制代码

选择执行(不调试)没有显示文件属性

选择执行(不调试)没有显示文件属性




上一篇:日期类的编写问题
下一篇:如何给MFC按钮加快捷键
51_avatar_middle
最佳答案
90 
online_admins 发表于 2020-6-9 18:05:48 | 显示全部楼层    本楼为最佳答案   
bestAnswer
我刚刚用这个代码测试没问题,可以正常显示文件夹的属性对话框:
  1. void ShowProp()
  2. {
  3.         SHELLEXECUTEINFO ShExecInfo = { 0 };
  4.         ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  5.         ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST;
  6.         ShExecInfo.hwnd = NULL;
  7.         ShExecInfo.lpVerb = _T("properties");
  8.         ShExecInfo.lpFile = _T("C:\\Windows\");
  9.         ShExecInfo.lpParameters = _T("");
  10.         ShExecInfo.lpDirectory = NULL;
  11.         ShExecInfo.nShow = SW_SHOW;
  12.         ShExecInfo.hInstApp = NULL;
  13.         ShellExecuteEx(&ShExecInfo);
  14. }
复制代码
51_avatar_middle
最佳答案
90 
online_admins 发表于 2020-6-9 18:00:18 | 显示全部楼层
怎么判断运行成功了?
ShellExecuteEx 函数的返回值是多少?
30_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-22 19:34:43 | 显示全部楼层
这个好象是"没有注册类"的原因
43_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-15 14:26:41 | 显示全部楼层
Syc 发表于 2020-6-9 18:05
我刚刚用这个代码测试没问题,可以正常显示文件夹的属性对话框:

老师好!

把这里:ShExecInfo.lpFile = _T("C:\\Windows\"); 改为:ShExecInfo.lpFile = _T("C:\\Windows"); 也不行
43_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-15 14:29:14 | 显示全部楼层
Syc 发表于 2020-6-9 18:05
我刚刚用这个代码测试没问题,可以正常显示文件夹的属性对话框:

在这里,找到原因,可以正常显示了
https://www.cnblogs.com/strive-sun/p/11799049.html#4775035
为了防止属性对话框无法成功打开(程序运行太快,以至于没有时间打开属性对话框,程序就结束了)
调用SHSetInstanceExplorer并使其保持活动状态,直到该COM对象被释放:

1、里面用的技术看不懂,请问老师,要学了您的哪几套课件才能看懂,可以写出来?谢谢

24_avatar_middle
最佳答案
0 
online_vip 发表于 2021-4-4 22:52:15 | 显示全部楼层
这里确实是程序运行太快了。无法显示。
加个延迟可以看到效果。
07_avatar_middle
最佳答案
0 
donate_vip 发表于 2022-4-9 22:09:56 | 显示全部楼层
本帖最后由 jackfq 于 2022-4-9 22:19 编辑

        //4、使用 ShellExecuteEx 函数打开 C : \Windows 目录的文件属性对话框。
        SHELLEXECUTEINFO ShellInfo = { 0 };
        ShellInfo.cbSize = sizeof(SHELLEXECUTEINFO);
        ShellInfo.lpVerb = _T("properties");
        ShellInfo.lpFile = _T("C:\\Windows\\system32");
        ShellInfo.fMask = SEE_MASK_INVOKEIDLIST;
        ShellInfo.nShow = SW_SHOWNORMAL;
        BOOL bRet = ShellExecuteEx(&ShellInfo);
        system("pause");    //加上这个就可以看到了


您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-5-29 23:28

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表