2009-09-10 2 views
2

CopyFile() API를 사용하여 하드 디스크에서 플로피 드라이브로 파일을 복사하는 응용 프로그램을 만들었습니다. 큰 파일의 복사 프로세스 도중에 플로피가 드라이브에서 제거되면 시스템 팝업창에 오류 메시지가 나타납니다.Windows 시스템 메시지를 표시하지 않는 방법

시스템에서 팝업되는이 오류 메시지를 표시하지 않으려합니다. 내가 봤 거든 SetErrorMode() API를 사용하여 비슷한 문제를 해결하기 위해 많은 응용 프로그램에서 사용하고 가능한 모든 플래그 옵션을 사용하여 시도했지만 실패합니다. 샘플 코드 -

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

SetErrorMode() API는 오류 메시지를 표시하지 못합니다. 누군가 내 응용 프로그램과 함께 작동하지 않는 이유를 이해하는데 도움을 줄 수 있습니까? 값이 0, 1 또는 2로 설정 될 수있다 억제하는 제어 \ WINDOWS \ ErrorMode

\ CURRENTCONTROLSET \ 키

HKEY_LOCAL_MACHINE을 \ 시스템에 대해 이야기 http://support.microsoft.com/kb/128642 :

나는 다음 아래 링크를 통해 온 또는 오류 메시지를 표시하십시오. 이 솔루션은 내 응용 프로그램에서 작동하지만 나는 느낀다.

a. 시스템 키에 직접 액세스하는 것은 좋은 프로그래밍 습관이 아닙니까? 이 작업을 수행하는 API가 있어야합니다. b. 이러한 코드는 Windows Vista 또는 Windows 7에서 실행될 때 UAC에서 실패합니다.

위의 문제에 대한 도움을받을 수있는 사람이 있습니까?

감사합니다, 펠릭스

답변

0

이 무엇 FOF_NOERRORUI 플래그 SHFileOperation 시도에 대해 작동 여부 만한다면 잘 모르겠어요?

0

이것은 꽤 답이 아니라 내 경험에 기반한 좀 더 자세한 정보입니다. SetErrorMode가 Windows Vista 및 Windows 7에서 작동하는 것 같았습니다. Windows XP에서는 작동하지 않았습니다. XP는 여전히 간단한 오류 메시지를 표시합니다 ... 메모리는 "읽을"수 없습니다 ... 충돌. 이것은 분산 처리 무인 상황에서의 나의 살인자였습니다. 이 질문에서 언급 된 기사는 제 베이컨을 수정했습니다.

나는 여전히 프로그램 적으로 레지스트리를 수정하는 것에 관한 질문에서 고통을 겪고 있습니다. SetErrorMode가 7과 Vista (아직)에서 작동했기 때문에 내 경우에는 걱정할 필요가 없습니다.하지만 가상 저장소에 Windows를 설정하면 올바른 동작을 제공하는지 확인하기 만하면됩니다.

관련 문제