Привет всем.
Вопрос такой, есть программа с панелькой, на панели на событии OnDrop (не помню точно, ну когда перетаскивают на неё что-то) висит обработчик. Я беру Spy++, цепляюсь к главному окну программы, перетаскиваю на панель файл, лог Spy++ оживляется, и среди других сообщений я замечаю WM_NOTIFY.
WM_NOTIFY idCtrl: 313894 pnmh: 0018ECF4
Что-то типа того, в нескольких экземплярах. Ну idCtrl мне не нужен, а как посмотреть содержимое структуры, на которую указывает второй адрес? То есть, я хочу знать, что мне воткнуть в sendmessage, чтобы сделать "перетаскивание" без фактического перетаскивания. Да и не только Drug&Drop с этим сообщением связан..
А ты не через Spy, а прямо из своей программы смотри, что за сообщение приходит.
И смотри на PNMHDN(LP)^
Дык, если бы она была моя
А по адресу тебя не пускают?
Кстати, по-моему, нотифи ничего не делает. Это просто сигнал, который приходит к главному окну.
Попробуй в лоб, через сообщения сэмулировать нажатие мышки, перетаскивание, отжатие.
Хз, может в артамни какое-нибудь. Я ковырянием чужих прог отродясь не занимался.
ну, этта... Юзер перетаскивает текстовик в эту программку и что-то происходит, а я хочу нажимать кнопку, и чтобы то же самое происходило, без фактического перетаскивания, по факту отправки sendmessage с параметрами, которые я и хочу узнать..))
Ну, эта... А что, у тебя Дельфи переклинило? "Сабклассинг чужого окна прямым инжектом" забыл как делается? Перед вызовом "его" оконной процедуры все проходит через твою, и при наличии WM_NOTIFY ты легко и просто получаешь содержимое того участка памяти, на который указывает pnmh.
Да, и правда, что-то глуплю.. Ну тогда в SetWindowHookEx надо писать не HCBT_CREATEWND, а WM_NOTIFY, да?
Не-не-не... Я сказал не о хуке, сабклассинг делается по-другому. Гугл в помощь. Кстати, с хуками - тоже идея. Только не пытайся поймать WM_NOTIFY, используя WH_GETMESSAGE. Работай через WH_CALLWNDPROC: