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

Вниз

Работа с USB   Найти похожие ветки 

 
Igor_thief   (2005-09-08 17:55) [0]

Как отловить момент вставки USB flash drive и запустить с него определенный файл, если онный присутсвует?


 
Германн ©   (2005-09-08 18:03) [1]

Autorun.inf  ?


 
Igor_thief   (2005-09-08 18:14) [2]

Германн ©   (08.09.05 18:03) [1]
Да, новедь флэш память это не сд с бут сектором.


 
Кефир87 ©   (2005-09-08 18:16) [3]

Для Autorun.inf тоже бут сектор не нужен 8)


 
Igor_thief   (2005-09-08 18:33) [4]

Кефир87 ©   (08.09.05 18:16) [3]
Как отловить момент вставки USB flash drive и запустить с него определенный файл, если онный присутсвует?

Как отловить момент вставки USB flash drive и запустить с него определенный файл, если онный присутсвует?
Определенным может быть не только авторан файл!


 
TUser ©   (2005-09-09 07:49) [5]

Не знаю - спасет или нет, то возможно момент вставки флешки можно отловить через FindFirstChangeNotification/ReadDirectoryChangesW


 
AlexWlad ©   (2005-09-09 20:21) [6]

А ведь должно быть событие на добавление нового логического диска. Если поискать в MSDN толково, то должно найтись.


 
OldNaum ©   (2005-09-09 20:30) [7]

"ребята" дело бормочут про авторан ) структура у него как у INI. секция [autorun], поле open (насколько я помню, но думаю тебя не затруднит уточнить) - присваиваешь путь к файлу, который будем запускать. попробуй, не отказывайся от этого варианта. я бы первым делом его глянул. прощу по-моему некуда.


 
ssk ©   (2005-09-10 08:58) [8]

причем тут авторан.инф? насколько я понял задачу, то работает сторонее приложение и нужно отловить вставку флешки. лично бы я для начала попробовал совет #6 (событие на добавление нового логического диска) - он проще. а затем начал заморачиваться с #5(FindFirstChangeNotification/ReadDirectoryChangesW)


 
Virgo_Style ©   (2005-09-10 08:59) [9]

Некоторые события USB-устройств ловятся так:

const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;

procedure TForm1.WMDeviceChange(var Message: TMessage);
           var
             s : string;
           begin
           {Do Something here}
             case Message.wParam of
               DBT_DEVICEARRIVAL :
                 s := "A device has been inserted and is now available";
               DBT_DEVICEQUERYREMOVE: begin
                 s := "Permission to remove a device is requested";
                 ShowMessage(s);
                {True grants premission}
                 Message.Result := integer(true);
                 exit;
               end;
               DBT_DEVICEQUERYREMOVEFAILED :
                 s := "Request to remove a device has been canceled";
               DBT_DEVICEREMOVEPENDING :
                 s := "Device is about to be removed";
               DBT_DEVICEREMOVECOMPLETE :
                 s := "Device has been removed";
               DBT_DEVICETYPESPECIFIC :
                 s := "Device-specific event";
               DBT_CONFIGCHANGED :
                 s:= "Current configuration has changed"
               else s := "Unknown Device Message";
             end;
             ShowMessage(s);
             inherited;
           end;

Откуда взял - не помню...


 
Virgo_Style ©   (2005-09-10 09:01) [10]

Virgo_Style ©   (10.09.05 8:59) [9]

type
              TForm1 = class(TForm)
                Button1: TButton;
              private
                { Private declarations }
                procedure WMDeviceChange(var Message: TMessage);
                  message WM_DEVICECHANGE;
              public
                { Public declarations }
              end;


 
Igor_thief   (2005-09-10 17:50) [11]

Большое всем спасибо! Буду играться:)


 
Igor_thief   (2005-09-16 20:03) [12]

Реализовывая сабж. надыбал в винде БАГ! Проверял на нескольких машинах - внатуре баг.


 
iskatel ©   (2005-09-16 20:05) [13]

сами то пробовали авторан? я пробовал -на флешке не работает


 
Igor_thief   (2005-09-16 20:08) [14]

iskatel ©   (16.09.05 20:05) [13]
А никто и не говорил что работает!


 
Игорь Шевченко ©   (2005-09-16 20:42) [15]

Igor_thief   (16.09.05 20:03) [12]


> надыбал в винде БАГ!


Боюсь, что баг в другом месте.

iskatel ©   (16.09.05 20:05) [13]


> сами то пробовали авторан? я пробовал -на флешке не работает


В XP тоже не работает ?


 
OldNaum ©   (2005-09-16 21:39) [16]

Igor_thief   (16.09.05 20:03) [12]
"баг" в студию ) а то аж заинтриговал )


 
iskatel ©   (2005-09-16 21:41) [17]

не знаю, я в 2000 пробовал


 
Игорь Шевченко ©   (2005-09-16 22:10) [18]

iskatel ©   (16.09.05 21:41) [17]


> не знаю, я в 2000 пробовал


"Windows XP reflects the rapid growth of consumer multimedia with an expanded Autoplay feature. In addition to refining the existing Autorun.INF mechanism, audio CD Autoplays, and DVD video Autoplay, support has been added to handle digital music (WMA/MP3), graphics, video, CD burning, video cameras, and other hardware devices"

Почему спрашиваю про XP, потому что в XP отключал возможность Autoplay для магнитооптических дисков путем правки реестра. А где выключается, там и включается.


 
Igor_thief   (2005-09-17 13:17) [19]

Игорь Шевченко ©   (16.09.05 20:42) [15]
Боюсь, что баг в другом месте.

Нет, боюсь что таки в винде. Баг заключается в следующем:
1. Вставьте флэшку в юсб (запомните букву подсоединяемого диска; например F);
2. Извлеките флэшку;
3. Подсоедините сетевой диск (Сетевое окружение: Меню сервис->подключить сетевой диск) и в качестве буквы укажите ту, которую запомнили в пункте 1 (F);
4. Теперь снова подсоедините флэшку;
Вуаля! Смотрим что мы видим в качестве диска F. Прикольно? А теперь снова отсоединяем флэшку/сетевой диск и снова смотрим что получилось. Вот так вот!


 
DrPass ©   (2005-09-17 15:33) [20]

А ты не присваивай сетевому диску ту букву, которую использует флешка :)


 
Igor_thief   (2005-09-17 18:52) [21]

DrPass ©   (17.09.05 15:33) [20]
А если хочется/надо, то что?


 
Игорь Шевченко ©   (2005-09-18 13:34) [22]

Igor_thief   (17.09.05 13:17) [19]

А почему это баг ?


 
Anatoly Podgoretsky ©   (2005-09-18 13:44) [23]

Igor_thief   (17.09.05 13:17) [19]
Это баг, но не системы.


 
Igor_thief   (2005-09-18 17:42) [24]

Игорь Шевченко ©   (18.09.05 13:34) [22]
А что, может хотите сказать что это правильная работа?

Anatoly Podgoretsky ©   (18.09.05 13:44) [23]
А чей?


 
Игорь Шевченко ©   (2005-09-18 21:12) [25]

Igor_thief   (18.09.05 17:42) [24]


> А что, может хотите сказать что это правильная работа?


Локальные диски всегда имеют приоритет при назначении букв, так Windows устроена. Они по времени раньше определяются. Хочешь изменить поведение - назначь в Disk Adminstrator флешке букыу, не пересекающуюся с буквами сетевых дисков, это несложно.


 
REA   (2005-09-19 10:29) [26]

Че то вы ушли от топика. Если авторан не работает, что сомнительно, то можно использовать [9] или готовый компонент для работы с USB на джедайском сайте. Правда он для HID устройств, но может подойдет.


 
Igor_thief   (2005-09-19 19:18) [27]

Игорь Шевченко ©   (18.09.05 21:12) [25]
Понятное дело, что решение состоит в выборе другой быквы. Я ведь не спросил как обойти баг, я просто сказал что он присутсвует.

REA   (19.09.05 10:29) [26]
Про авторан зря сомневаешься.
Я воспользовался вариантом [9].

Всем спасибо!


 
Игорь Шевченко ©   (2005-09-20 11:35) [28]


> Я ведь не спросил как обойти баг, я просто сказал что он
> присутсвует


Это не баг.



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

Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.015 c
14-1126857838
ocean
2005-09-16 12:03
2005.10.09
Упрямство


5-1102409681
sql
2004-12-07 11:54
2005.10.09
DBGrid не возвращает фокус


1-1127201618
Barloggg
2005-09-20 11:33
2005.10.09
Какой вызов процедуры быстрее?


14-1127210398
ПЛОВ
2005-09-20 13:59
2005.10.09
Напомните...


1-1127137241
all
2005-09-19 17:40
2005.10.09
подскажите как узнать список папок





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