Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

dll наоборот :)   Найти похожие ветки 

 
CrazyAngel ©   (2002-09-24 16:44) [0]

Кто-нибудь знает как находясь в dll вызвать функцию расположенную в моей программе ?


 
Song ©   (2002-09-24 16:47) [1]

Послать какое-нибудь сообщение программе, которая, получив последнее, исполнит вашу функцию.


 
Digitman ©   (2002-09-24 17:05) [2]

Нужно знать заранее (или узнать в run-time) адрес этой ф-ции.
Способов - море. Начиная с того, которым ты пользуешься для определения адреса ЭКСПОРТИРУЕМОЙ ф-ции в DLL-модуле ... Точно так же и EXE-модуль вправе экспортировать ф-цию


 
CrazyAngel ©   (2002-09-24 17:09) [3]

Т.е. если я напишу в export имя этой функции то как мне получить ее адрес ?
getprocadress c указанием hwnd екзешника ?


 
Digitman ©   (2002-09-24 17:26) [4]

да .... только не "hwnd екзешника", а его hInstance, полученный по GetModuleHandle("file.exe")


 
CrazyAngel ©   (2002-09-24 17:30) [5]

OK, спасибо за ответы пойду еще экспериментировать :)


 
PVOzerski ©   (2002-09-25 05:14) [6]

Вообще-то это примерно то, что называется callback-функция и чем кишит WinAPI. Использование callback"а сводится к получению dll"ью точки входа в callback (для чего соответствующий адрес передается в dll как параметр некой функции - хотя можно извратиться и через экспортируемую функцию - только это редко действительно бывает необходимо). Только не забывайте контролировать соответствие типов и соглашений о вызовах.

работающий пример (D3):

program EXE;
{$apptype console}
function MyCallBack(x:integer):integer;
begin
Result:=2*x;
end;

function FromDll(p:pointer):integer;
external "DLL.dll" name "FromDll";

begin
writeln(FromDll(@MyCallBack));
end.

library DLL;
{$apptype console}
type
tProc=function(x:integer):integer;
function FromDll(p:tProc):integer;export;
var
x:integer;
begin
readln(x);
Result:=p(x);
end;
exports
FromDll name "FromDll";
begin
end.


 
Viktor Kushnir ©   (2002-09-25 07:12) [7]

А я передовал просто указатель на нужную функцию из exe в dll



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-21763
^Sanya
2002-10-07 21:41
2002.11.07
Кто-нить пробовал свою анкету редактировать?


1-21655
Foxtrot
2002-10-27 22:33
2002.11.07
RANDOM - какая длина последовательности псевдо-случайных чисел.


4-21885
_Alex_
2002-09-25 21:20
2002.11.07
графика


1-21600
Sombrero
2002-10-30 12:51
2002.11.07
Хелп!!! Конвертация из *.dbf в *.txt


1-21507
CrowD
2002-10-25 18:54
2002.11.07
Как убить String?