![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
![]()
Подскажите пожалуйста, как используя ассемблер(без него никак) интегрированный в Delphi вызвать произвольную функцию с параметрами из любой ДЛЛки.
Например, есть Код:
|
![]() |
![]() |
![]() |
#2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
если функция stdcall, то так
Код:
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
![]()
нет, немного не так. нужно загрузить библиотеку dllfile, поместить в стек параметры из массива и вызвать оттуда функцию name с теми параметрами.
CallSomeFunc - обертка этого вызова. Код:
просто учитывая, что параметр каждый своего типа, я не знаю как помещать в стек их. вызвать из длл впринципе не проблема. вот поместить неопределенное кол-во параметров - незнаю как. и вызвать функцию не по имени - а по содержанию в переменной. Последний раз редактировалось Роман Радер; 18.02.2009 в 16:24. |
![]() |
![]() |
![]() |
#4 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
![]()
Stilet, а вы знаете как иначе?
Мне не CallSomeFunc ассемблером вызвать надо! Ладно объясню по-другому. Есть dll. Программе задается число N - количество параметров. N типов - типы параметров. N значений - сами параметры. Также, задается путь и имя к DLL и имя функции. Необходимо вызвать функцию. Буду очень признателен. |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
DLL ты пишеш?
Примени массив Variant или безразмерный массив Всетки я не пойму почему именно ассемблер. Можно просто выделить память напихать туда нужной информации, а в ДЛЛ передавать указатель на эту память и кол-во параметров. Вот что я имею ввиду: Проект: Код:
Код:
I'm learning to live...
Последний раз редактировалось Stilet; 18.02.2009 в 17:07. |
![]() |
![]() |
![]() |
#7 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]() Цитата:
во-вторых, в ассемблере нет типов в-третьх, сколько параметров столько раз надо сделать push. В основном передают указатели, за исключением числовых типов и символьных. Последний раз редактировалось rpy3uH; 18.02.2009 в 18:04. |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
![]()
Stilet, dll пишу не я. например, это dll из /system32/ apiшная какая-то.
rpy3uH, а как тогда работает компилятор Делфи? вот мы пишем статическую привязку к функции в ДЛЛ. как компилятор это обрабатывает? парсит код, определяет параметры и как-то вызывает. да и не только делфи, любой язык который позволяет работать с DLL Последний раз редактировалось Роман Радер; 18.02.2009 в 18:46. |
![]() |
![]() |
![]() |
#9 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
компилятор знает заранее что, как и зачем и сразу генерит нужный код. А тебе надо на лету всё сделать и ещё и вызвать.
|
![]() |
![]() |
![]() |
#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 |