Главная страница
    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.057 c
2-1233394030
Новичек
2009-01-31 12:27
2009.03.29
Установка текста в другом приложении.


15-1232607529
XentaAbsenta
2009-01-22 09:58
2009.03.29
Получить уведомление о всовывании флешки.


6-1200509623
Gbp
2008-01-16 21:53
2009.03.29
Как реализовать поддержку SSL в прокси-сервере?


6-1200923091
Maloj2007
2008-01-21 16:44
2009.03.29
Передача пакетов между IdTCPCllient и IdTCPServer


15-1232747860
Городской Шаман
2009-01-24 00:57
2009.03.29
Wine на 100% поддерживает D7 и программы на нём.





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