Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Получить букву подкл/откл флешки.   Найти похожие ветки 

 
Kolan ©   (2008-03-31 15:21) [0]

Здравствуйте.
 ВОзможноесть более нормальный способ получить сабж, а я его незнаю&#133

Как я делаю.
1. Получаю WM_DEVICECHANGE.
2. Использую GetLogicalDrives
И сравниваю что было до и что сейчас. Таким образом нахожу букву.

function TUSBDrivesInspector.JustConnectedDeviceLetter(
 AOldDriveMask: DWORD): Char;
const
 MAX_DRIVES = 26;
var
 TempDeviceMask: DWORD;
 I: Integer;
 Let: array[0&#13326] of Boolean absolute TempDeviceMask;
begin
 TempDeviceMask := GetLogicalDrives;
 for I := 0 to MAX_DRIVES — 1 do
 begin
   {* (DeviceMask and (1 shl I)) <> 0 detects if drive letter exists.}
   if ((TempDeviceMask and (1 shl I)) <> 0) {Такой диск есть в новом наборе.}
     and (not ((AOldDriveMask and (1 shl I)) <> 0)) {И его нет в старом.}
   then
   begin
     Result := "A";
     Inc(Result, I);
     {if GetDriveType(PChar(Result+":\")) = DRIVE_REMOVABLE then
     begin
       Exit;
     end;}
   end;
 end;
end;


Нельзя ли в сообщении получить саму букву?


 
Cj ©   (2008-03-31 15:30) [1]

Chr()


 
Kolan ©   (2008-03-31 15:35) [2]

В смысле Chr()?


 
Riply ©   (2008-03-31 16:26) [3]

> [0] Kolan ©   (31.03.08 15:21)
> ВОзможноесть более нормальный способ получить сабж, а я его незнаю…

> Как я делаю.
> 1. Получаю WM_DEVICECHANGE.
> 2. Использую GetLogicalDrives
> И сравниваю что было до и что сейчас. Таким образом нахожу букву.

> Нельзя ли в сообщении получить саму букву?

Можно.

"lParam
Pointer to a structure that contains event-specific data. Its format depends on the value of the wParam parameter.
For more information, refer to the documentation for each event."

Например, для Event`ов DBT_DEVICEARRIVAL и DBT_DEVICEREMOVECOMPLETE
смотришь структуры: DEV_BROADCAST_HDR, DEV_BROADCAST_VOLUME
у них есть поле dbcv_unitmask которое и укажет тебе "номера" букв изменившихся устройсв.
"Logical unit mask identifying one or more logical units. Each bit in the mask corresponds to one logical drive.
Bit 0 represents drive A, bit 1 represents drive B, and so on."


 
Kolan ©   (2008-03-31 16:28) [4]

> у них есть поле dbcv_unitmask которое и укажет тебе &laquo;номера&raquo;
> букв изменившихся устройсв.

Блин&#133 а я подумул что dbcv_unitmask это тоже самое что и результат GetLogicalDrives.
Еще подумал зачем это надо&#133

Благодарствую :), пойду попробую.


 
Kolan ©   (2008-03-31 17:09) [5]

Отлично :) Работает :)
Благодарю.



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

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
15-1230126644
@!!ex
2008-12-24 16:50
2009.03.29
Lua работа с внешними классами как со своими родными


2-1233776507
Ramil
2009-02-04 22:41
2009.03.29
TEdit как калькулятор


1-1208165272
VictoR407
2008-04-14 13:27
2009.03.29
Кокое hook-имя клавиши ScrollLock?


2-1233824251
AlexDan
2009-02-05 11:57
2009.03.29
Запрет расширения формы


2-1233568023
Виктор
2009-02-02 12:47
2009.03.29
Как сменить язык ввода данных или включить клавишу Ins?