Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Dmitriy1995
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 7
1

Работа с дисководом и обращение к файлу на диске

04.03.2015, 18:27. Просмотров 609. Ответов 11
Метки нет (Все метки)

Доброго времени суток!
Собственно, требуется самым простым и легким способом сделать несколько вещей.
Проверяем наличие диска в дисководе - Если нет, то вывести сообщение "Вставьте диск и нажмите Enter", если есть - то выполнить содержащийся на диске "start.exe".
Все это без всяких гуев, в чистой досмашине.
Как можно это сделать, не нагружая систему и не при помощи тонны кода?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2015, 18:27
Ответы с готовыми решениями:

Работа с дисководом
Как работать с дисководом в с++? К примеру, функция, проверяющая, есть ли диск...

Обращение многих потоков к одному файлу
Как правильно синхронизировать такое: есть много потоков и один файл txt...

Обращение к файлу при нажатии кнопки
Имеется exe файл.Необходимо чтобы при нажатии кнопки этот файл запускался.Как...

Как можно реализовать обращение к файлу, если часть пути каждый день меняется?
Добрый день! Подскажите пожалуйста как можно реализовать обращение к файлу....

управление флоппи-дисководом
Извините может вопрос не в тему. Может кто подскажет, где можно найти...

11
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
04.03.2015, 19:27 2
Dmitriy1995, вот обычное консольное приложение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Windows.h>
 
int main()
{
    STARTUPINFO si;
    ZeroMemory(&si, sizeof(si));
 
    si.cb = sizeof(si);
    si.dwX = CW_USEDEFAULT;
    si.dwY = NULL;
    si.dwXSize = CW_USEDEFAULT;
    si.dwYSize = CW_USEDEFAULT;
    si.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE;
        
    PROCESS_INFORMATION pi;             //Путь в createProcess устанавливайте сами. Имя диска у вас может быть другим
    if(!CreateProcess(L"D:\\start.exe", NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS,
        NULL, NULL, &si, &pi))
        MessageBox(NULL, L"Cannot run the application, or the disk is not in the CD-ROM", L"Error", MB_OK);
    return 0;
}
1
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
04.03.2015, 19:37 3
Dmitriy1995, Инфорамацию о дисках можно получить функцией GetLogicalDriveString.
Определить тип диска - GetDriveType.
Правда, все это WinAPI
0
Dmitriy1995
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 7
04.03.2015, 19:42  [ТС] 4
Байт, спасибо, но, к сожалению, WinAPI никак не проходит, нужно именно на чистую досмашину, причем выполняться это будет из автоэкзек'а сразу после запуска шелла
0
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
04.03.2015, 19:43 5
Dmitriy1995, стоп-стоп, те функции тоже винапишные. Если на ДОСе запускаете, по идее, ничего не выйдет
0
Dmitriy1995
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 7
04.03.2015, 19:45  [ТС] 6
tnk500, да, нужно именно под чистый дос. Есть возможность как-то запустить?
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
04.03.2015, 19:48 7
C++
1
2
3
4
5
6
ifstream stream("a:\start.exe");
if(stream.good())
{
    stream.close();
    system("a:\start.exe");
}
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
04.03.2015, 20:00 8
Dmitriy1995, Есть такая функция biosdisk. Первый параметр cmd=16 проверяет готовность диска. Другие значения cmd лучше не использовать, если информация на диске дорога
А определить, есть ли файл, лучше всего функцией access
Ну а запуск - spawn
0
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
04.03.2015, 20:04 9
Dmitriy1995, увы, я застал лишь Win95, на досе никогда не программировал (наверно, к счастью). Может, поможет директива #pragma comment(lib, "kernel32.lib"), хотя очень-очень сумневаюсь
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
04.03.2015, 20:07 10
Цитата Сообщение от tnk500 Посмотреть сообщение
Dmitriy1995, увы, я застал лишь Win95, на досе никогда не программировал (наверно, к счастью). Может, поможет директива #pragma comment(lib, "kernel32.lib"), хотя очень-очень сумневаюсь
Не поможет. В Досе dll и lib не было, системные библиотеки вызывались через прерывания.
0
Dmitriy1995
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 7
04.03.2015, 20:18  [ТС] 11
Байт, ну, да, :go ECHO y | format a: /u GOTO go
0
Dmitriy1995
0 / 0 / 0
Регистрация: 04.03.2015
Сообщений: 7
14.03.2015, 04:06  [ТС] 12
Продолжаю надоедать уважаемым рукастым программистам. Цель та-же - запуск программы с диска. Но в этот раз не из-под доса.
Каким образом можно сделать сплошное окно (которое закроет весь рабочий стол и даже панель задач и не будет иметь "свернуть\развернуть\закрыть) и четыре кнопки, размещенные на нем (загрузка с диска, просмотр сведений о системе, выключение и пустую, резервную)?
0
14.03.2015, 04:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2015, 04:06

Обращение к строке двумерного массива и работа с ней
Собственно задача: Дан двумерный массив целых чисел. а) Составить программу,...

Написать программу, которая дописывает в файл Phone/txt, находящийся на диске А фамилию и номер телефона. Если файла на диске нет, то программа должна
Написать программу, которая дописывает в файл Phone/txt, находящийся на диске А...

Работа с дисководом
Здравствуйте!Подскажите пожалуйста как написать такую программу Написать 16–ти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru