Вниз
Скачать: 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.027 c
2-1167326283
Groof
2006-12-28 20:18
2007.01.21
Поиск в лин.массиве с подсчетом частот


15-1167296309
Rentgen
2006-12-28 11:58
2007.01.21
Скорость просчета короткого пути


15-1167494417
red_imp
2006-12-30 19:00
2007.01.21
Фрактал Минковского


8-1148549281
Belorus
2006-05-25 13:28
2007.01.21
Чтение текста голосом.


15-1167133593
Piroxyline
2006-12-26 14:46
2007.01.21
Этот форум через WAP и Google




   Наверх