Форум: "WinAPI";
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];
ВнизПередача сообщения своей программе Найти похожие ветки
← →
nikkie (2001-12-20 10:05) [7]>Dimaond Cat
>Сообщения шлются не окнам (это лишь картинка), а обработчикам
ты сам понимаешь, что говоришь? какая картинка, какие такие обработчики? а HWND в SendMessage - это тоже картинка?
>ikar
чем дальше в лес, тем более интересные подробности выясняются. проблема в том, что в момент срабатывания системный хук в dll находится в адресном пространстве другого процесса.
если ты посмотришь параметры SendMessage и PostMessage - есть два 4 байтовых параметра wParam и lParam. если тебе достаточно передать в твоем сообщении 2 числа - очень хорошо, если же тебе надо передать бОльшую структуру данных, то передать указатель на нее через, скажем, wParam можно только внутри своего процесса - этот указатель в пространстве другого процесса смысла не имеет.
однако есть специальное сообщение WM_COPYDATA, которое позволяет передать данные из одного процесса в другой. как его использовать - лучше прочитай хелп. в частности там сказано, что нельзя использовать это сообщение в PostMessage. поэтому если твой обработчик этого сообщения будет тормозить - получится то, чего ты боишься. значит при обработке WM_COPYDATA надо просто скопировать переданные данные куда-то, а обработку отложить сделав, например, PostMessage самому себе.
если не зацикливаться на сообщениях, то есть еще несколько способов ipc (inter-process communication): pipes, file mapping, sockets, com. вот только кажется, что некоторые (если не все) из этих способов будет тяжело использовать в системном хуке. я надеюсь, тебе все-таки 2 * 4 байта хватит...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c