Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2009, 17:45   #1
maxrfons
 
Регистрация: 07.05.2009
Сообщений: 4
Сообщение Вызвать отдельную функцию в длл

Есть длл, NET COM, и нужно как-то вызвать функцию, которая не экспортируется.
Есть тут гуру?
maxrfons вне форума Ответить с цитированием
Старый 24.07.2009, 18:15   #2
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Не понятно ничего. Не зная адресса функции вы не сможете её вызвать если это обычные dll библиотеки, а не .NET. В .net нет как таковых отдельных функций, есть классы со статическими функциями. А найти функцию можно при помощи рефлексии
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 24.07.2009, 18:56   #3
maxrfons
 
Регистрация: 07.05.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от OrdJONY Посмотреть сообщение
Не понятно ничего. Не зная адресса функции вы не сможете её вызвать если это обычные dll библиотеки, а не .NET. В .net нет как таковых отдельных функций, есть классы со статическими функциями. А найти функцию можно при помощи рефлексии
Адрес относительно чего?
Это СОМ библиотека, просто в ней есть код, которым мне нужно воспользоваться, но он не экспортируется, а просто находится внутри экспортируемой функции. Мне нужно подменить параметры вызова ее(из своей программы вызвать с нужными мне параметрами).
maxrfons вне форума Ответить с цитированием
Старый 24.07.2009, 22:40   #4
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Я так понял есть экспортируемая функция которая возвращает COM-интерфейс. Тогда объявите этот интерфейс у себя и функцию тоже, а далее при помощи определенных атрибутов пометте интерфейс и функцию
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 24.07.2009, 23:05   #5
maxrfons
 
Регистрация: 07.05.2009
Сообщений: 4
Сообщение

Цитата:
Сообщение от OrdJONY Посмотреть сообщение
Я так понял есть экспортируемая функция которая возвращает COM-интерфейс. Тогда объявите этот интерфейс у себя и функцию тоже, а далее при помощи определенных атрибутов пометте интерфейс и функцию
Наверное все же не поняли.
У меня есть СОМ библиотека, ее объявить не проблема, но, я ее дисассемблировал, в ней есть некая функция(ИДА называет ее sub_04128880 (например), которая вызывается одной из экспортируемых функцией (InitInterface), но меня не устраивают параметры с которыми sub_04128880 вызывается! Мне нужно передать свои параметры и вызвать.
Примерно так.
maxrfons вне форума Ответить с цитированием
Старый 25.07.2009, 09:34   #6
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Попробуйте тогда вызов sub_04128880 перекомпилировать с нужными вам параметрами или прямо эту функцию экспортировать.
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 25.07.2009, 14:20   #7
maxrfons
 
Регистрация: 07.05.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от OrdJONY Посмотреть сообщение
Попробуйте тогда вызов sub_04128880 перекомпилировать с нужными вам параметрами или прямо эту функцию экспортировать.
Звучит заманчиво (второй вариант)! А можно поподробнее, как экспортировать эту функцию?
Спасибо!
maxrfons вне форума Ответить с цитированием
Старый 25.07.2009, 20:42   #8
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Я к сожалению никогда не занимался дизасембелированием, поэтому в данном вопросе я без силен
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 28.07.2009, 13:26   #9
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Возможно это то, что Вам нужно:

Код:
using System.Runtime.InteropServices;
//импортируем библиотеку и указываем точку входа
[DllImport("имя_dll", EntryPoint = "название_функции")]
//Объявляем функцию с параметрами.
private static extern int название_функции
(int hwnd, 
string lpOperation, 
string lpFile, 
string lpParameters, 
string lpDirectory, 
int nShowCmd);
ну а далее по коду название_функции(...парметры...)
oleg kutkov вне форума Ответить с цитированием
Старый 31.07.2009, 20:44   #10
SynEnergizer
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 51
По умолчанию

Код:
using System.Runtime.InteropServices;
//импортируем библиотеку и указываем точку входа
[DllImport("имя_dll", EntryPoint = "название_функции")]
//Объявляем функцию с параметрами.
private static extern int название_функции
(int hwnd, 
string lpOperation, 
string lpFile, 
string lpParameters, 
string lpDirectory, 
int nShowCmd);

Совершенно правильно.
Кстати так можно играться с WinAPI, которые находятся в DLL. Только нужно уметь конвертировать указатели и типы не присутсвующие .NET.
SynEnergizer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать функцию? blackstersl Общие вопросы Delphi 10 07.06.2009 19:22
Вызвать адрес памяти как функцию XAOC-forever Общие вопросы Delphi 18 07.03.2009 20:32
как вызвать в Dll по указателю функцию, которая определена в главном потоке? SaintRain Общие вопросы Delphi 1 25.11.2006 08:27
как вызвать из Dll функцию, которая определена в главном потоке? SaintRain Win Api 1 23.11.2006 20:08