Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отловить событие вставки USB, Втыкаю flash-ку, и прога узнает об этом 
V
    Опции темы
andrew_121
Дата 14.1.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 2
Всего: 33



Здравствуйте.
Вопрос в следующем: Нужно чтоб при втыкании флешки программа получа сигнал. Или же сканировать USB порты, и определять - появилось ли что-то новое.
Как это сделать?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
THandle
Дата 14.1.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



andrew_121, лови WM_DEVICECHANGE с wParam = DBT_DEVICEARRIVAL.
PM   Вверх
andrew_121
Дата 14.1.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 2
Всего: 33



THandle, Спасибо!
Проблема только в том, что программа написана на Qt, и как запустить цикл обработки событий, я не в курсе. 
Щас скину вопрос об этом в другой раздел.



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Earnest
Дата 14.1.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(andrew_121 @  14.1.2009,  18:02 Найти цитируемый пост)
как запустить цикл обработки событий, я не в курсе. 

Тебе не надо запускать цикл обработки, тебе нужно добавить обработчик конкретного события.


--------------------
...
PM   Вверх
andrew_121
Дата 14.1.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 2
Всего: 33



Earnest, Прошу прощения за неправильность формулировки. Я думаю Вы поняли о чем речь.
Так как в Qt глобально перехватывать сообщения?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Earnest
Дата 14.1.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Нет, действительно, не поняла. Лучше спросить в соответствующем разделе.


--------------------
...
PM   Вверх
jonie
Дата 15.1.2009, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



есть подозрения что получится с куте через очень хитрозакрученную жопу. не вижу никаких проблем сделать динамическую библиотеку (для винды чисто), чтобы она сама создавала себе скрытое окно (а в NT5+ есть спец типы окон для этих целей) и уведомляла qt прогу посредством сигналов о вставке (или как там делается "по уму")...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
andrew_121
Дата 15.1.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 2
Всего: 33



jonie, Спасибо!!!
Вопрос уже решен: http://www.prog.org.ru/index.php?topic=836...g45556#msg45556
Всем огромное СПАСИБО!!!

Это сообщение отредактировал(а) andrew_121 - 15.1.2009, 10:35


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
ProgramerKo
  Дата 20.1.2009, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Earnest, можешь пример дать? (для VS или BCB)

Это сообщение отредактировал(а) ProgramerKo - 20.1.2009, 01:38
PM MAIL   Вверх
Dem_max
Дата 20.1.2009, 05:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 16
Всего: 39



ProgramerKo, 
тебе под Qt или обычную WinAPI программу или VCL ? 



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
ProgramerKo
Дата 21.1.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



обычную ВинАпи програмку smile 
PM MAIL   Вверх
Dem_max
Дата 21.1.2009, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 16
Всего: 39



Код

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
   void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
        void __fastcall WMDeviceChange(TMessage& Msg);
        BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, WMDeviceChange)
        END_MESSAGE_MAP(TForm)
public:        // User declarations
   __fastcall TForm1(TComponent* Owner);
   bool __fastcall RegisterDeviceInterfaceToHwnd(GUID InterfaceClassGuid, HWND hWnd, HDEVNOTIFY *hDeviceNotify);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

и
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <Dbt.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
GUID WceusbshGUID = {0x25dbce51,0x6c8f,0x4a72,0x8a,0x6d,0xb5,0x4c,0x2b,0x4f,0xc8,0x35}; // для PnP
HDEVNOTIFY hDeviceNotify;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WMDeviceChange(TMessage &Msg)
{
  if(Msg.WParam == DBT_DEVICEARRIVAL) ShowMessage("Воткнули");
  if(Msg.WParam == DBT_DEVICEREMOVECOMPLETE) ShowMessage("Выткнули");

}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 RegisterDeviceInterfaceToHwnd(WceusbshGUID, Form1->Handle, &hDeviceNotify);
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::RegisterDeviceInterfaceToHwnd(GUID InterfaceClassGuid, HWND hWnd, HDEVNOTIFY *hDeviceNotify)
{
   DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;

   ZeroMemory(&NotificationFilter, sizeof(NotificationFilter) );
   NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
   NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
   NotificationFilter.dbcc_classguid = InterfaceClassGuid;

   *hDeviceNotify = RegisterDeviceNotification(hWnd, &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);

   if(NULL == *hDeviceNotify) return FALSE;

   return TRUE;
}



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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