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 и оттуда брать свои данные.

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


Добряк   (2012-07-30 13:50:00) [1]

На сайте "Домашнее коневодство" тебе бы больше помогли


EgorovAlex   (2012-07-30 10:42:00) [2]

В общем я решил эту задачу следующим образом - я же во всех перехваченных событиях в хуках получаю хендл окна, и искать его не надо, просто создаю массич из пар - (хендл:имя принтера), и при возникновении собития в хуке, беру имя принтера из массива по полученному хендлу.

Всем помогающим спасибо


Cobalt   (2012-07-28 01:05:00) [3]

Тебе длл для чего - хук ставишь?
Как твой код вызывается из проводника? Отсюда и надо плясать.


EgorovAlex   (2012-07-27 15:53:00) [4]

Если бы это были хотя бы разные потоки, можно было бы обойтись threadvar, поэтому и спросил про Thread Local Storage...


EgorovAlex   (2012-07-27 15:44:00) [5]

Как показало исследование: из длл для разных окон (разные очереди принтеров) возвращаются одинаковые значения GetCurrentProcessId и GetCurrentThreadId. Как их ещё можно идентифицировать?


EgorovAlex   (2012-07-27 15:37:00) [6]


> Гланды удалять можно не только через рот.


У нас сейчас разговор такой, раз уж на аналогии перешли:
А-Хочу удалить гланды через ж...
-Не это не правильно!
А-Ну тогда попробую через п...
-Тоже фигня
А-Буду удалять через рот, как?
-Ты уж определись, что тебе нужно, а то сразу всё хочешь...


Плохиш   (2012-07-27 15:22:00) [7]


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

>  Никогда на уровне апи не разбирался с окнами, нужды не
> было.
>

Гланды удалять можно не только через рот.


EgorovAlex   (2012-07-27 15:20:00) [8]

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

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


Anatoly Podgoretsky   (2012-07-27 15:16:00) [9]

> Плохиш  (27.07.2012 15:11:24)  [24]

Хочется все и сразу


Плохиш   (2012-07-27 15:11:00) [10]

Процессы, потом окна, теперь трэды.
Ты бы разобрался сначала, что хочешь-то.


EgorovAlex   (2012-07-27 15:00:00) [11]

Все мы новички в определённой области.

Накопал Thread Local Storage - верное направление?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686749(v=vs.85).aspx


Anatoly Podgoretsky   (2012-07-27 12:20:00) [12]

> Плохиш  (27.07.2012 12:12:21)  [21]

То есть быть программистом!


Плохиш   (2012-07-27 12:12:00) [13]


> EgorovAlex ©   (27.07.12 11:36) [19]
>
> Спасибо, Плохиш, сказал - как отрезал. Я в ветке начинающих
> и разместил вопрос. Как добавить это свойство?

Для того чтобы считаться начинающим, надо иметь базовые знания.


brother   (2012-07-27 11:57:00) [14]

я тебе все сказал...


EgorovAlex   (2012-07-27 11:36:00) [15]

Спасибо, Плохиш, сказал - как отрезал. Я в ветке начинающих и разместил вопрос. Как добавить это свойство?


Плохиш   (2012-07-27 11:20:00) [16]


>  Хранение данных в dll, используемой несколькими процессами
>
> EgorovAlex ©   (27.07.12 09:20)
>
> Где хранить уникальные для каждого процесса данные?


> EgorovAlex ©   (27.07.12 09:41) [4]
>
> А не, я похоже не так выразился, процесс один у меня - explorer.
> exe, а окна разные
>

Так подумать надо перед выразиться.

PS. Кстати, даже начинающий программист сможет добавить классу окна требуемое свойство.


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

По идее можно попробовать GetForegroundWindow, т.к. раз уж юзер тыкает по меню, то это окно активно, но могут быть подводные камни?


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

Спасибо, к этому и склонялся, но как мне сейчас в dll определяться, в каком окне я нахожусь? Сначала думал по Id процесса, он оказался одинаковый, как мне из длл получить хендл окна, только по нему, похоже, можно определять своё нахождение


Anatoly Podgoretsky   (2012-07-27 10:28:00) [19]

> EgorovAlex  (27.07.2012 09:56:07)  [7]

Раздельное хранения реализуется отдельными переменным, или массиво подобными
объектами


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

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

Читать как:
Нажатия на пункты меню получаю в хуке WH_GETMESSAGE, обрабатывая WM_COMMAND.


Страницы:   1 2

Наверх

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