WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как сохранять переменную в dll-ке?

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как сохранять переменную в dll-ке?
RADIO опубликован 31-10-2001 17:08 MSK   Click Here to See the Profile for RADIO   Click Here to Email RADIO  
Как мне сделать так, чтобы некая переменная (в моём случае строка) сохранялась в dll-ке, как это сделано в виндах с паролем на скрин-сейвер? (там пароль хранится в PASSWORD.CPL с ключом SCRSAVE) И как мне её вытаскивать и менять? Заранее Спасибо!
Demo_S опубликован 31-10-2001 23:38 MSK     Click Here to See the Profile for Demo_S  Click Here to Email Demo_S     
Хм, единственное, что я могу придумать, это заранее в длл место отвести а потом запускать процесс, который проверяет, загружена ли еше эта длл, и как только она выгружена, пишет в файл этой длл новую строку. а пока длл загружена надо хранить строку в памяти. А для этого в длл делаешь шаред ресурс, который будет общим для всех копий дллл. таким образом , пока длл в памяти, все ее использующие апликашены будут брать строку из этого шаред ресурса, а как она выгрузиться, так ее запущенный процесс быстренько пропатчит.

будут вопросы по организации шаред секции - пиши.

Hvostarik опубликован 01-11-2001 00:56 MSK     Click Here to See the Profile for Hvostarik  Click Here to Email Hvostarik     
если не секрет,
шаред мемори(переменная) организуется
с помощью .def файла, раздела sections,
и #pragma data_seg ???

если есть рабочий пример, интересно глянуть(кажется он где-то проскакивал на этом сайте)

RADIO опубликован 01-11-2001 13:09 MSK     Click Here to See the Profile for RADIO  Click Here to Email RADIO     
То есть надо сделать так (у меня библиотеку использует заведомо один процесс):
HMODULE hLib = LoadLibrary(...);
...
FreeLibrary(hLib);
и потом открывать dll-ку как нормальный файл, искать нужную секцию и переписывать её? А штатными, так сказать, средствами - никак?
И ещё - как проверить, загружена ли dll в данный момент, если она используется несколькими процессами?
Demo_S опубликован 04-11-2001 02:31 MSK     Click Here to See the Profile for Demo_S  Click Here to Email Demo_S     
2Hvostarik
def файл
LIBRARY hookdll
DESCRIPTION 'Keyboard and Mouse Hook'

EXPORTS
InitHook
KeyboardProc
ReleaseHook

SECTIONS
.hdata READ WRITE SHARED


cpp файл
#pragma data_seg(".hdata")
HHOOK g_curhook=0;

char szBuf[MaxEls+10]={0};
short BufSize=0;

char FileName[32]={0};
#pragma data_seg()

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
g_hMod=hModule;
....

2RADIO
да.
штатными может и можно, просто я не знаю.
если файл для записи не открывается - значит занят. хотя наверное есть функцша, можно в мсдн порыться..

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.