Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];

Вниз

Hooks & COM   Найти похожие ветки 

 
volser   (2005-11-28 20:15) [0]

Я взаимодействую с глобальным хуком через сообщения и FileMapping. Но хотелось бы что бы мой хук в другом процессе был COM Сервер (OLE ) и общатся через определнный интерфейс. Может кто-то подобное делал?


 
Digitman ©   (2005-11-29 08:22) [1]


> взаимодействую с глобальным хуком через сообщения и FileMapping


а по-хорошему надо бы с помощью NamedPipes


> мой хук в другом процессе был COM Сервер (OLE )


сомнительная по необходимости затея


 
Leonid Troyanovsky ©   (2005-11-29 11:35) [2]


> Digitman ©   (29.11.05 08:22) [1]

> > взаимодействую с глобальным хуком через сообщения и FileMapping

> а по-хорошему надо бы с помощью NamedPipes


А чем оно лучше? Оно ж на одной станции.

--
Regards, LVT.


 
Digitman ©   (2005-11-29 15:03) [3]


> Leonid Troyanovsky ©   (29.11.05 11:35) [2]


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


 
Leonid Troyanovsky ©   (2005-11-29 15:18) [4]


> Digitman ©   (29.11.05 15:03) [3]

> сегодня на одной, а завтра на разных)


Тогда уж tcp, на послезавтра :)

--
Regards, LVT.


 
Digitman ©   (2005-11-29 15:28) [5]


> Leonid Troyanovsky ©   (29.11.05 15:18) [4]


для ЛВС слишком жирно)


 
wal ©   (2005-11-29 16:54) [6]


> для ЛВС слишком жирно)
Сегодня ЛВС, завтра WAN ;)


 
volser   (2005-11-29 23:15) [7]

Так а как на счет COM?
И почему сомнительная? ЧТо лучше обмениваться сообщения и возвращать результат не понятно куда. И как на счет многопоточности? Как узнать на какое сообщение лежит ответ? Не легче было бы взять интефейс и работать с ним и как между процессами передаются данные не интересует.


 
Набережных С. ©   (2005-11-30 08:43) [8]


> volser   (29.11.05 23:15) [7]

Может и стоить попробовать. Только придется учесть, что СОМ достаточно широко использует сообщения. В некоторых случаях это может создать определенные проблемы, придется их разрулить. Только не спрашивай какие именно:)), это просто предположение. Имхо, механизм именованных каналов в подобных задачах достаточно опробованный и надежный, вряд ли стоит от него отказываться, разве что в познавательных целях:)


 
Digitman ©   (2005-11-30 09:26) [9]


> volser   (29.11.05 23:15) [7]


> почему сомнительная?


потому что в ран-тайм при внедрении хук-кода в процесс, заведомо, например, не реализующий фабрику COM-класса, придется каким-то образом зарегистрировать его в системе как отныне реализующий эту самую фабрику... а это не тривиальная задача, особенно с учетом того что внедренный хук-код может получить управление и не в основном потоке процесса.


> ЧТо лучше обмениваться сообщения и возвращать результат
> не понятно куда


как это "не понятно куда" ?

если речь идет о SendMessage(), то получателю сообщения без разницы, кто явился его отправителем - результат обработки будет возвращен именно тому отправителю, который вызвал ту самую SendMessage().

если речь идет о PostThreadMessage(), то инф-цию об отправителе последний вполне может передать параметром вызова этой ф-ции, дабы получатель знал, кому и как отправлять результат обработки сообщения.


> как на счет многопоточности?


она никак не мешает сабжу


 
volser   (2005-11-30 12:49) [10]


> потому что в ран-тайм при внедрении хук-кода в процесс,
> заведомо, например, не реализующий фабрику COM-класса, придется
> каким-то образом зарегистрировать его в системе как отныне
> реализующий эту самую фабрику... а это не тривиальная задача,
>  особенно с учетом того что внедренный хук-код может получить
> управление и не в основном потоке процесса.

А разве не достаточно выполнить что-то типа такого кода
TAutoObjectFactory.Create(ComServer, THookServer, Class_HookServer, ciSingleInstance); для регистрации фабрики?

Только мне интересно чтио будет если это сделать в разных процессах.


 
Digitman ©   (2005-11-30 13:04) [11]

А причем здесь TAutoObjectFactory ? это ж для фаблик олей-объектов ...

Ты вроде бы речь ведешь о СОМ-взаимодействии ?

Ну так, значит, и фабрика должна создаваться как TCOMObjectFactory ..


> мне интересно чтио будет если это сделать в разных процессах.


попробуй - увидишь ...


 
Набережных С. ©   (2005-11-30 13:37) [12]


> Digitman ©   (30.11.05 09:26) [9]


> потому что в ран-тайм при внедрении хук-кода в процесс,
> заведомо, например, не реализующий фабрику COM-класса, придется
> каким-то образом зарегистрировать его в системе как отныне
> реализующий эту самую фабрику... а это не тривиальная задача,
>  особенно с учетом того что внедренный хук-код может получить
> управление и не в основном потоке процесса.

Ну это-то как раз не проблема. К тому-же, если объект уже существует, то и фабрика ему как-бы ни к чему. Он может, например, зарегистрироваться в таблице исполняемых объектов. Только вот зарегистрировать там можно только один интерфейс одного объекта некоторого класса. А если ClassID налету генерить, то как их потом искать? Но с фабриками все равно та же фигня.

> volser   (30.11.05 12:49) [10]


> А разве не достаточно выполнить что-то типа такого кода
> TAutoObjectFactory.Create(ComServer, THookServer, Class_HookServer,
>  ciSingleInstance); для регистрации фабрики?

Достаточно, если делать это в секции инициализации модуля. Тогда, если это exe-сервер, объект ComServer произведет регистрацию фабрик. Во всех остальных случаях это нужно делать вручную, вызовом RegisterClassObject у каждой фабрики.

> Только мне интересно чтио будет если это сделать в разных
> процессах.

В таком случае система кэширует их интерфейсы, выстраивая в очередь. При этом для клиентов остается доступен самый первый зарегистрированный.  Если его регистрация снимается, то доступен становится, второй и т.д.

В любом случае, если уж использовать СОМ, то код хука нужно делать клиентом, только так. А управляющее приложение - сервером.


 
Digitman ©   (2005-11-30 13:41) [13]


> если уж использовать СОМ, то код хука нужно делать клиентом,
>  только так. А управляющее приложение - сервером


совершенно логично.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
2-1138199118
Дмитрий_К
2006-01-25 17:25
2006.02.12
DBGrid


15-1138028265
Харько
2006-01-23 17:57
2006.02.12
Алгоритм выделения части из целого


1-1137410603
Still Swamp
2006-01-16 14:23
2006.02.12
Как отобразить в окошке некий текст HTML


11-1110491297
Nix
2005-03-11 00:48
2006.02.12
Hints


15-1138010550
RoVS
2006-01-23 13:02
2006.02.12
Нужен пример сниффера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский