imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 26.02.2005, 21:52     # 1
anakarn
Banned
 
Аватар для anakarn
 
Регистрация: 06.11.2004
Сообщения: 135

anakarn Убей себяanakarn Убей себяanakarn Убей себя
Delphi: получение значения переменной из exe в dll

Нужно, чтобы dll могла как-то получать значение переменной, которая создаётся exe-шником. Как это сделать? Я так понимаю, нужна работа с памятью, но как именно? И можно ли вообще?
anakarn вне форума  
Старый 27.02.2005, 10:57     # 2
J. Bond
Guest
 
Сообщения: n/a

Если exe и dll ты сам пишешь, то:
1) если они находятся в одном процессе то проще всего сделать в dll експортируемую функцию корую вызывать из ехе и передавать ей значение переменной
2) если они находятся в разных процессах то можно использовать memory mapped files, т.е. в виртуальной памяти создается блок который доступен из любого процесса. Туда и записывай свою переменную.
 
Старый 27.02.2005, 14:39     # 3
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
А не проще сделать в ДЛЛке геттер и сеттер нужной переменной синхронайз методом в самой ДЛЛ и из экзешника дергать этот метод передавая значение переменной? или ты хочешь из чужой программы дернуть переменную?
/7y3uK вне форума  
Старый 27.02.2005, 20:57     # 4
anakarn
Banned
 
Аватар для anakarn
 
Регистрация: 06.11.2004
Сообщения: 135

anakarn Убей себяanakarn Убей себяanakarn Убей себя
/7y3uK
Хочу из своей. Это мне нужно было чтобы dll могла отслеживать видимость окна: эта переменная в событиях OnShow и OnHide менялась бы. Но судя по вашим ответам вижу, что лучше использовать WinAPI функцию для проверки видимости окна
anakarn вне форума  
Старый 28.02.2005, 15:53     # 5
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
какие проблемы... просто при старте процесса в длл-ку приходит дескриптор окна (читай: пишем сеттер из программы в переменную длл засовываем DC и HANDLE)... а дальше длл-ка будет мониторить все что связано с этим окном (дескриптором) - именно по API теперь очень легко найти нужное окно и сделать с ним усе что угодно...
Вообще такие вещи ХУКами называют и для этого удобно использовать обычный ХУК (хотя обычно ими стараются не пользоваться), зато гарантированно будет работать... читай про HOOKS
/7y3uK вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:40.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.