Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с хэндлом 
:(
    Опции темы
ASGDeveloper
Дата 7.11.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: 1
Всего: 1



Возник вопрос, можно ли хэндл полученный локально перевести в глобальный. Приведу пример:
Получение локального хэндла:
Код

var
  h: THandle;
  Reg: TRegistry;
begin
  h := LoadLibrary('test.dll');
  ...
  Reg.WriteInteger('handle', h);
  ...
end;

Попытка использовать его глобально (из другой программы после выполнения указанного выше кода):
Код

var
  h: THandle;
  Reg: TRegistry;
begin
  h := ReadInteger('handle');
  @MyProc := GetProcAddress(h, 'MyProc');

Проблема в том, что указанный выше код не работает (и в принципе не должен), поэтому встает вопрос "что делать". smile
PM MAIL   Вверх
Snowy
Дата 7.11.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Передай имя dll-ки и в другой программе тоже загрузи.
Как ты собираешься вызывать процедуру, не подключив dll к процессу?
PM MAIL   Вверх
ASGDeveloper
Дата 7.11.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: 1
Всего: 1



Цитата

Как ты собираешься вызывать процедуру, не подключив dll к процессу? 

Оч просто smile Длл-ку загружает один процесс, а юзают ее все. smile
PM MAIL   Вверх
Snowy
Дата 7.11.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну тогда твой процесс должен подключить эту dll к другим процессам, если они сами не хотят этого делать.
Не загружая dll в адресное пространство процесса юзать её невозможно.
То что она загружена в адресное пространство другого процесса - ничего не значит.
Это чужое пространство. Юзать его нельзя smile
PM MAIL   Вверх
dumb
Дата 7.11.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(ASGDeveloper @  7.11.2006,  15:25 Найти цитируемый пост)
Длл-ку загружает один процесс, а юзают ее все.

класс! smile
чтобы "юзать", надо создать проекцию библиотеки в адресном пространстве "юзающего" процесса, чем и занимается LoadLibrary.

btw, хэндлы у каждого процесса свои.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.