Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизПеременные в DLL? Найти похожие ветки
← →
Юрий Ж. (2003-09-25 08:55) [0]Здравствуйте мастера!
У меня вот какая проблема:
В DLL прописана переменная какого либо типа.
Из функции той же DLL она вызываетсы и из реестра получает значение.
Если потом из другой функции DLL вызывать эту переменную, то из нее не получаетсы получить значение.
Возможно описано не очень понятно, но...
Помогите!
← →
Verg (2003-09-25 09:02) [1]
> Возможно описано не очень понятно, но...
Да уж...
Лучше пример кода - как описана эта переменная, где, что значит
> не получаетсы получить значение.
Как это - не получается? Не дается, упирается, визжит, ругается матом? Что?
← →
HolACost! (2003-09-25 09:11) [2]как я понял- есть глобальная переменная - одна фунция из ДЛЛ записывает туду значение, а другая считывает и возвращает!!! Так?
Проблему скорее всего в том, что всётаки тип у тебя какой-нить строковый!
← →
HolACost! (2003-09-25 09:14) [3]Да и ещё - в одном процессы вызываешь эти переменные или в разных?
← →
VAleksey (2003-09-25 10:06) [4]Проиллюстрируй кодом где
а) Описана переменная
б) Присваивается ей значение
г) Читается значение
← →
panov (2003-09-25 10:12) [5]>HolACost! © (25.09.03 09:11) [2]
Неважно какого типа переменная. При использовании внутри DLL проблем быть не должно.
← →
HolACost! (2003-09-25 10:33) [6]panov © (25.09.03 10:12) [5]
Имелось ввиду, что там может передаваться строка из одного процесса в другой или в рамках текущего!
А в пронципе - код в студию, хотя он помоему уже убёг!
← →
PVOzerski (2003-09-25 10:34) [7][5] - Если в рамках одного процесса.
← →
panov (2003-09-25 10:51) [8]>PVOzerski © (25.09.03 10:34) [7]
[5] - Если в рамках одного процесса.
Использовать вызовы функций внутри DLL с передачей параметров любых типов, определенных внутри DLL, можно без ограничений.
Я имею ввиду такие конструкции:
var
GlobalInDLLVar: String;
//Эта функция не экспортируется
function MyFunc1(const AStr: String): String;
begin
if Length(aStr)>0 then Result := Copy(aStr,1,10)
else Result := "";
end;
//Эта функция экспортируется
function MyFuncExp:ShortString;stdcall;
begin
GlobalInDLLVar := StringOfChar("1",500);
Result := MyFunc1(GlobalInDLLVar);
end;
export
MyFuncExp;
← →
Юрий Ж. (2003-09-26 17:51) [9]Я хочу уточнить(только что разобрался):
Когда я устанавливаю системный Hook на клавиатуру назначается функция обработки при сообщении, и если я уже вне этой функции проинициализировал переменную(даже до запуска Hook) то та не видит изменений.
Короче работает только если инициализировать прямо в этой функции.
Как от зтого избавиться?
← →
Юрий Зотов (2003-09-26 17:57) [10]> Юрий Ж. (26.09.03 17:51) [9]
> то та не видит изменений.
Потому что инициализация происходит только в ОДНОМ процессе.
> Как от зтого избавиться?
Переменная должна быть глобальной по отношению ко ВСЕМ процессам в системе. См. на этом сайте статью Алексея Павлова по глобальным хукам.
← →
Юрий Ж. (2003-09-27 07:34) [11]2 Юрий Зотов
Спасибо за совет!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c