перехватывать сообщения между приложениями VBA

0

У меня есть приложение, разработанное в VB 6.0. У меня нет доступа к его коду. Это приложение также предоставляет свои функции через определенный API, предоставляемый в его DLL. Есть ли способ проверить, какие методы API, к которым обращаются пользователи API этого приложения, в любом месте, где развертывается API. Я хочу, чтобы программа С# просто сидела в этой целевой среде и перехватывала вызовы, сделанные этим API, и сообщала об этом обратно на мою службу через службу. Я не буду изменять API или код, вызывающий API. Возможно ли это на С#, или мне нужно пойти с C++?

Обновить

Позволяет сказать для простоты, что его простое приложение VB, разработанное в VB 6 под названием SimpleAPP, имеет кнопку, которая отображает записи в сетке. Он делает это, вызывая компонент CMPA.dll с открытым методом GetRecords (идентификатор строки), который возвращает массив записей. У меня есть еще несколько приложений CustomerApp.exe и AnotherCustomerApp.exe, которые также имеют ссылку на CMPA.dll, и оба они называет этот же метод для получения записей. Теперь я хочу разработать программу под названием Interceptor.exe, которая будет фактически размещаться в среде, в которой будут развернуты CustomerApp и AnotherCustomerApp, и будет внутренне регистрировать, какое из этих двух приложений называло это общедоступным методом GetPecords dll CMPA, а также регистрировать, какой параметр он отправил и какие результаты были получены.

  • 1
    Детали того, как это можно сделать, будут зависеть от деталей программы, которую вы пытаетесь отслеживать. Поскольку только вы знаете эти детали, вы не можете ожидать подробного ответа. Лучшее, на что ты можешь надеяться, может быть.
  • 0
    Я обновлю вопрос ..
Теги:
visual-c++
c#-4.0

1 ответ

5

Мне пришлось искать Google, чтобы найти библиотеку, которая была на кончике моего языка.

Этот googling привлек некоторые интересные статьи: новая для меня статья Microsoft Research 1999 под названием "Перехват и инструментальные приложения COM" и статья Microsoft Systems Journal от января 1999 года, которую я помню, "Построение облегченной схемы перехвата COM".

Библиотека, которую вы хотите, вероятно, Microsoft Detours. Я использовал его только из C++, а не из С#, и я использовал его только для перехвата вызовов для функций Windows API, а не для COM-методов, поэтому я не могу гарантировать, что он хорошо подходит. Но это не совсем наука о ракете, чтобы приспособить эти два языка, если это необходимо.

Если Detours не будет удовлетворять ваши потребности, посмотрите на приведенные статьи. Вполне возможно, они привели к некоторой структуре, которую вы можете использовать. И в противном случае у них есть информация, необходимая для создания собственного. Тогда вы также можете проверить, сделал ли ParkPlace когда-либо то, что вы хотите. Когда-то был большой интерес к функциональности "перекрестного беспокойства", и, как я помню, ParcPlace сделал некоторые из самых интересных исследований.

  • 0
    Я не уверен, что обходные пути могут быть использованы в этом сценарии вне процесса
  • 0
    @DavidHeffernan: вне процесса не проблема, всегда можно внедрить код в соответствующий процесс. меня больше беспокоит вопрос о том, предоставляют ли обходные пути прямую поддержку COM или нет.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню