Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> usb device detect 
V
    Опции темы
golfV
Дата 24.4.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



Доброго времени суток!
Есть такая проблемка. Написано небольшое консольное приложение по определению подключено усб устройство или отключенно например мышка. Обнаруживаю след образом
Код

LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, 
                         WPARAM wParam, LPARAM lParam)
{
    if (msg == WM_DEVICECHANGE)
    {
        count++;
    
        if (count ==4)
        {
            in = true;
            cout<<"connected"<<endl;
            count=0;
            SleepEx(2000, true); 
            system("cls");

        }
        else if(count ==1 && in==true)
        {
            cout<<"disconnected"<<endl;
            count=0;
            SleepEx(2000, true); 
            in=false;
            system("cls");
        }
        
    }

    return 1;
}

проблема в том что когда запускаеш приложение и устройство не подключенно и потом его подключаеш то все работает хорошо(так как приходит 4 сообщения я считаю их кол-ва и переменная in ставится в true). А когда запускаеш приложение с уже подключенным устроиством и отключаеш его то 
ничего несрабатывает так как программа незнает что оно было подключенно и переменная in ==false. Может кто нить подскажет как можно это решить. Приложение обезательно должно быть консольным.

Это сообщение отредактировал(а) golfV - 24.4.2010, 12:24
PM MAIL   Вверх
borisbn
Дата 24.4.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата

wParam 
The event that has occurred. This parameter can be one of the following values from the Dbt.h header file.

Value Meaning 
DBT_CONFIGCHANGECANCELED
0x0019
 A request to change the current configuration (dock or undock) has been canceled.
 
DBT_CONFIGCHANGED
0x0018
 The current configuration has changed, due to a dock or undock.
 
DBT_CUSTOMEVENT
0x8006
 A custom event has occurred.

Windows NT 4.0 and Windows 95:  This value is not supported. 
DBT_DEVICEARRIVAL
0x8000
 A device or piece of media has been inserted and is now available.
 
DBT_DEVICEQUERYREMOVE
0x8001
 Permission is requested to remove a device or piece of media. Any application can deny this request and cancel the removal.
 
DBT_DEVICEQUERYREMOVEFAILED
0x8002
 A request to remove a device or piece of media has been canceled.
 
DBT_DEVICEREMOVECOMPLETE
0x8004
 A device or piece of media has been removed.
 
DBT_DEVICEREMOVEPENDING
0x8003
 A device or piece of media is about to be removed. Cannot be denied.
 
DBT_DEVICETYPESPECIFIC
0x8005
 A device-specific event has occurred.
 
DBT_DEVNODES_CHANGED
0x0007
 A device has been added to or removed from the system.

Windows NT 4.0 and Windows Me/98/95:  This value is not supported. 
DBT_QUERYCHANGECONFIG
0x0017
 Permission is requested to change the current configuration (dock or undock).
 
DBT_USERDEFINED
0xFFFF
 The meaning of this message is user-defined.

проверяй, чему равен wParam. там есть "устройство отключается", "устройство отключено" и т.п.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
golfV
Дата 24.4.2010, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



в том то и дело что он возвращает только 0x0007 и всё. если подключать флешку или что то похожее то да он возвращает разные значения. А когда я подключаю мышку то wParam =0x0007 только когда подключаеш он посылает 4 раза а когда отключаеш 1 раза.

Это сообщение отредактировал(а) golfV - 24.4.2010, 18:57
PM MAIL   Вверх
borisbn
Дата 25.4.2010, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Как то слабо верится, что отличие только в количестве, ну да ладно. Можно после первого сообщения взвести таймер на несколько секунд, если пришло второе сообщение, выключить таймер, а при срабатывании таймера говорить "disconnect"
P.S. Что делаешь : подключаешь, отключаешь smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
golfV
Дата 25.4.2010, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



хочется всё таки как нить отловить DBT_DEVICEARRIVAL. слышал что это можно сделать с помощью RegisterDeviceNotification. Подскажите как это селать а то никак неразобраться

PM MAIL   Вверх
borisbn
Дата 25.4.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135





--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
golfV
Дата 25.4.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



всё разобрался! спасибо за помощь!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.