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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.45 MB
Время: 0.049 c
15-1232383209
Добежал
2009-01-19 19:40
2009.03.29
Запретить Windows уходить в hibernate и отключать экран


1-1208173651
denmin
2008-04-14 15:47
2009.03.29
Как обратится к компоненту созданному через TCustomControl


1-1208755921
OlBan
2008-04-21 09:32
2009.03.29
TAPDComport и модем


2-1234172245
TTLr
2009-02-09 12:37
2009.03.29
Подскажите как склеить 2 таблицы


4-1206962512
Kolan
2008-03-31 15:21
2009.03.29
Получить букву подкл/откл флешки.





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