VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 259|回复: 4

C/C++ Windows 程序设计第4课作业问题

[复制链接]
78_avatar_middle
最佳答案
1 
在线会员 发表于 2019-11-1 21:54:43 | 显示全部楼层 |阅读模式
本帖最后由 muye12921 于 2019-11-2 09:58 编辑

该课作业第四题使用 ShellExecuteEx 函数打开 C:\Windows 目录的文件属性对话框,通过自己百度到的代码和老师给的答案参考均不能显示属性对话框。在stackoverflow上看到有人说使用Sleep()暂停一下就可以,试了一下,果然可以。上面还提到了使用SEE_MASK_NOASYNC这个掩码可以解决,试了一下,不行,还是只有使用Sleep(),我用的是Windows 10 家庭版 1903,不知道各位有其他解决方法吗,感觉用Sleep()过会儿时间属性对话框就关闭了。代码如下:
  1. SHELLEXECUTEINFO ShellInfo = { 0 };
  2. ShellInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  3. ShellInfo.lpVerb = TEXT("properties");
  4. ShellInfo.lpFile = TEXT("C:\\Windows");
  5. ShellInfo.nShow = SW_SHOWNORMAL;
  6. ShellInfo.fMask = SEE_MASK_INVOKEIDLIST;
  7. BOOL bRet = ShellExecuteEx(&ShellInfo);
  8. Sleep(5000);
复制代码





上一篇:宽窄字节字符串转换出现问题
下一篇:实用C++22课的疑惑
58_avatar_middle
最佳答案
43 
online_vip 发表于 2019-11-1 22:56:17 | 显示全部楼层
ShellInfo.lpFile = TEXT("C:\\Windows\\"); 这里是\\吧?
用system("pause");暂停呢?
58_avatar_middle
最佳答案
43 
online_vip 发表于 2019-11-1 23:28:40 | 显示全部楼层
坐等老大,看有没有更简单的方式阻塞?
78_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2019-11-2 09:37:08 | 显示全部楼层
本帖最后由 muye12921 于 2019-11-2 10:13 编辑
thzzl 发表于 2019-11-1 22:56
ShellInfo.lpFile = TEXT("C:\\Windows\\"); 这里是\\吧?
用system("pause");暂停呢?


对的,是\\,插入代码的时候编辑器将\\转义为\了,现在把最后的\\删掉了。system("pause")是可以,但是会弹出控制台小黑框,不优雅

附上在stackoverflow上找到的信息和微软对SEE_MASK_NOASYNC的解释

Remarks For SEE_MASK_NOASYNC

Remarks For SEE_MASK_NOASYNC

stackoverflow上的讨论

stackoverflow上的讨论
58_avatar_middle
最佳答案
43 
online_vip 发表于 2019-11-2 13:51:22 | 显示全部楼层
muye12921 发表于 2019-11-2 09:37
对的,是\\,插入代码的时候编辑器将\\转义为\了,现在把最后的\\删掉了。system("pause")是可以,但是 ...

学到后面,可以用线程相关函数,阻塞。带着问题往下学吧。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

GMT+8, 2020-10-1 14:49

Powered by CcTry.CoM

© 2009-2020 cctry.com

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