Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Shared Memory

19K
12 июля 2006 года
IoS
2 / / 12.07.2006
Добрый день,
Возникла такая проблема: нужно повесить хук WH_GETMESSAGE и со всех приложений информацию о получаемых сообщениях записывать в TMemo в моем приложении, чтобы потом повторить последовательность действий. Дело в следующем: хук на WH_GETMESSAGE я расположил в DLL, а образ этой DLL для каждого приложения отображается свой и поэтому в Memo записываются строки о событиях только на моем приложении, а при переводе мышки на другое хук сразу спадает, т.к. скорее всего DLL-образ не смог обратиться к моему адресному пространству. Есть ли какой-нибудь способ передавать массивы строк или TStringList между адресными пространствами?
Из DLL нахожу свой Memo по Pointer
 
Код:
procedure InitDLLData(MForm:Pointer);export;
var
  t:TPanel;
begin
  MainForm:=MForm;
  t:=TPanel(TForm(MainForm^).FindChildControl('targeterPanel'));
  ToWrite:=TMemo(t.FindChildControl('SnifferFull'));
  ToWrite.Lines.Append('Catching since '+TimeToStr(Now)+'...');
end;

InitDLLData вызвается лишь один раз из моей программы.

PS. Данные типа hWnd и Integer передавал с помощью CreateFileMapping и MapViewOfFile, но со строками почему-то возникла трудность.

PPS. Раньше работал с WH_JOURNALRECORD прямо в своем приложении, но в этом случае не ловятся некоторые из нужных сообщений.
5
12 июля 2006 года
hardcase
4.5K / / 09.08.2005
По поводу хуков сказать ничего не могу.
А вот насчёт передачи строк и данных - тут лучше использовать именованные програмные каналы (named pipes) - меньше траблов с синхронизацией (задача "поставщик-приёмник" решается на уровне ReadFile и WriteFile).

CreateNamedPipe - создаёт канал
ConnectNamedPipe - ждёт, момента подключения конца канала
CreateFile - подключается к каналу
ReadFile, WriteFile - читает/пишет в канал
19K
12 июля 2006 года
IoS
2 / / 12.07.2006
Спасибо за идею. Вроде что-то подходящее. Буду изучать дальше.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог