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

Вниз

Включение/выключение устройства   Найти похожие ветки 

 
GEN++ ©   (2005-07-12 21:04) [0]

При этих ситуациях система генерит сообщеение VM_DEVICECHANGE
(под Win 98 - 4 раза под XP - 3 раза)
В справке указано, что парамеры передают тип события, но
приводятся они только в символьном виде)
У меня проблема, отследить появление/снятие Comm порта
сидященго на USB под драйвером CP2101(при отключении/установке
кабеля). Закрытие приложения при снятии кабеля тянет за собой
"синий экран, если не предпринять мер.
Вопрос: как грамотно разобрать сообщение.
Заранее спасибо.


 
simpson ©   (2005-07-12 21:27) [1]

Return Values
Return TRUE to grant the request.

Return BROADCAST_QUERY_DENY to deny the request.

Remarks
For devices that offer software-controllable features, such as ejection and locking, the system typically sends a DBT_DEVICEREMOVEPENDING message to let applications and device drivers end their use of the device gracefully. If the system forcibly removes a device, it may not send a DBT_DEVICEQUERYREMOVE message before doing so.

Читал?


 
Virgo_Style ©   (2005-07-12 22:08) [2]

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;


Откуда взял - не помню...


 
GEN++ ©   (2005-07-20 20:24) [3]

>Virgo_Style
 Спасибо! Кое-чем помогло.
 Под Win 98 все нормально, но вот под XP
 поблема следующая: на некоторох компах
генерится параметр $8000 при восстановлении устройства
и $8004 при удалении, но на Ноуте в качестве параментра
устойчиво, 3 раза подряд выдается 0 как  при активизации
устройства, так и при его физическом удаплении. В панели
появление и удаление устройства четко отслеживается.
 Может быть все же кто-нибудь с этим работал. Нужна помощь.



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

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

Наверх




Память: 0.46 MB
Время: 0.01 c
4-1122024296
Zak3D[@Tm]
2005-07-22 13:24
2005.09.11
Как удалить дирректорию с файлами?


9-1116200825
Mortis
2005-05-16 03:47
2005.09.11
3ds in Delphi


14-1123689907
kamerer
2005-08-10 20:05
2005.09.11
Документация по компонентам VCL


5-1098864782
Sysa
2004-10-27 12:13
2005.09.11
Как сделать свою кнопку


1-1124209314
Aleksandrrr
2005-08-16 20:21
2005.09.11
блокировка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский