Visual c++ 如何抑制windows系统消息

Visual c++ 如何抑制windows系统消息,visual-c++,Visual C++,我创建了一个应用程序,它使用CopyFile()API将文件从硬盘复制到软盘驱动器。 在大文件的复制过程中间,如果软盘从驱动器中删除,则 系统弹出一条错误信息 我想抑制系统弹出的此错误消息。我在谷歌上搜索并阅读了使用的SetErrorMode()API 许多应用程序试图解决类似的问题,并尝试将其与所有可能的标志选项一起使用,但失败了。样本代码- UINT uOldErrorMode=设置错误模式(SEM|U故障临界错误| SEM|U NOGPFAULTERRORBOX); ::复制文件(“C:\

我创建了一个应用程序,它使用CopyFile()API将文件从硬盘复制到软盘驱动器。 在大文件的复制过程中间,如果软盘从驱动器中删除,则 系统弹出一条错误信息

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

UINT uOldErrorMode=设置错误模式(SEM|U故障临界错误| SEM|U NOGPFAULTERRORBOX); ::复制文件(“C:\text.dat”,“A:\text.dat”,FALSE); 设置错误模式(uOldErrorMode)

SetErrorMode()API无法抑制错误消息。有人能帮助我理解为什么我的应用程序不能使用它吗

然后我看到了下面的链接:其中谈到了关键

HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode

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

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

任何人都可以在上述问题上提供一些帮助

问候,,
Felix

我不确定这是否有效,但是使用
FOF\u NOERRORUI
标志试一试怎么样?

我不确定这是否有效,但是使用
FOF\u NOERRORUI
标志试一试怎么样?

这不是一个很好的答案,但根据我的经验提供了更多信息。我发现SetErrorMode似乎可以在WindowsVista和Windows7上运行。它在Windows XP中不起作用。XP仍然会弹出一个简单的错误消息…内存无法“读取”。。。崩溃这是我在分布式处理无人值守情况下使用的杀手。问题中提到的那篇文章解决了我的问题


我仍然受到问题中关于编程修改注册表的部分的困扰。就我而言,我不需要担心,因为SetErrorMode在7和vista中都能工作(现在还没有),但如果不能,我只需要测试一下让windows在虚拟商店中设置它是否也能提供正确的行为。

这不是一个很好的答案,而是基于我的经验提供的更多信息。我发现SetErrorMode似乎可以在WindowsVista和Windows7上运行。它在Windows XP中不起作用。XP仍然会弹出一个简单的错误消息…内存无法“读取”。。。崩溃这是我在分布式处理无人值守情况下使用的杀手。问题中提到的那篇文章解决了我的问题

我仍然受到问题中关于编程修改注册表的部分的困扰。对于我的情况,我不需要担心,因为SetErrorMode在7和vista中工作(还没有),但是如果它没有工作,我只需要测试一下让windows在虚拟商店中设置它是否也能提供正确的行为