Типы программирования, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

Handle, пишет- нет такой переменной
DLL и потоки!, Остановить DLL!!!
Delphi, API, Message, Где найти соответствующие константы
как пол. коорд. курсора мыши над TScroll
Реестр, Работа с реестром
Доступ к локальным дискам (XP), открытие\закрытие доступа...
Использование mlang.dll
Трей, Глюки в WinXP, Win2k
Как очистить экран в консольном приложении?
Лдюди объясните по русски как установить Rxlib, для Delphi 7.0
ошибка MItec, Помогите разобраться
Перенаправление ввода и вывода, Bind Shell
Текст вместо иконки
Браузер на Delphi
Помогите не могу понять!, Про окна
Как упрятать программу
Помогите с иконкой в трее!, иконка втрее
Как Вы относитесь к курящим девушкам?
IP адрес, связь
Кнопки, Интерес
Рисунок с рабочго стола по LAN, Рисунок с рабочго стола
Как распознать запуск другой проги?
Блокировка CD-ROMа
полосы прокрутки у TMemo & TListBox, как сделать их плоскими и другого цвета
Hook на процессы!, Отловить запуск и завершение процесса!
Ресурсы: окошки
Температура процессора, Как контролировать
Как загружать прогу в безопасном режиме
Идентификаторы в Delphi
Новый форум, Новый форум
Данные из клавы направить не туда.
как получить температуру?, как программно получить температуру?
ПРограммирование HASP-ключей, ЗАдали лабораторную .. ничего не понятно
Есть ли в Делфи реализация интерфейса, а-ля интерфейс как в Java ??
Как минимизировать приложение при старте ?, Мне казалось что это так просто...
Что такое хинты, и как их показывать
Запрет запуска хранителя экрана, при работе программы
Восстановление удалённых файлов
Поиск ехе, Поиск ехе в директориях
Работа с ОЗУ, как?
Как загрузить данные из Reources ?
А-у! Помогите, не работает детская процедура, Процедура сбора статистики работы СД
Как программно запретить вход в виндовс
убить заголовок окна, чужого
Работа в потоке, Ну, типа, работа в потоке
Как сделать окно поверх панели задач
Как вычислить подключение винта к USB
Как избежать LOg off/on при изменении реестра, Столкнулся с такой проблемой.
метод Synchonize объекта TThread
Функция типа TStringList
Где храняться пути для переменных окружения ?
Как сейчас на счет бесплатного Delphi 6 personal
Дефрагментация
Скрытие окна..., ...как это делает LiteAlloy
Как сделать, чтобы фокус ввода окна нельзя, отменить пока его не закроешь
Програмка для тестирования памяти, алгоритмы есть
Серийный номер процессора, Как получить?
Внедрение DLL
Как получить информацию запущен процесс или нет ??
Hook на печать, это возможно?
Текстурирование, как сделать скины для окон
Прочитать значение из оперативки, ID процесса известен, адрес тоже.
Надо прочитать куда нить значения из памяти, сабж
Как Вы относитесь к курящим девушкам?
объем физического диска под Win9x
Кто пробывал написать свой компилятор ??, Нужен ваш хелп.
WM_DEVICECHANGE, отслеживаем изменения одного устройства
Порты и Дельфи, HELP!!!!!!
CreateRemoteThread, как использовать?
Как это работает?, есть такая прога... LClock

Платные хостинги     Раскрутка сайта     Книги по программированию


Как вычислить подключение винта к USB

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Задача - засечь подключение винта к USB, и как только это произойдет, слить с него нужные файлы. Если кто сталкивался просьба поделиться примером кода.

- Наверное, проверять через определённое время, какие диски есть в системе. См. ф-цию GetDriveType. Надо посмотреть, что она выдаёт на флешку... Проверть не могу, сего девайса не имею.

- То dm9, согласен, можно и так. Но сомневаюсь, что винда имеенно так это делает. Она ж не проверяет каждый промежуток веремени все диски в системе. Мне так кажется. Когда подключаем винт в ЮСБ в трее появляется иконка, что подключили что-то к юсб. Вот как можно перехватить этот момент?

- Драйвер USB-контроллера в этот момент генерит в систему мессагу. Какую - ищи...

- Может попробовать WM_DEVICECHANGE ?+ RegisterDeviceNotification

- Код unit u_USB;interfaceuses   Windows, Messages, SysUtils, Classes, Forms;type  PDevBroadcastHdr = ^DEV_BROADCAST_HDR;  DEV_BROADCAST_HDR = packed record  dbch_size: DWORD;  dbch_devicetype: DWORD;  dbch_reserved: DWORD;end;  PDevBroadcastDeviceInterface = ^DEV_BROADCAST_DEVICEINTERFACE;  DEV_BROADCAST_DEVICEINTERFACE = record  dbcc_size: DWORD;  dbcc_devicetype: DWORD;  dbcc_reserved: DWORD;  dbcc_classguid: TGUID;  dbcc_name: short;end;const   GUID_DEVINTERFACE_USB_DEVICE: TGUID = '{A5DCBF10-6530-11D2-901F-00C04FB951ED}';  DBT_DEVICEARRIVAL = $8000; // system detected a new device  DBT_DEVICEREMOVECOMPLETE = $8004; // device is gone  DBT_DEVTYP_DEVICEINTERFACE = $00000005; // device interface classtype  TComponentUSB = class(TComponent)  private    FWindowHandle: HWND;    FOnUSBArrival: TNotifyEvent;    FOnUSBRemove: TNotifyEvent;    procedure WndProc(var Msg: TMessage);    function USBRegister: Boolean;  protected    procedure WMDeviceChange(var Msg: TMessage); dynamic;  public    constructor Create(AOwner: TComponent); override;    destructor Destroy; override;  published    property OnUSBArrival: TNotifyEvent read FOnUSBArrival write FOnUSBArrival;    property OnUSBRemove: TNotifyEvent read FOnUSBRemove write FOnUSBRemove;  end;implementationconstructor TComponentUSB.Create(AOwner: TComponent);begin   inherited Create(AOwner);  FWindowHandle := AllocateHWnd(WndProc);  USBRegister;end;destructor TComponentUSB.Destroy; begin  DeallocateHWnd(FWindowHandle);  inherited Destroy;end;procedure TComponentUSB.WndProc(var Msg: TMessage); begin   if (Msg.Msg = WM_DEVICECHANGE)  then begin    try      WMDeviceChange(Msg);    except      Application.HandleException(Self);    end;  end  else    Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam, Msg.lParam);end;procedure TComponentUSB.WMDeviceChange(var Msg: TMessage);var   devType: Integer;  Datos: PDevBroadcastHdr;begin  if (Msg.wParam = DBT_DEVICEARRIVAL) or     (Msg.wParam = DBT_DEVICEREMOVECOMPLETE)    then begin      Datos := PDevBroadcastHdr(Msg.lParam);      devType := Datos^.dbch_devicetype;      if devType = DBT_DEVTYP_DEVICEINTERFACE      then begin // USB Device        if Msg.wParam = DBT_DEVICEARRIVAL        then begin          if Assigned(FOnUSBArrival) then FOnUSBArrival(Self);        end        else begin          if Assigned(FOnUSBRemove) then FOnUSBRemove(Self);        end;      end;    end;end;function TComponentUSB.USBRegister: Boolean;var  dbi: DEV_BROADCAST_DEVICEINTERFACE;  Size: Integer;  r: Pointer;begin  Result := False;  Size := SizeOf(DEV_BROADCAST_DEVICEINTERFACE);  ZeroMemory(@dbi, Size);  dbi.dbcc_size := Size;  dbi.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE;  dbi.dbcc_reserved := 0;  dbi.dbcc_classguid := GUID_DEVINTERFACE_USB_DEVICE;  dbi.dbcc_name := 0;  r := RegisterDeviceNotification(FWindowHandle, @dbi,  DEVICE_NOTIFY_WINDOW_HANDLE);  if Assigned(r) then Result := True;end;end.highlightSyntax('delphi2ZGI1Z','delphi');

- Когда я писал прогу для своего цифровика, чтобы сливать автоматически файлы при его подключении, я добавил ее в список AutoPlay (появляется при подключении съемного диска). Правда есть один недостаток: работает только в XP. Это сообщение отредактировал Ivan Kolesnikov - 26.3.2005, 12:49

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | программирование 1с учебник | программирование сотовых | офшорное программирование | примеры линейное программирование | анализ программирование | программирование делфи | cgi программирование | программирование atmel | школа программирования | типы программирования | практика программирования | программирование autocad | программирование профессиональное | обзор языков программирования | среда программирования delphi | задачи целочисленного программирования | характеристика языка программирования | стиль программирования | постановка задачи программирование | программирование серверов | программирование диплом скачать | применение программирования | Ссылки

Все про практика программирования