|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.02.2009, 15:19 | #1 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
Вызов произвольной функции из DLL
Подскажите пожалуйста, как используя ассемблер(без него никак) интегрированный в Delphi вызвать произвольную функцию с параметрами из любой ДЛЛки.
Например, есть Код:
|
18.02.2009, 16:10 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
если функция stdcall, то так
Код:
|
18.02.2009, 16:18 | #3 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
нет, немного не так. нужно загрузить библиотеку dllfile, поместить в стек параметры из массива и вызвать оттуда функцию name с теми параметрами.
CallSomeFunc - обертка этого вызова. Код:
просто учитывая, что параметр каждый своего типа, я не знаю как помещать в стек их. вызвать из длл впринципе не проблема. вот поместить неопределенное кол-во параметров - незнаю как. и вызвать функцию не по имени - а по содержанию в переменной. Последний раз редактировалось Роман Радер; 18.02.2009 в 16:24. |
18.02.2009, 16:23 | #4 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
18.02.2009, 16:35 | #5 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
Stilet, а вы знаете как иначе?
Мне не CallSomeFunc ассемблером вызвать надо! Ладно объясню по-другому. Есть dll. Программе задается число N - количество параметров. N типов - типы параметров. N значений - сами параметры. Также, задается путь и имя к DLL и имя функции. Необходимо вызвать функцию. Буду очень признателен. |
18.02.2009, 17:02 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
DLL ты пишеш?
Примени массив Variant или безразмерный массив Всетки я не пойму почему именно ассемблер. Можно просто выделить память напихать туда нужной информации, а в ДЛЛ передавать указатель на эту память и кол-во параметров. Вот что я имею ввиду: Проект: Код:
Код:
I'm learning to live...
Последний раз редактировалось Stilet; 18.02.2009 в 17:07. |
18.02.2009, 18:01 | #7 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
во-вторых, в ассемблере нет типов в-третьх, сколько параметров столько раз надо сделать push. В основном передают указатели, за исключением числовых типов и символьных. Последний раз редактировалось rpy3uH; 18.02.2009 в 18:04. |
|
18.02.2009, 18:44 | #8 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
Stilet, dll пишу не я. например, это dll из /system32/ apiшная какая-то.
rpy3uH, а как тогда работает компилятор Делфи? вот мы пишем статическую привязку к функции в ДЛЛ. как компилятор это обрабатывает? парсит код, определяет параметры и как-то вызывает. да и не только делфи, любой язык который позволяет работать с DLL Последний раз редактировалось Роман Радер; 18.02.2009 в 18:46. |
18.02.2009, 19:31 | #9 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
компилятор знает заранее что, как и зачем и сразу генерит нужный код. А тебе надо на лету всё сделать и ещё и вызвать.
|
18.02.2009, 19:44 | #10 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
мдя... ясно. может, генерировать код, ассемблером компилировать, засунуть в память и запустить? О_о
кстати, компилятор ассемблера бесплатный? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание и вызов библиотеки dll | DM_bite | Помощь студентам | 3 | 15.06.2010 12:47 |
Вызов функции | MarSeON | PHP | 2 | 01.08.2008 20:22 |
вызов из dll не ShowModal. | Roof | Общие вопросы Delphi | 7 | 25.07.2008 15:22 |
Автоматический вызов функции класса | Flaton | Общие вопросы C/C++ | 4 | 19.10.2007 17:56 |
Вызов функции по таймеру | Lexicss | Общие вопросы Delphi | 4 | 30.05.2007 22:47 |