|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Решено* | Программное отключение CDRom-а |
|
|
*Решено* | Программное отключение CDRom-а
|
Пользователь Сообщения: 110 |
Всем доброго времени суток!
У меня есть такая проблема: нужно программно отключить кнопку загрузки/выгрузки лотка CDRom-а. Знаю программа CDSlow такое умеет, но мне она не подходит. Если кто знает как это сделать помогите пожалуйста. Заранее спасибо. |
|
Отправлено: 03:37, 08-08-2005 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать KAB
Я могу ошибаться,но мне кажется,тут надо смотреть в сторону функции mciSendCommand, объявленной в модуле MMSystem. К примеру,имеется следующий код на Delphi,заставляющий каждые пять секунд открывать/закрывать лоток CD-ROM'а: var OpenParm : TMCI_Open_Parms; GetParm : TMCI_Generic_Parms; SetParm : TMCI_Set_Parms; DI : Cardinal; OK : Boolean; begin OK := False; OpenParm.lpstrDeviceType := 'CDAudio'; // Указываем на необходимость работы с CD-ROM'ом repeat mciSendCommand(0, mci_Open, mci_Open_Type, LongInt(@OpenParm)); DI := OpenParm.wDeviceID; mciSendCommand(DI, mci_Set, mci_Set_Door_Open, LongInt(@SetParm)); mciSendCommand(DI, mci_Set, mci_Set_Door_Closed, LongInt(@SetParm)); mciSendCommand(DI, mci_Close, mci_Notify, LongInt(@GetParm)); Sleep(5000); until OK; end; Возможно навеит какие-нибудь мысли... |
------- Отправлено: 00:58, 09-08-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Это называется блокировка трея. Я видел, как это делает linux. Как windows - не знаю.
Т.о. заблокировать (железо) можно, но как в винде - не знаю. |
Отправлено: 13:50, 10-08-2005 | #3 |
Пользователь Сообщения: 110
|
Спасибо всем кто ответил.
|
Отправлено: 21:54, 17-08-2005 | #4 |
Ветеран Сообщения: 716
|
Профиль | Отправить PM | Цитировать А lock/unlock уже отменили?
http://www.computerhope.com/lockhlp.htm |
|
Отправлено: 03:04, 25-08-2005 | #5 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Envel
Мне показалось или там написано: Цитата ComputerHope.com:
|
|
------- Отправлено: 15:30, 25-08-2005 | #6 |
Пользователь Сообщения: 110
|
Как я понял с сайта http://www.computerhope.com/lockhlp.htm поддержка только Windows 9х, а мне нужно Windows XP-2003
|
------- Отправлено: 03:04, 28-08-2005 | #7 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать KAB
По-моему,я нашёл,что тебе надо.А именно: Цитата "Техника защиты компакт-дисков от копирования" Криса Касперски:
// Утилита позволяет манипулировать счётчиком блокировок диска. // Аргумент командной строки "+" увеличивает значение счётчика на единицу, // ...а "-" - уменьшает. #include <windows.h> #include <winioctl.h> #include <stdio.h> #define IOCTL_CDROM_MEDIA_REMOVAL 0x24804 main(int argc, char **argv) { BOOL act; DWORD xxxx; HANDLE hCD; PREVENT_MEDIA_REMOVAL pmrLockCDROM; // Проверка аргументов if (argc<3) {printf("USAGE: CD.lock.exe \\\\.\\X: {+, -}\n"); return -1; } if (argv[2] [0] == '+') act = TRUE; // УВЕЛИЧИТЬ СЧЁТЧИК БЛОКИРОВОК else if (argv[2] [0] == '-') act = FALSE; // УМЕНЬШИТЬ СЧЁТЧИК БЛОКИРОВОК else {printf(stderr, "-ERR: in arg %c\n" , argv[2] [0]); return -1; } // Получить дескриптор устройства hCD = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); if (hCD == INVALID_HANDLE_VALUE) {printf(" -ERR: get CD-ROM\n"); return -1; } // Заблокировать/разблокировать лоток CD-ROM'a pmrLockCDROM.PreventMediaRemoval = act; DeviceIoControl(hCD, IOCTL_CDROM_MEDIA_REMOVAL, &pmrLockCDROM, SizeOf(pmrLockCDROM), NULL, 0, &xxxx, NULL); } |
|
------- Последний раз редактировалось DillerInc, 03-09-2005 в 17:30. Причина: Исправил пару опечаток Отправлено: 16:36, 31-08-2005 | #8 |
Пользователь Сообщения: 110
|
DillerInc при компиляции этого кода Borland С++ 5.02 выдал такие ошибки:
Error: noname00.cpp(15,42):Undefined symbol 'PREVENT_MEIDA_REMOVAL' Error: noname00.cpp(15,42):Statement missing ; Error: noname00.cpp(22,59):Cannot convert 'FILE *' to 'const char *' Error: noname00.cpp(22,59):Type mismatch in parameter '__format' in call to 'printf(const char *,...)' Error: noname00.cpp(29,14):Undefined symbol 'prmLockCDROM' Error: noname00.cpp(31,43):Undefined symbol 'pmrLockCDROM' Error: noname00.cpp(31,51):Call to undefined function 'SizeOf' Warn : noname00.cpp(32,2):'act' is assigned a value that is never used Может я что делаю не так |
------- Отправлено: 23:56, 02-09-2005 | #9 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать KAB
Ну,с одной стороны я допустил несколько опечаток,которые сейчас вроде исправил. С другой стороны,я не знаком с языком Си, и поэтому в коде могут быть какие-то ошибки - это следовало бы попросить других форумчан,которые знают Си,чтобы они проверили код. И,как говорится,за что купил,за то и продаю. Так что смотри... |
------- Отправлено: 17:38, 03-09-2005 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
7 / 2008 R2 - Отключение окна "Установить программное обеспечение для данного устройства" | SystemIntegrator | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 12 | 19-06-2024 14:36 | |
Разное - [решено] Программное задвигание лотка привода. | antikiller_bm | Программное обеспечение Windows | 7 | 03-01-2010 10:07 | |
[решено] Подлинное программное обеспечение Microsoft | LAMASTER | Хочу все знать | 2 | 02-09-2007 14:25 | |
Отключение CDrom | Djamper | Microsoft Windows 95/98/Me (архив) | 10 | 01-05-2003 16:25 | |
Программное отключение HDD | dascon | Программирование и базы данных | 1 | 19-12-2002 13:38 |
|