Re[7]: WndProc пропускаются сообщения WM_DEVICECHANGE
От: Alex74 Россия  
Дата: 25.10.20 10:20
Оценка: -3
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Во-первых, это бессмысленно, поскольку Вы, еще раз повторю, не понимаете основ, без которых Вам не сделать надежно работающей программы. Ковыряя код и применяя интуитивные костыли, Вы в лучшем случае сделаете кривую поделку, за которую кто-то заплатит, как за качественную программу. Не вижу смысла помогать Вам в этом.


Ну да, САМОЕ ВРЕМЯ ПОСЧИТАТЬ ЧУЖИЕ ДЕНЬГИ

ЕМ>Во-вторых, Ваше необоснованное, но старательно демонстрируемое возмущение там, где следовало бы быть вдумчивости, совершенно не порождает желания идти навстречу.


Во что вдумываться? То что я ТУПОЙ по Вашим словам?

A>>ГДЕ НАЙТИ ДАННЫЕ, которые НЕ ДОШЛИ?


ЕМ>В грамотно (в соответствии с системными принципами и рекомендациями) написанную программу все эти данные доходят всегда.


ЕЩЕ РАЗ повторюсь!!! Мой вопрос "ПОЧЕМУ НЕ ДОХОДЯТ ДАННЫЕ???" вы еще не поняли О ЧЕМ Я СПРАШИВАЮ?

PS. Спасибо, ЧТО Я ТУПОЙ И НЕГРАМОТНЫЙ — это я уже понял.
Re: WndProc пропускаются сообщения WM_DEVICECHANGE
От: VladFein США  
Дата: 28.10.20 00:08
Оценка: +1
Здравствуйте, Alex74, Вы писали:

A>Можно как-то вылечить эту проблему?


Я бы попробовал Spy++ с фильтром на WM_DEVICECHANGE. На Вашем окне, и на каком-то другом, не .NET (все top level окна должны это получать).
Re[2]: WndProc пропускаются сообщения WM_DEVICECHANGE
От: Alex74 Россия  
Дата: 31.10.20 12:18
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, Alex74, Вы писали:


A>>Можно как-то вылечить эту проблему?


VF>Я бы попробовал Spy++ с фильтром на WM_DEVICECHANGE. На Вашем окне, и на каком-то другом, не .NET (все top level окна должны это получать).


Спасибо за совет. Хотя (надо работать, а не бесконечно мучать "нерешаемую проблему") реализовал поиск подключения через таймер (пока все не подключено, раз в секунду проверять порты) попробовал Spy++

protected override void WndProc у меня остался, но закомментирован.
вот результат Spy++ на работающей программе

...
<000381> 00010990 R WM_PRINTCLIENT
<000382> 00010990 S WM_DEVICECHANGE Event:0007 dwData:00000000
<000383> 00010990 R WM_DEVICECHANGE fComplete:True
<000384> 00010990 S WM_DEVICECHANGE Event:DBT_DEVICEARRIVAL dwData:0774DDE8
<000385> 00010990 R WM_DEVICECHANGE fComplete:True
<000386> 00010990 S WM_DEVICECHANGE Event:0007 dwData:00000000
<000387> 00010990 R WM_DEVICECHANGE fComplete:True
<000388> 00010990 S WM_CTLCOLORBTN hdcButton:4C0110B1 hwndButton:00010AD6
...
...
<000423> 00010990 S WM_GETTEXT cchTextMax:12 lpszText:012FCFD4
<000424> 00010990 R WM_GETTEXT cchCopied:5 lpszText:012FCFD4 ("F")
<000425> 00010990 R WM_PRINTCLIENT
<000426> 00010990 S WM_DEVICECHANGE Event:DBT_DEVICEREMOVECOMPLETE dwData:0774DDE8
<000427> 00010990 R WM_DEVICECHANGE fComplete:True
<000428> 00010990 S WM_DEVICECHANGE Event:0007 dwData:00000000
<000429> 00010990 R WM_DEVICECHANGE fComplete:True
<000430> 00010990 S WM_DEVICECHANGE Event:DBT_DEVICEREMOVECOMPLETE dwData:0774E088
<000431> 00010990 R WM_DEVICECHANGE fComplete:True

Ненадежно очень
При "одновременном" подключении ТРЕХ портов. только одно сообщение Event:DBT_DEVICEARRIVAL
При "одновременном" отключении ТРЕХ портов. только два Event:DBT_DEVICEREMOVECOMPLETE

Не знаю кто (что) виноват(о), но четко видно, что до ФОРМЫ добираются НЕ ВСЕ сообщения WM_DEVICECHANGE
Терять время дальше считаю НЕЦЕЛЕСООБРАЗНО...
Re[2]: WndProc пропускаются сообщения WM_DEVICECHANGE
От: Alex74 Россия  
Дата: 31.10.20 12:25
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, Alex74, Вы писали:


A>>Можно как-то вылечить эту проблему?


VF>Я бы попробовал Spy++ с фильтром на WM_DEVICECHANGE. На Вашем окне, и на каком-то другом, не .NET (все top level окна должны это получать).


ДОПОЛНЕНИЕ к предыдущему ответу:

Выбрал случайное окно в spy++ — результат такой-же подключаются и отключаются три устройства, результат на скриншоте. Доставка этих сообщений "случайна" не гарантирована, а "как получится"
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.