Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
6-1155796601
vodvorezlaya
2006-08-17 10:36
2007.01.21
Как выловить Http адрес


11-1144326059
Коля
2006-04-06 16:20
2007.01.21
Создание базы данных.


15-1167245501
Strate
2006-12-27 21:51
2007.01.21
Слежение за интернет-активностью средставми Делфи


6-1155850398
Victor!
2006-08-18 01:33
2007.01.21
Проблемма с TIdTCPClient.ReadLn в Delphi 7


15-1167393147
Kerk
2006-12-29 14:52
2007.01.21
Пятничная задачка ;)




   Наверх