![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранение данных в dll, используемой несколькими процессами
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.