首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何抑制windows系统消息

如何抑制windows系统消息
EN

Stack Overflow用户
提问于 2009-09-10 14:16:41
回答 2查看 1.5K关注 0票数 2

我已经创建了一个使用CopyFile()应用程序接口将文件从硬盘复制到软盘驱动器的应用程序。在复制大文件的过程中,如果软盘从驱动器中取出,则windows系统会弹出一条错误消息。

我想抑制系统弹出的这个错误消息。我在谷歌上搜索并阅读了许多应用程序用来解决类似问题的SetErrorMode()应用程序接口,并尝试将其与所有可能的标志选项一起使用,但失败了。示例代码-

UINT uOldErrorMode = SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);::CopyFile("C:\text.dat","A:\text.dat",FALSE);SetErrorMode (uOldErrorMode);

SetErrorMode()接口无法抑制错误消息。有人能帮助我理解为什么它不能与我的应用程序一起工作吗?

然后,我看到了下面的链接:http://support.microsoft.com/kb/128642,它介绍了密钥

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode

其值可以设置为0、1或2,以取消或显示错误消息。这个解决方案适用于我的应用程序,但我觉得

a.直接访问系统密钥不是一种好的编程实践吗?应该有一个API可以做到这一点。b.此类代码在Windows Vista或Windows 7上执行时应使UAC失败。

有没有人能提供一些帮助来解决上述问题。

你好,费利克斯

EN

回答 2

Stack Overflow用户

发布于 2009-12-13 10:55:25

我不确定这是否有效,但是尝试使用FOF_NOERRORUI标志的SHFileOperation怎么样?

票数 0
EN

Stack Overflow用户

发布于 2011-05-18 12:19:15

这不是一个完全的答案,但根据我的经验提供了更多的信息。我发现SetErrorMode似乎能在Windows Vista和Windows7上工作,但在Windows XP上却不行。XP仍然会弹出一个简单的...memory不能被“读取”的错误消息...撞车。这对于我在分布式处理无人值守的情况下的使用来说是一个杀手锏。问题中引用的那篇文章解决了我的问题。

我仍然被问题中关于程序化修改注册表的部分所困扰。对于我的情况,我不需要担心,因为SetErrorMode可以在7和vista中工作(目前还没有),但如果它不能工作,我只需要测试让windows在虚拟商店中设置它是否也会给出正确的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1405548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档