Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хранение данных в dll, используемой несколькими процессами


Страницы:   1 2

EgorovAlex ©   (2012-07-27 09:20:00) 

Где хранить уникальные для каждого процесса данные?

Пока есть такая мысль: создать запись

record
PID: // Id процесса
... данные
end;


создать массив из таких записей и в dll пробегать по этому массиву, находить свой Id и оттуда брать свои данные.

Или есть более правильный и быстрый способ?


EgorovAlex   (2012-07-27 10:09:00) [21]

Как получить из dll хендл окна? Сейчас я его получаю и сохраняю в HCBT_ACTIVATE хука WH_CBT, и это не работает для нескольких окон


Медвежонок Пятачок   (2012-07-27 10:09:00) [22]

ну правильно. оно же у тебя лежит в единственной глобальной переменной


EgorovAlex   (2012-07-27 10:07:00) [23]

Исходная задача: есть процесс проводник, подгружаю к нему свою dll, для окна очереди печати принтера добавляю свои пункты меню, расширяю функционал. Все задачи решены, кроме вот этой возникшей.

Имя принтера получаю в хуке WH_CBT, обрабатывая HCBT_CREATEWND, там передаётся заголовок окна (который в этот момент содержит имя принтера).

Меню своё в главное меню окна добавляю в хуке WH_CBT, обрабатывая HCBT_ACTIVATE, т.к. в этот момент уже всё создано и можно безболезненно добавить меню (с проверкой, чтобы добавление было только один раз).

Нажатия на пункты меню получаю в хуке HCBT_ACTIVATE, обрабатывая HCBT_ACTIVATE.

Пока тестировал на одном окне - преблемы не замечал, как отрыл очередь второго принтера, в первом окне начал получать имя принтера из второго окна.


Медвежонок Пятачок   (2012-07-27 09:59:00) [24]

разные окна различаем?
различаем.
тогда в чем твоя беда?


Медвежонок Пятачок   (2012-07-27 09:58:00) [25]

окно1_капшен=капшен1
окно2_капшен=капшен2


Юрий Зотов   (2012-07-27 09:57:00) [26]

Сначала Вы говорили о нескольких процессах и DLL, потом об одном процессе (притом чужом) и окнах... уж определитесь как-то.

В чем исходная задача?


EgorovAlex   (2012-07-27 09:56:00) [27]

Проблема: разные окна - разные данные. Открыто 2 окна очереди печати. В одном окне один принтер, в другом второй. Нужно данные для них раздельно хранить


EgorovAlex   (2012-07-27 09:55:00) [28]

Блин, в этом случае всё сложнее, как данные разделять-то? Есть идеи?


Медвежонок Пятачок   (2012-07-27 09:55:00) [29]

если процесс один, то в чем проблема?


EgorovAlex   (2012-07-27 09:41:00) [30]

А не, я похоже не так выразился, процесс один у меня - explorer.exe, а окна разные


MBo   (2012-07-27 09:39:00) [31]

У каждого процесса свое адресное пространство. Так что данные будут только свои родные, если не предпринимать специальный усилий.


EgorovAlex   (2012-07-27 09:31:00) [32]

Не понял, вот есть у меня, скажем FileName: string; оно для разных окон должно иметь разные значения, как их хранить?


brother   (2012-07-27 09:24:00) [33]

const
 ID1: блабла
 ID2: блабла
?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо