Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

CD-ROM   Найти похожие ветки 

 
Skaner ©   (2004-03-14 16:02) [0]

Приветствую вас!
Подскажите пожалуйста каким образом мне отследить попытку открытия сидирома и вывести сообщение!
Зарание благодарен!


 
Skaner ©   (2004-03-14 16:02) [0]

Приветствую вас!
Подскажите пожалуйста каким образом мне отследить попытку открытия сидирома и вывести сообщение!
Зарание благодарен!


 
ssk   (2004-03-14 16:07) [1]

никак


 
ssk   (2004-03-14 16:07) [1]

никак


 
zeqfreed ©   (2004-03-14 18:57) [2]

Помоему можно драйвер написать... только мне помнится, что на delphi драйверы не пишутся..


 
zeqfreed ©   (2004-03-14 18:57) [2]

Помоему можно драйвер написать... только мне помнится, что на delphi драйверы не пишутся..


 
Иван Ширко   (2004-03-14 21:02) [3]

Если нужно блокировать CD-ROM, то используй ASPI. Если нужно отследить сабытие открытия лотка, то проверяй по таймеру (опять ASPI)


 
Иван Ширко   (2004-03-14 21:02) [3]

Если нужно блокировать CD-ROM, то используй ASPI. Если нужно отследить сабытие открытия лотка, то проверяй по таймеру (опять ASPI)


 
Dimaxx ©   (2004-03-14 23:33) [4]

Все можно. Вот пример.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
TForm1 = class(TForm)
private
  { Private declarations }
  procedure WMDeviceChange(var Message: TMessage); message WM_DEVICECHANGE;
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;

procedure TForm1.WMDeviceChange(var Message: TMessage);
var S: string;
begin
{Do Something here}
case Message.wParam of
  DBT_DEVICEARRIVAL    : S:="A device has been inserted and is now available";
  DBT_DEVICEQUERYREMOVE: begin
                           S:="Permission to remove a device is requested";
                           ShowMessage(S);
                           {True grants premission}
                           Message.Result:=integer(True);
                           Exit;
                         end;
  DBT_DEVICEQUERYREMOVEFAILED: S:="Request to remove a device has been canceled";
  DBT_DEVICEREMOVEPENDING    : S:="Device is about to be removed";
  DBT_DEVICEREMOVECOMPLETE   : S:="Device has been removed";
  DBT_DEVICETYPESPECIFIC     : S:="Device-specific event";
  DBT_CONFIGCHANGED          : S:="Current configuration has changed"
  else S:="Unknown Device Message";
end;
ShowMessage(S);
inherited;
end;

end.


DBT_DEVICEREMOVECOMPLETE - это то, что тебе нужно.


 
Dimaxx ©   (2004-03-14 23:33) [4]

Все можно. Вот пример.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
TForm1 = class(TForm)
private
  { Private declarations }
  procedure WMDeviceChange(var Message: TMessage); message WM_DEVICECHANGE;
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;

procedure TForm1.WMDeviceChange(var Message: TMessage);
var S: string;
begin
{Do Something here}
case Message.wParam of
  DBT_DEVICEARRIVAL    : S:="A device has been inserted and is now available";
  DBT_DEVICEQUERYREMOVE: begin
                           S:="Permission to remove a device is requested";
                           ShowMessage(S);
                           {True grants premission}
                           Message.Result:=integer(True);
                           Exit;
                         end;
  DBT_DEVICEQUERYREMOVEFAILED: S:="Request to remove a device has been canceled";
  DBT_DEVICEREMOVEPENDING    : S:="Device is about to be removed";
  DBT_DEVICEREMOVECOMPLETE   : S:="Device has been removed";
  DBT_DEVICETYPESPECIFIC     : S:="Device-specific event";
  DBT_CONFIGCHANGED          : S:="Current configuration has changed"
  else S:="Unknown Device Message";
end;
ShowMessage(S);
inherited;
end;

end.


DBT_DEVICEREMOVECOMPLETE - это то, что тебе нужно.


 
Gero ©   (2004-03-14 23:50) [5]

> Dimaxx ©   (14.03.04 23:33) [4]

И это будет работать? Сомневаюсь. Читаем из хелпа про WM_DEVICECHANGE:

The WM_DEVICECHANGE device message notifies an application or device driver of a change to the hardware configuration of a device or the computer

Не то...


 
Gero ©   (2004-03-14 23:50) [5]

> Dimaxx ©   (14.03.04 23:33) [4]

И это будет работать? Сомневаюсь. Читаем из хелпа про WM_DEVICECHANGE:

The WM_DEVICECHANGE device message notifies an application or device driver of a change to the hardware configuration of a device or the computer

Не то...


 
Dimaxx ©   (2004-03-15 22:38) [6]

По крайней мере, я попробовал. Как только диск вставили и он опознан - срабатывает DBT_DEVICEARRIVAL. Открываешь лоток - срабатывает DBT_DEVICEREMOVECOMPLETE. Так что подожди с "не то", а попробуй сначала :-)


 
Dimaxx ©   (2004-03-15 22:38) [6]

По крайней мере, я попробовал. Как только диск вставили и он опознан - срабатывает DBT_DEVICEARRIVAL. Открываешь лоток - срабатывает DBT_DEVICEREMOVECOMPLETE. Так что подожди с "не то", а попробуй сначала :-)


 
Gero ©   (2004-03-15 23:10) [7]

> Dimaxx ©   (15.03.04 22:38) [6]

Попробовал. Выдвигаю - задвигаю... Реакции - ноль.


 
Gero ©   (2004-03-15 23:10) [7]

> Dimaxx ©   (15.03.04 22:38) [6]

Попробовал. Выдвигаю - задвигаю... Реакции - ноль.


 
ssk   (2004-03-16 15:45) [8]

>Dimaxx ©  (15.03.04 22:38) [6]

По крайней мере, я попробовал. Как только диск вставили и он опознан - срабатывает DBT_DEVICEARRIVAL. Открываешь лоток - срабатывает DBT_DEVICEREMOVECOMPLETE. Так что подожди с "не то", а попробуй сначала :-)


ага, выдвинул. диск вытащил. и все...  реакции нет. что дальше? ;-)


 
ssk   (2004-03-16 15:45) [8]

>Dimaxx ©  (15.03.04 22:38) [6]

По крайней мере, я попробовал. Как только диск вставили и он опознан - срабатывает DBT_DEVICEARRIVAL. Открываешь лоток - срабатывает DBT_DEVICEREMOVECOMPLETE. Так что подожди с "не то", а попробуй сначала :-)


ага, выдвинул. диск вытащил. и все...  реакции нет. что дальше? ;-)


 
ssk   (2004-03-16 15:47) [9]

забыл написать, что при этом пустой лоток задвинул обратно


 
ssk   (2004-03-16 15:47) [9]

забыл написать, что при этом пустой лоток задвинул обратно


 
Dimaxx ©   (2004-03-16 22:06) [10]

2 ssk: Пустой? А что же ему опознавать - вот и реакции ноль.

2 Gero: У меня все работает, писал граббер аудиодисков и применил код для обновления окна с содержимым диска. Все работает на "ура". Пример выдрал из работающего проекта. Так что ищи ошибку.


 
Dimaxx ©   (2004-03-16 22:06) [10]

2 ssk: Пустой? А что же ему опознавать - вот и реакции ноль.

2 Gero: У меня все работает, писал граббер аудиодисков и применил код для обновления окна с содержимым диска. Все работает на "ура". Пример выдрал из работающего проекта. Так что ищи ошибку.


 
Dimaxx ©   (2004-03-16 22:08) [11]

...у себя. :-)


 
Dimaxx ©   (2004-03-16 22:08) [11]

...у себя. :-)


 
Gero ©   (2004-03-16 22:20) [12]

> Так что ищи ошибку ...у себя

Интересно, какую я мог допустить ошибку, используя Copy/Paste? ;)
Не знаю, как у Вас, я у меня Ваш код не работает.


 
Gero ©   (2004-03-16 22:20) [12]

> Так что ищи ошибку ...у себя

Интересно, какую я мог допустить ошибку, используя Copy/Paste? ;)
Не знаю, как у Вас, я у меня Ваш код не работает.


 
ssk   (2004-03-17 11:50) [13]

>Dimaxx ©  (16.03.04 22:06) [10]
Пустой? А что же ему опознавать


согласен 100%, но все же смотрим вопрос: каким образом мне отследить попытку открытия сидирома

а ведь неизвестно, есть ли диск в приводе или нет...


 
ssk   (2004-03-17 11:50) [13]

>Dimaxx ©  (16.03.04 22:06) [10]
Пустой? А что же ему опознавать


согласен 100%, но все же смотрим вопрос: каким образом мне отследить попытку открытия сидирома

а ведь неизвестно, есть ли диск в приводе или нет...


 
Dimaxx ©   (2004-03-17 23:42) [14]

Так и говори "любую попытку, вне зависимости от наличия диска". В MCI вроде есть функция проверки статуса сидюка, но не помню какая.

2 Gero: Надеюсь, из раздела private скопировал объяву? Могу выслать работающий пример с полным исходником.


 
Dimaxx ©   (2004-03-17 23:42) [14]

Так и говори "любую попытку, вне зависимости от наличия диска". В MCI вроде есть функция проверки статуса сидюка, но не помню какая.

2 Gero: Надеюсь, из раздела private скопировал объяву? Могу выслать работающий пример с полным исходником.


 
Gero ©   (2004-03-17 23:48) [15]

> Могу выслать работающий пример с полным исходником

Высылайте, мне будет интересно посмотреть.


 
Gero ©   (2004-03-17 23:48) [15]

> Могу выслать работающий пример с полным исходником

Высылайте, мне будет интересно посмотреть.


 
Diamond Cat ©   (2004-03-17 23:59) [16]

Когда-то давно эта тема уже обсуждалась, и все пришли к выводу , что отследить открытие лотка сд невозможно если лоток открывается с помощью кнопки, если открывать с помощью команды меню то нет проблем. Поищите в архивах за прошлый год


 
Diamond Cat ©   (2004-03-17 23:59) [16]

Когда-то давно эта тема уже обсуждалась, и все пришли к выводу , что отследить открытие лотка сд невозможно если лоток открывается с помощью кнопки, если открывать с помощью команды меню то нет проблем. Поищите в архивах за прошлый год



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.041 c
4-1079367573
Vilux
2004-03-15 19:19
2004.05.09
Использование sendmessage


1-1082883969
Артем К.
2004-04-25 13:06
2004.05.09
Как вызвать диалог выбора папки?


1-1082375157
wicked
2004-04-19 15:45
2004.05.09
virtual vs не-virtual


1-1082033709
avgur
2004-04-15 16:55
2004.05.09
Вопрос по экспорту в Excel (FastReport v 2.5)


4-1078822013
twinc
2004-03-09 11:46
2004.05.09
WinXP shutdown





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский