Скажем, у нас есть существующий процесс (или приложение), который вызывает COM-объект из ocx-файла, такого как «MyCOMLibrary.ocx».C# - Подключиться к существующему объекту COM
Есть ли способ написать библиотеку C# для точной репликации файла ocx? Чтобы исходное приложение могло вызывать ваш код C#, а не оригинальный COM-объект?
Вы, конечно же, должны были бы использовать идентичные CLSID и ProgID в качестве исходного ocx. И если предположить, что в этом нет никакого подписи, например, SNK в мире .Net.
Кроме того, существуют ли какие-либо инструменты для автоматизации этого? Что-то, что принимает в ocx и выплевывает файл C# с методами для реализации.
EDIT: Я хочу добавить, что исходное приложение VB6 и не использует .Net вообще. Они, скорее всего, загружают ocx в качестве приложения VB6 (ProgId или Guid). Означает ли это какие-либо проблемы?
У нас также нет проблем с полностью переписыванием ocx - мы скорее всего просто вернем коды ошибок успеха для всех методов и будем использовать только методы/события, необходимые для нашей ситуации.
РЕДАКТИРОВАТЬ: Вы считаете, что этого не будет слишком сложно выполнить. Можем ли мы сделать ocx-файл VB6, который может заменить старый ocx, и просто передать все вызовы на сборку .Net?
EDIT: Я попытался с помощью следующей открытой библиотеки источник: EasyHook
Но, похоже, этот вопрос должен еще быть жизнеспособным. VB6, похоже, загружает COM-объекты таким образом, который предотвращает перехват. Я не вижу способа привязать методы экземпляра к классу/интерфейсу или конструктору класса с помощью EasyHook.
То, что вы предлагаете, возможно, но опасно. Вы бы заменили этот элемент управления для любого приложения. Я не рекомендую это делать, если вы не пытаетесь взломать что-то, что я также не рекомендую. :) –
Мы пытаемся подражать аппаратным устройствам для взаимодействия с устаревшим приложением «точка продажи». Не будет проблем с заменой этого ocx глобально для ПК. – jonathanpeppers
Возможный дубликат [C# - запись COM-сервера - Свойства сопоставлены с методами] (http://stackoverflow.com/questions/1614702/c-sharp-writing-a-com-server-properties-mapped-to-methods) – jonathanpeppers