Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Внизпеременная в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c