IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Сообщение WM_NOTIFY
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Вопрос такой, есть программа с панелькой, на панели на событии OnDrop (не помню точно, ну когда перетаскивают на неё что-то) висит обработчик. Я беру Spy++, цепляюсь к главному окну программы, перетаскиваю на панель файл, лог Spy++ оживляется, и среди других сообщений я замечаю WM_NOTIFY.

WM_NOTIFY idCtrl: 313894 pnmh: 0018ECF4

Что-то типа того, в нескольких экземплярах. Ну idCtrl мне не нужен, а как посмотреть содержимое структуры, на которую указывает второй адрес? То есть, я хочу знать, что мне воткнуть в sendmessage, чтобы сделать "перетаскивание" без фактического перетаскивания. Да и не только Drug&Drop с этим сообщением связан..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А ты не через Spy, а прямо из своей программы смотри, что за сообщение приходит.
И смотри на PNMHDN(LP)^
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Дык, если бы она была моя smile.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А по адресу тебя не пускают?
Кстати, по-моему, нотифи ничего не делает. Это просто сигнал, который приходит к главному окну.
Попробуй в лоб, через сообщения сэмулировать нажатие мышки, перетаскивание, отжатие.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Цитата
А по адресу тебя не пускают?


А куда его вбить, чтобы посмотреть содержимое структуры?

Ну, сэмулирую.. а что это даст? Да и сильно муторно это по-моему, как бы там с координатами не пришлось заморачиваться..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Хз, может в артамни какое-нибудь. Я ковырянием чужих прог отродясь не занимался.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
То есть, я хочу знать, что мне воткнуть в sendmessage, чтобы сделать "перетаскивание" без фактического перетаскивания.
Ты можешь без "наворотов" объяснить, чего надо-то? "Перетаскивание без фактического перетаскивания" - очень оригинально. Запуск без фактического запуска не надо? Или работу на компьютере без наличия компьютера фактически?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


ну, этта... Юзер перетаскивает текстовик в эту программку и что-то происходит, а я хочу нажимать кнопку, и чтобы то же самое происходило, без фактического перетаскивания, по факту отправки sendmessage с параметрами, которые я и хочу узнать..))


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Ну, эта... А что, у тебя Дельфи переклинило? smile.gif "Сабклассинг чужого окна прямым инжектом" забыл как делается? Перед вызовом "его" оконной процедуры все проходит через твою, и при наличии WM_NOTIFY ты легко и просто получаешь содержимое того участка памяти, на который указывает pnmh.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Да, и правда, что-то глуплю.. Ну тогда в SetWindowHookEx надо писать не HCBT_CREATEWND, а WM_NOTIFY, да?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Не-не-не... Я сказал не о хуке, сабклассинг делается по-другому. Гугл в помощь. Кстати, с хуками - тоже идея. Только не пытайся поймать WM_NOTIFY, используя WH_GETMESSAGE. Работай через WH_CALLWNDPROC:
Цитата
WH_CALLWNDPROC
Windows вызывает этот хук при каждом вызове функции SendMessage. Фильтрующей функции передается код хука, показывающий, была ли произведена посылка сообщения из текущего потока, а также указатель на структуру с информацией о сообщении.
<...>
Этот хук использует значительное количество системных ресурсов, особенно, когда он установлен с системной областью видимости, поэтому используйте его только в целях отладки.
Тебе как раз для отладки.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 1:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name