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

Вниз

переменная в dll не хочет менять значение   Найти похожие ветки 

 
Альберт ©   (2006-12-29 04:35) [0]

пишу dll.
есть простая переменная типа HWND.
присваиваю ей новое значение (в программе) через экспортируемую процедуру dll. значение меняется только в этой экспортируемой процедуре (в dll), а в остальном коде равна нулю..


 
Альберт ©   (2006-12-29 04:39) [1]

привожу часть кода
Application

type     MyProcType2 = procedure (w:HWND); stdcall;

var Hdll : HWND;

procedure setwnd(wnd:HWND);
var
 setwnd: MyProcType2;
begin

 Hdll:= LoadLibrary(PChar("flash.dll"));
 @setWND:= nil;
 if Hdll > HINSTANCE_ERROR then
   begin                                
     @setWND:=GetProcAddress(Hdll, "setwnd");  
     setwnd(wnd);    
   end;
end;


 
4ert   (2006-12-29 04:40) [2]

Не понятно... Переменная в программе? ....
Ты лучше  кусок куда привел... наглядней было б..


 
Альберт ©   (2006-12-29 04:43) [3]

привожу часть кода библиотеки

library flash;

var detectwnd:HWND;

procedure setwnd(wnd:HWND); export; stdcall;
begin
 detectwnd:=wnd;
end;

procedure xxx;
begin

//detectwnd === 0!!
end;

procedure DLLEntryPoint(dwReason: DWord); stdcall;
begin
 case dwReason of
   DLL_PROCESS_ATTACH: OpenGlobalData;
   DLL_PROCESS_DETACH: CloseGlobalData;
 end;
end;

exports hook, setWND;

begin
 DLLProc:= @DLLEntryPoint;
 DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


 
Альберт ©   (2006-12-29 04:45) [4]

detectwnd в dll не меняется

а в программе она задается через setWND


 
Альберт ©   (2006-12-29 04:48) [5]

dll ставит хуки, мне нужно работать с определенными окнами. но не идет..


 
Альберт ©   (2006-12-29 04:50) [6]

а работа с памятью через mmf


 
Альберт ©   (2006-12-29 04:54) [7]

получилось))))

надобыло переменную засунуть в GlobalData


 
4ert   (2006-12-29 05:05) [8]

Я конечно не претендую, на звание Мастера, но всё же, просто любопытно и делать нечего, позволь задать вопрос, а смысл в этом коде вообще есть?
Насколько я вообще понимаю ты загрузаешь одну и тожу библиотеку, пока не будет ошибка, но насколько я понимаю, если ошибки не было сразу, тои не будет и потом(обычное понимание чайника), а если так, то процедура приведенная тобой будет запускать сама себя же оч. и оч. много раз пока в конце концов не выдаст наверно EAccessViolation...... Поэтому на мой взгляд(может быть я просто не так понял?) решить проблему неизменения переменной в неработающей прцедуре невозможно.



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

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

Наверх




Память: 0.48 MB
Время: 0.05 c
2-1167297116
DVM
2006-12-28 12:11
2007.01.21
Чем отличаются CopyMemory и MoveMemory в Delphi?


15-1167237196
ocean
2006-12-27 19:33
2007.01.21
Как записать с кассеты на CD?


2-1167456399
Adios
2006-12-30 08:26
2007.01.21
copyfile


2-1166953260
FBI Agent
2006-12-24 12:41
2007.01.21
Шифрование текста в ini-файле


2-1167429856
ch1pa
2006-12-30 01:04
2007.01.21
скрытие сетевых соединений