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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 12:38   #1
GRA1N
 
Аватар для GRA1N
 
Регистрация: 25.07.2009
Сообщений: 7
По умолчанию Вызов функции по указателю с передачей аргументов

Доброго времени суток, дорогие форумчане.
Имеется приложение, которое подгружает известную либу, в либе той вынесена на экспорт определённая функция. Прошу сильно не ругаться, делфи знаю поверхностно. Необходимо импортировать функцию и использовать в своём приложении, но проблема в том, что обычный импорт функции из либы здесь не применим. То есть, функцию нужно вызывать непосредственно, когда либа с функцией подгружена в адресное пространство того чужого приложения.
Как поступаю:
Внедряю >свою< либу в адресное пространство чужого приложения.
Что делаю:
modulehandle:=GetModuleHandle(PAnsi Char('Название_чужой_длл_с_функцией _для_импорта')); // получаю хэндл подгруженной (чужой) либы;
@pt:=GetProcAddress(logerhandle,PAn siChar('Название_функции')); // Получаю указатель (если не ошибаюсь) на функцию;

Перед var:
pt = function (аргументы) : boolean; stdcall;


Собственно, сам вопрос - как вызвать функцию, передав ей аргументы? И правильно ли я вообще импортирую? Примеров найти не смог, поэтому создаю топик. Заранее большое спасибо за ответы.
GRA1N вне форума Ответить с цитированием
Старый 21.03.2011, 13:01   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Вызвать ф-цию из либы можно только из кода, расположенного в том же адр.пространстве, в которое загружена эта либа.
mss вне форума Ответить с цитированием
Старый 21.03.2011, 13:10   #3
GRA1N
 
Аватар для GRA1N
 
Регистрация: 25.07.2009
Сообщений: 7
По умолчанию

Так я подгружаю свою (вторую) либу в это адресное пространство, с первой либой.
GRA1N вне форума Ответить с цитированием
Старый 21.03.2011, 13:31   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Т.е. из ТВОЕЙ либы, которую ты внедрил в чужое АП, тебе нужно вызвать эксп.ф-цию ЧУЖОЙ либы в том же АП ?

Ну в этом случае я не вижу никаких препятствий для обычного импорта, и почему он "не применим" - мне пока не понятно.
mss вне форума Ответить с цитированием
Старый 21.03.2011, 13:33   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

ТС не говорит, что он "неприменим". Он спрашивает как правильно импортировать функции для этих целей...
У меня компилятора под рукой нет, а по памяти точный синтаксис не помню, посему воздержусь от ответа...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 21.03.2011, 13:47   #6
GRA1N
 
Аватар для GRA1N
 
Регистрация: 25.07.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Т.е. из ТВОЕЙ либы, которую ты внедрил в чужое АП, тебе нужно вызвать эксп.ф-цию ЧУЖОЙ либы в том же АП ?

Ну в этом случае я не вижу никаких препятствий для обычного импорта, и почему он "не применим" - мне пока не понятно.
Извините, возможно, не так выразился, под обычным я подразумеваю LoadLibrary
GRA1N вне форума Ответить с цитированием
Старый 21.03.2011, 15:06   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

И что мешает вызову LoadLibrary ?
Ничто не мешает.
mss вне форума Ответить с цитированием
Старый 21.03.2011, 15:12   #8
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
function pt(аргументы):boolean;stdcall;external DLL_Name;
а че так не сойдет?
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 21.03.2011, 15:19   #9
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
а че так не сойдет?
Лишь бы ляпнуть ?)
mss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По данным значениям аргументов a и b вычислить значение функции f(a,b). Паскаль shokoladka5013 Помощь студентам 1 02.03.2011 09:07
По данным значениям аргументов a и b вычислить значение функции f(a,b). Паскаль shokoladka5013 Помощь студентам 1 24.02.2011 06:54
Вычислить значение функции для заданных значений аргументов. Pascal. Xeon332 Фриланс 11 10.10.2010 09:57
Функции с произвольным количеством и типом аргументов. Crudelis Общие вопросы C/C++ 1 16.06.2010 00:10
Проблема с заданием аргументов функции по умолчанию LMnet Помощь студентам 4 15.01.2010 17:59