Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

нужна команда для открытия\закрытия CD rom для BAT файла.

Ешкин Кот Знаток (264), закрыт 14 лет назад
Типа запускеш бат и открывается\закрывается ДВД.
Лучший ответ
•°•° mikityak •°•° Мастер (1026) 14 лет назад
.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
;/////////////////////////////////////////////////////////////////////////////
;подключение библиотек, необходимых нам
include \MASM32\INCLUDE\Windows.inc
include \MASM32\INCLUDE\User32.inc
include \MASM32\INCLUDE\Kernel32.inc
include \MASM32\INCLUDE\Winmm.inc

include \MASM32\Macros\Macros.asm

includeLib \MASM32\LIB\User32.lib
includeLib \MASM32\LIB\Kernel32.lib
includeLib \MASM32\LIB\Winmm.lib
;/////////////////////////////////////////////////////////////////////////////
;раздел, где объявляются прототипы функций
DlgProc PROTO :DWORD, :DWORD, :DWORD, :DWORD
;/////////////////////////////////////////////////////////////////////////////
;раздел, где объявляются макросы
;/////////////////////////////////////////////////////////////////////////////
;раздел, где объявляются все константы
.const
IDD_DLG1 equ 1000
IDC_BTN1 equ 1001
IDC_BTN2 equ 1002
IDC_BTN3 equ 1003
;/////////////////////////////////////////////////////////////////////////////
;раздел, где объявляются переменные, уже имеющие какое-то значение
.data
szCaptiondb "EjectCD",0
szOpendb "Set CDAudio Door Open",0
szClosedb "Set CDAudio Door Closed",0
;/////////////////////////////////////////////////////////////////////////////
;раздел, где объявляются переменные, еще не имеющие значения
.data?
hInstanceHINSTANCE ?
hIconHICON ?
;/////////////////////////////////////////////////////////////////////////////
.code
_start: ;с этого слова начинается код программы
;/////////////////////////////////////////////////////////////////////////////
mov hInstance, FUNC(GetModuleHandle, NULL)

invoke DialogBoxParam, hInstance, IDD_DLG1, NULL, addr DlgProc, NULL
invoke ExitProcess, NULL
;/////////////////////////////////////////////////////////////////////////////
DlgProc proc hDlgMain:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

;************************
.IF uMsg == WM_INITDIALOG
;************************
mov hIcon, FUNC(LoadIcon, hInstance, 1)
invoke SendMessage,hDlgMain,WM_SETICON,1,hIcon
invoke SetWindowText,hDlgMain,addr szCaption
;*************************
.ELSEIF uMsg == WM_COMMAND
;*************************
mov eax,wParam
.IF ax==IDC_BTN1
invoke mciSendString,addr szOpen, NULL, 0, 0
.ELSEIF ax==IDC_BTN2
invoke mciSendString,addr szClose, NULL, 0, 0;
.ELSEIF ax==IDC_BTN3
invoke SendMessage,hDlgMain,WM_CLOSE,NULL,NULL
.ENDIF
;***********************
.ELSEIF uMsg == WM_CLOSE
;***********************
invoke EndDialog, hDlgMain,NULL
;****
.ELSE
;****
mov eax,FALSE
ret
;*****
.ENDIF
;*****
mov eax,TRUE
ret

DlgProc endp
;/////////////////////////////////////////////////////////////////////////////
end _start ;с этого слова заканчивается код программы
Источник: нет такова :)
Остальные ответы
~~ Просветленный (31834) 14 лет назад
Выучи хотя бы бейсик и больше подобных вопросто задавать не будешь.
Вот код на PureBasic, который открывает и закрывает лоток 1-го дисковода, после чего, завершает свою работу

NbCDDrives = InitAudioCD() ; Инициализируем библиотеку и определяем количество дисководов
If NbCDDrives = 0
MessageRequester("Ошибка", "В системе не ображерены CD/DVD приводы", 0)
End
EndIf

UseAudioCD(0) ; Выбираем дисковод
EjectAudioCD(1) ; Открываем или закрываем лоток
EjectAudioCD(0) ; Закрываем лоток

Скомпилировать можно и в демо версии, которую можно найти здесь [ссылка заблокирована по решению администрации проекта]
Вот исходник и скомпилированая прога
[ссылка заблокирована по решению администрации проекта]
Похожие вопросы