Обойти сторонние циклические зависимости DLL? - PullRequest
2 голосов
/ 19 августа 2011

Я пытаюсь получить доступ к тексту в TE Edit (из ter32.dll) в стороннем приложении. (первое сообщение об этом здесь ) Я просмотрел API и попытался динамически загрузить dll для доступа к функции. К сожалению, это (послепродажное обслуживание) файла ter32.dll имеет множество зависимостей. Я попытался динамически загрузить каждую требуемую DLL по мере необходимости, но столкнулся с циклической зависимостью. Для ter32.dll требуется x. х требует у. у не загружается, потому что это требует х. Должен ли я статически загрузить их с задержкой? Я уверен, что надеюсь, что нет, так как я не хочу, чтобы заголовок / раздувание / зависимость были в моем приложении.

1) что мне не хватает?
2) есть ли способ обойти это?
3) есть ли у кого-нибудь другой способ доступа к тексту в TE Edit ter32.dll?

1 Ответ

3 голосов
/ 19 августа 2011

Когда вы загружаете DLL, загрузчик загрузит все зависимости для вас.Эти зависимости перечислены в таблицах импорта каждой DLL, и загрузчик разрешает их.Вам не нужно ничего делать.

Поэтому я не могу понять, как вы пришли к выводу, что вам самим нужно обрабатывать зависимости DLL.Вы загружаете эту DLL нестандартным способом?Вам нужен манифест для зависимостей WinSxS, т. Е. Требуется ли среда выполнения MS C?Есть ли что-то еще, что нам нужно знать?

Все это говорит о том, что загрузка этой DLL в ваш процесс, на мой взгляд, вряд ли поможет в извлечении текста из другого процесса, который имеет свой отдельный виртуальныйобъем памяти.Другими словами, я совершенно уверен, что ваша нынешняя попытка извлечь текст не удастся.Способ обойти барьер виртуальной памяти - запустить ваш код в другом процессе с помощью ловушки.

...