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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дескриптор окна, Дескриптор 
:(
    Опции темы
appleVin
Дата 2.4.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Прошу помощи. Как мне получить дескриптор окна из Dll которое открываю в потоке??? smile 
PM MAIL   Вверх
Rennigth
Дата 2.4.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



А сохранить его гденибудь нельзя? 
Что ты знаеш о окне? Имя? Класс?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
appleVin
Дата 2.4.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имени окна не знаю.
вот обработчик Execute потока в котором стартую форму из Dll
Код

 Procedure NoBaseThread.Execute;
 var h:THandle;
    T_num: integer;
 Go2: procedure();
 begin
  T_num:= Thread_num; // присвоение номера потока в переменную в самом потоке
  NBase[T_num].FreeOnTerminate:=true; // задать освобождение потока по его закрытию
    try
   h:=LoadLibrary(pchar(ExtractFilepath(application.ExeName)+Lib[T_num]));
    if h<>0 then begin
     Hlib[T_num]:=h;
     @GO2:=GetProcAddress(h,pchar(Point[T_num]));
     GO2();
     freeLibrary(h);
    end else messagebox(Application.Handle,pchar('Отсутствует модуль '+Lib[T_num]),'Ошибка.',MB_OK+MB_ICONERROR);
  finally
   NBase[T_num]:= nil; // принудительная очистка
   Hlib[T_num]:=0;
 end;

атладчиком смортю: когда выполняется строчка 
Код
     GO2();

то запускается форма, и поток когда форму закрываю, то выполняется сточка 
Код
  freeLibrary(h);
 ......и т.д.
так в кокой же момент ловить хендл окна??? а зетем как эго ловить???
PM MAIL   Вверх
Rennigth
Дата 2.4.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Ну сделай чтобы GO2 тебе возвращала handle формы...


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
appleVin
Дата 2.4.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Ну сделай чтобы GO2 тебе возвращала handle формы...

Воо, идея интересная, вот только как, я в этом ваще 0, подскажи плиз!!!
PM MAIL   Вверх
Rennigth
Дата 2.4.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Ну как-нибудь так:
Код

 Procedure NoBaseThread.Execute;
 var h:THandle;
    T_num: integer;
 Go2: function(): THandle;
 begin
  T_num:= Thread_num; // присвоение номера потока в переменную в самом потоке
  NBase[T_num].FreeOnTerminate:=true; // задать освобождение потока по его закрытию
    try
   h:=LoadLibrary(pchar(ExtractFilepath(application.ExeName)+Lib[T_num]));
    if h<>0 then begin
     Hlib[T_num]:=h;
     @GO2:=GetProcAddress(h,pchar(Point[T_num]));
     NewHandle := GO2();
     freeLibrary(h);
    end else messagebox(Application.Handle,pchar('Отсутствует модуль '+Lib[T_num]),'Ошибка.',MB_OK+MB_ICONERROR);
  finally
   NBase[T_num]:= nil; // принудительная очистка
   Hlib[T_num]:=0;
 end;




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
appleVin
Дата 2.4.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно таким же макаром получить заголовок этой формы?
PM MAIL   Вверх
Rennigth
Дата 2.4.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Конечно можно, в чем проблема?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
appleVin
Дата 2.4.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а Это будет Title или Caption ?
PM MAIL   Вверх
Rennigth
Дата 2.4.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Ну что ты будешь из функции возвращать то и будет.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
appleVin
Дата 2.4.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что-то не получается, вот фунция:
 
Код

Go2: function(): Caption;

и в обработчике потока:
Код

...
FormCaption[i]:=Go2();
....

нечего не получаю smile , в чом может быть проблемма?

Добавлено через 5 минут и 54 секунды
а с хендлом получается число типа "2", можел ли хендлл быть из одной цифры?
PM MAIL   Вверх
Rennigth
Дата 2.4.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Код dll-ки дафай.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
appleVin
Дата 2.4.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ааа, Dll не моя, поэтому и кода у меня нет, мне известно только имя Длл и процеддура вызова формы  smile 
PM MAIL   Вверх
ama_kid
Дата 2.4.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата
ааа, Dll не моя, поэтому и кода у меня нет

appleVin, такие подробности сразу говорить надо smile
Посмотри в Spy++ класс окна Dll - может там можно его узнать - тогда можно будет просто FindWindow натравить на него по классу окна...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
appleVin
Дата 2.4.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хотя с другой Dll , дескриптор получается 8ми значный, а Caption  пустой. smile

Добавлено через 4 минуты и 17 секунд
Цитата

Посмотри в Spy++ класс окна Dll - может там можно его узнать - тогда можно будет просто FindWindow натравить на него по классу окна...

 сори конечно за ламерство, но что за зверь этот Spy++, 
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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