Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32

Не удается выполнить исходящий вызов, так как приложение обрабатывает входящий синхронный вызов

06.11.2017, 21:45. Показов 2993. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова добренького вечера)
Столкнулся с такой проблемой, может кто знает пути выхода из нее.
Есть процедура чтения свойств флешки:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure GetUSBID();
 var
Pos1 : LongInt ;
 begin
    CoInitialize(nil);
    try
      FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
      FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive Where InterfaceType="USB"',
      'WQL',wbemFlagForwardOnly);
      oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      while oEnum.Next(1, FWbemObject, iValue) = 0 do
      begin
         form2.label3.Caption :=FWbemObject.Caption;
 
                                      { определить позицию пробела }
       Pos1 := Pos( ' ', form2.label3.Caption) ;
       { если пробела нет - то сразу на выход }
       {if Pos1 = 0 then Exit ;   }
 
       { копируем из строки кусок с первого символа до позиции найденного пробела }
       form2.label3.Caption := Copy(form2.label3.Caption, 1, Pos1-1) ;
        //Form1.Memo1.Lines.Add(Format('USb Divace: "%s"   ID:"%s "',
       // [(FWbemObject.Caption),FWbemObject.PNPDeviceID]));
        VarClear(FWbemObject);
      end;
    finally
      CoUninitialize;
    end;
end;
И есть отлов подключения флешки:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
unction GetDrive(pDBVol: PDevBroadcastVolume): string; //Получаем букву драйва из структуры PDevBroadcastVolume
var
  i: Byte;
  Maske: DWORD;
begin
  Maske := pDBVol^.dbcv_unitmask;
  for i := 0 to 25 do begin
    if (Maske and 1) = 1 then Result := Char(i + Ord('A')) + ':';
    Maske := Maske shr 1;
  end;
end;
procedure TForm2.WMDeviceChange(var Msg: TMessage); //собственно ловим инсерт/еджект драйвов
  begin
  if Msg.wParam = DBT_DeviceArrival then
  begin //если засунули
     ShowMessage('вставили флешку'+Drive);
  
        end
 
 
 else if  Msg.wParam = DBT_DeviceRemoveComplete then begin //если выдернули
    Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
    ShowMessage(Drive);   
  end;
end;
end;
По отдельности они работают, но как только их соединяю:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.WMDeviceChange(var Msg: TMessage); //собственно ловим инсерт/еджект драйвов
  begin
  if Msg.wParam = DBT_DeviceArrival then
  begin //если засунули
     ShowMessage('вставили флешку'+Drive);
  GetUSBID();
        end
 
 
 else if  Msg.wParam = DBT_DeviceRemoveComplete then begin //если выдернули
    Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
    ShowMessage(Drive);   
  end;
end;
end;
сразу грустное окно приведенное на фото(((, у кого какие мысли как этого можно избежать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2017, 21:45
Ответы с готовыми решениями:

не удаётся выполнить исходящий вызов так как приложение обрабатывает
Привет! Нахожу запущенный процесс Internet Explorer. Получаю его интерфейс IID_WebBrowser2, и делаю Navigate... В некоторых случаях...

Как узнать входящий и исходящий сетевой траффик для Оракла?
Привет всем. Можно как-то узнать входящий и исходящий сетевой траффик для Оракла?

Есть ли способы учитывать входящий и исходящий трафик?
Может у компонента CPPWebBrowser есть какие-либо функции, позволяющие это делать или иные компоненты имеются. Интересует любая, близкая по...

6
5968 / 4544 / 1094
Регистрация: 29.08.2013
Сообщений: 28,164
Записей в блоге: 3
06.11.2017, 23:31
смотреть в отладчике что происходит

возможно между физической вставкой флэшки и получением данных с нее должна быть пауза - опрос, драйвера и тд и тп
а ты ей сразу "привет, флэшка".
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
07.11.2017, 20:54  [ТС]
Какие еще будут варианты?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,611
07.11.2017, 21:00
PostMessage окну своей формы. А в его обработчике уже вызов GetUSBID
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
08.11.2017, 20:16  [ТС]
а можно пример использования, ну если не сложно конечно
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
10.11.2017, 18:53  [ТС]
товарищи программисты помогите пожалуйста!!!

Добавлено через 21 час 35 минут
а если создать отдельный поток на выполнение этой функции?? У кого есть опыт работы с потоками
0
2 / 2 / 0
Регистрация: 02.01.2016
Сообщений: 82
Записей в блоге: 2
11.11.2017, 18:36
Еще есть в setupapi функции полезные, как альтернатива тормозному WNI :
CM_Get_Device_ID_Size, CM_Get_Device_ID, CM_Get_DevNode_Registry_Property

Вдруг пригодится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2017, 18:36
Помогаю со студенческими работами здесь

Вызов DCOM - Как настроить web приложение под IIS 6.0?
Привет У меня следующая конфигурация: IIS 6.0 крутится на Windows Server 2003 . В приложение требуется поддержка windows авторизация....

В фреймворке есть вызов двух методов сразу для одного обьект как так ?
<?= $form->field($model, 'email')->label('Почта')->input('email'); ?> функция label() используеться для наименования поля а ...

Вызов методов классов друг у друга (вызов метода из другого класса)
Есть несколько классов, которые могут вызывать методы (функции) друг у друга. Логика: класс1 имеет метод А, класс2 имеет метод Б, класс1...

Вызов запроса хранящегося в Access2000 и его вызов из VB, с получение Recordset.
Есть запрос хранящийся в БД Access2000. Как можно его вызвать из VB и получить от него Recordset?

Как в Windows XP выполнить вызов окна "Добавить задание" Планировщика заданий из окна "Выполнить"?
Необходимо вызвать окно "Мастер планирования заданий", которое вызывается через "Добавить задание" в планировщике. Вложил скрин. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru