Главная страница
    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.042 c
2-1234257405
Scot Storch
2009-02-10 12:16
2009.03.29
службы (сервисы)


2-1233732829
проходил мимо решил зайти
2009-02-04 10:33
2009.03.29
Сортировка данных таблице


8-1190302772
brother
2007-09-20 19:39
2009.03.29
Peak Meter реального времени


15-1232949323
El
2009-01-26 08:55
2009.03.29
Исходные тексты программ


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