Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Обращение к несуществущему floppy


Автор: goldwin 24.7.2009, 16:03
Необходимо получить количество свободного места на дискете.
Код

#include <windows.h>
#include <iostream>

int main()
{
   ULARGE_INTEGER space ;
   if ( GetDiskFreeSpaceEx( TEXT("A:\\"), &space, NULL, NULL ) == 0 )
   {
      LPVOID lpMsgBuf;
      FormatMessage( 
         FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
         NULL, GetLastError(), 0, (LPTSTR) &lpMsgBuf, 0, NULL );
      MessageBox( NULL, (LPCTSTR)lpMsgBuf, TEXT(""), MB_OK );
      LocalFree( lpMsgBuf ) ;
   }

   system("pause") ;
   return 0 ;
}

Если на компьютере физически нет floppy-дисковода (но его иконка присутствует, например, в Windows Explorer), то после входа в GetDiskFreeSpace приложение завиает на несколько секунд, после чего система выдает окно "Устройство не готово (отмена/повторить/продолжить)", и уже после нажатия "отмена" или "продолжить" формируется свой MessageBox (в нем тоже написано "устройство не готово)". 
Есть ли способ подавить вывод первого окна?

Автор: 586 24.7.2009, 16:10
Код
SetErrorMode(SEM_FAILCRITICALERRORS);

http://forum.vingrad.ru/index.php?showtopic=260992&view=findpost&p=1880270

Автор: goldwin 24.7.2009, 16:14
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)