Вопрос № 31718: Здравствуйте.
Я так понимаю, что об объявлений API функций в Borland C++Builder 6 нужно много рассказывать. Но может быть вы хоть вкратце, расскажете, как это делается, где это пишется (в кавычках, на самом верху или ещё где).
И ещё, помогите...
Вопрос № 31.718
Здравствуйте.
Я так понимаю, что об объявлений API функций в Borland C++Builder 6 нужно много рассказывать. Но может быть вы хоть вкратце, расскажете, как это делается, где это пишется (в кавычках, на самом верху или ещё где).
И ещё, помогите прогу написать для открывания CD-ROM с объявлением API функции.
Заранее благодарю.
Отвечает: PROD
Здравствуйте, Неизвестнов Том!
ниже статья по работе с сидюками. удачи
Как программно управлять CD-ROM'ом?
Автор: trainer
Исходная ссылка: - - -
Для начала определим вспомогательные переменные и функции, которые облегчат передачу команд:
#include <mmsystem.h>
#include <stdio.h>
#pragma comment(lib,"winmm.lib")
/* Буфер, в котором будем создавать команды */
char CdCommandBuffer[256];
/* Создание команды без указания имени CD-ROM'а */
char * CreateCdCommand(char * pBuffer, char * pCommand, char * pCmdFlags, char * pFlags) {
sprintf(pBuffer,"%s cdaudio %s %s",pCommand,pCmdFlags,pFlags);
return pBuffer;
}
/* Создание команды с указанием имени CD-ROM'а */
char * CreateCdCommandEx(char * pBuffer, char DriveLetter, char * pCommand, char * pCmdFlags, char * pFlags) {
sprintf(pBuffer,"%s cdaudio!%c: %s %s",pCommand,DriveLetter,pCmdFlags,pFlags);
return pBuffer;
}
Теперь, используя вспомогательные функции и переменные, отдавать команды управления CD-ROM'ом не просто, а очень просто.
Открыть CD-ROM, ожидая выполнения этой команды:
mciSendStringA(CreateCdCommand (CdCommandBuffer, CdCmdSet, CdCmdFlagOpen, CdFlagWait), NULL, 0, INVALID_HANDLE_VALUE);
Закрыть CD_ROM, ожидая выполнения этой команды:
mciSendStringA(CreateCdCommand (CdCommandBuffer, CdCmdSet, CdCmdFlagClose, CdFlagWait), NULL, 0, INVALID_HANDLE_VALUE);
Начать воспроизведение без ожидания выполнения:
mciSendStringA(CreateCdCommand( CdCommandBuffer, CdCmdPlay, CdCmdFlagEmpty, CdFlagEmpty), NULL, 0, INVALID_HANDLE_VALUE);
Остановить воспроизведение(стоп) без ожидания выполнения:
mciSendStringA(CreateCdCommand (CdCommandBuffer, CdCmdStop, CdCmdFlagEmpty, CdFlagEmpty), NULL, 0,INVALID_HANDLE_VALUE);
Получить номер текущей дорожки, ожидая выполнения этой команды:
mciSendStringA(CreateCdCommand (CdCommandBuffer, CdCmdStatus, CdCmdCurTrack, CdFlagWait), CdCommandBuffer, 255, INVALID_HANDLE_VALUE);
ShowMessage("Current track is "+AnsiString(CdCommandBuffer));
Получить текущее состояние, ожидая выполнения этой команды:
mciSendStringA(CreateCdCommand (CdCommandBuffer, CdCmdStatus, CdCmdCurMode, CdFlagWait), CdCommandBuffer, 255, INVALID_HANDLE_VALUE);
ShowMessage("Current mode is '"+AnsiString(CdCommandBuffer)+"'");
Если в системе присутствует несколько приводов CD, то для задания конкретного привода вместо функции CreateCdCommand следует использовать CreateCdCommandEx
Ответ отправил: PROD (статус: 2-ой класс)
Отправлен: 18.12.2005, 07:34
Отвечает: DIMANET
Здравствуйте, Неизвестнов Том!
Насколько я знаю CD открывается так: