У меня есть приложение, разработанное в 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, а также регистрировать, какой параметр он отправил и какие результаты были получены.
Мне пришлось искать Google, чтобы найти библиотеку, которая была на кончике моего языка.
Этот googling привлек некоторые интересные статьи: новая для меня статья Microsoft Research 1999 под названием "Перехват и инструментальные приложения COM" и статья Microsoft Systems Journal от января 1999 года, которую я помню, "Построение облегченной схемы перехвата COM".
Библиотека, которую вы хотите, вероятно, Microsoft Detours. Я использовал его только из C++, а не из С#, и я использовал его только для перехвата вызовов для функций Windows API, а не для COM-методов, поэтому я не могу гарантировать, что он хорошо подходит. Но это не совсем наука о ракете, чтобы приспособить эти два языка, если это необходимо.
Если Detours не будет удовлетворять ваши потребности, посмотрите на приведенные статьи. Вполне возможно, они привели к некоторой структуре, которую вы можете использовать. И в противном случае у них есть информация, необходимая для создания собственного. Тогда вы также можете проверить, сделал ли ParkPlace когда-либо то, что вы хотите. Когда-то был большой интерес к функциональности "перекрестного беспокойства", и, как я помню, ParcPlace сделал некоторые из самых интересных исследований.