Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Столкнулся с проблемой программного нажатия node элемента TreeView в другом приложении. Может кто подсказать где ошибка? Код: plaintext 1. 2. 3. 4. 5. 6. и ничего не работает Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 10:50 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnix, подозреваю, что память под NMHDR нужно выделять в другом приложении(VirtualAllocEx, WriteProcessMemory) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 11:40 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Изопропил, Я выделял память когда читал этот treeview и искал хэндлов нода treeview. А тут мне нужно просто вызвать функцию связанную с данным нодом. Разве для этого нужно выделять память? И как тогда будет запускаться обработчик. (Пишу со смартфона. Возможны опечатки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 11:56 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnixЯ выделял память когда читал этот treeview и искал хэндлов нода treeview. это же память в твоём приложении, а не в том, где treeview живёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 12:21 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnixВсем доброго времени суток! Столкнулся с проблемой программного нажатия node элемента TreeView в другом приложении. Может кто подсказать где ошибка? Код: plaintext 1. 2. 3. 4. 5. 6. и ничего не работает Заранее благодарен Так не будет работать, ты вообще не можешь послать это сообщение другому приложению. Оно содержит адрес структуры NMHDR в посылающем приложении, к памяти которого у принимающего приложения нет доступа. К тому же, код вообще неправильный -- NMHDR -- это только общая часть всех структур нотификаций контролов COMMCLL32, а посылать ты должен не её, а её "наследников" -- это описано в описании конкретного нотификационного сообщения , NM_DBLCLK в данном случае. Плюс к этому -- структура неверно заполнена. Не заполнен в частности размер структуры в заголовке. В общем, всё не так, и у тебя это вряд ли получится вообще. Тебе надо изучить примеры приложений из MSDN, работающие с конкретным контролом из COMMCLL32, и сначала добиться работы с контролом, локальным в данном приложении. Затем исследовать уже посылку удалённому приложению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 13:52 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
ИзопропилlnixЯ выделял память когда читал этот treeview и искал хэндлов нода treeview. это же память в твоём приложении, а не в том, где treeview живёт Windows по идее может это просекать и копировать временно данные в память другого приложения. Потоки он же синхронизирует при посылке сообщений, почему бы и это не сделать ? Делается или нет, я не помню. Надо исследовать MSDN или Рихтера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 13:54 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
MasterZivWindows по идее может это просекать и копировать временно данные в память другого приложения. но далеко не для всех сообщений. WM_COPYDATA - да. а вот разбираться в деталях тривью - это слишком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 14:37 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Точно знаю что можно посылать, те кто это умеют делать не желают делиться даже примером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 18:03 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Может кто подсказать как правильно делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 18:36 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnixМожет кто подсказать как правильно делать? MSDN. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 19:44 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Чтоб меня опять не обвиняли в нелояльности к новичкам, процитирую: MSDNFor Windows 2000 and later systems, the WM_NOTIFY message cannot be sent between processes. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 19:49 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
какой интересный секс - https://social.msdn.microsoft.com/Forums/sqlserver/en-US/35fe9b1a-4602-4ac5-8a41-8e67798d4e7e/how-to-select-an-item-in-a-treeview-clicking-in-the-button-by-hwnd-api?forum=vbgeneral ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 19:51 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧтоб меня опять не обвиняли в нелояльности к новичкам, процитирую: MSDNFor Windows 2000 and later systems, the WM_NOTIFY message cannot be sent between processes. ну значит можно внедрить в чужой процесс dll и управлять контролом из родного процесса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 19:53 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Поиск нужного нода у меня реализован. Тоже самое только на с++. Работает, а вот как программно нажать выбранный нод не знаю. Изначально думал все просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 21:30 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnix, Я же говорю, у тебя так не получится. Тебе надо СНАЧАЛА научиться хотя бы управлять TreeView в своём процессе, только после этого лезть в чужой. Если даже ты как-то передашь это сообщение или внедришь .dll (что очень непросто), то у тебя всё равно ничего не будет работать, потому что код у тебя тупо неверный. А верный сделать для TreeView достаточно сложно, ну, в смысле, там заморочно и надо аккуратно всё делать. к тому же я подскажу другой путь -- не обязательно посылать WM_NOTIFY, можешь попробовать управлять TreeView, посылая ему сообщения мыши или клавиатуры. Ключевая особенность их в том, что сообщения эти должны содержать все данные в своих параметрах, LPARAM, WPARAM, и не содержать там ссылки на структуры в памяти, такие сообщения легко передаются другому процессу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 22:53 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnixПоиск нужного нода у меня реализован. Тоже самое только на с++. Работает, а вот как программно нажать выбранный нод не знаю. Изначально думал все просто. Что значит "нажать" ? выделить -- WM_SELECTITEM https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb773736(v=vs.85).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2016, 23:23 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Выбор нода тоже реализован. А вот за идею посылать сообщения мыши пасиб. Попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 08:39 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Я тут походил попил чаю, подумал, а ведь разве уведомление WM_NOTUFY в паре с NM_DBLCLK не является эмуляцией двойного нажатия левой кнопки мыши? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 09:55 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnix, хорошо, что ты подумал, но нет, не является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2016, 12:51 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
lnix, для начала: странно, что удалённое приложение не крешанулось. Ты передаёшь в SendMessage адрес из своего адресного пространства, соответственно то приложение будет обращаться по этому адресу в своём адресном пространстве и с вероятностью 100% упадёт. Тебя спасло только то, что WM_NOTIFY не кросс-процессное. потом: WM_NOTIFY - это уже реакция контрола в сторону родителя на какое-то событие (в данном случае) Идея послать вручную клик, в принципе, неплохая, но сама надобность так делать, уже настораживает. Что за задача вообще стоит изначально, что надо такое делать? Скорее всего ответ на этот вопрос решит все проблемы :) Чтобы отправить клик, нужно знать положение итема, для этого есть TVM_GETITEMRECT, и для четвёртого параметра нужно выделять память внутри чужого процесса, иначе тут точно навернётся. Сам клик шлётся функцией SendInput ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 05:36 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
CEMbдля четвёртого параметра нужно выделять память внутри чужого процесса, иначе тут точно навернётся. Не точно. Windows изначально писали не дураки, параметры системных сообщений они сериализуют и передают между адресными пространствами процессов нормально. При использовании WM_SETTEXT же ты не лезешь в память чужого процесса... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 13:45 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, WM_SETTEXT - особенное, а для большинства сообщений точно навернётся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 05:29 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
CEMb, для большинства как раз не навернётся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 09:48 |
|
||
|
TreeView NM_DBLCLK
|
|||
|---|---|---|---|
|
#18+
Изопропилдля большинства как раз не навернётсянапример? я навскидку только 2 могу сказать, wm_settext и wm_copydata. Все сообщения для получения инфы в контролах через структуры - навернутся. Приведите пример сообщения с передачей адреса какой-либо структуры, который не приводит к падению процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2016, 05:31 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39369169&tid=2018347]: |
0ms |
get settings: |
13ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 276ms |
| total: | 416ms |

| 0 / 0 |
