Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.13;
Скачать: CL | DM;

Вниз

Получить хинт из другого приложения   Найти похожие ветки 

 
Free_Breeze   (2007-12-13 12:00) [0]

Имеется чужое приложение (ехе-файл) с картинками, кнопками и пр. При наведении на картинки высвечивается хинт, как его можно получить в своем приложении (сам текст, который в хинте)?
P.S. Пробовал через handle - не получилось.


 
palva ©   (2007-12-13 12:29) [1]

Если хинт реализован в виде текстового окна и известен handle этого окна, то должно получиться.


 
clickmaker ©   (2007-12-13 12:57) [2]


> как его можно получить в своем приложении

зачем?


 
Free_Breeze   (2007-12-13 15:08) [3]


> Если хинт реализован в виде текстового окна и известен handle
> этого окна, то должно получиться

Судя по всему, чужое приложение написано на Дельфи. Hint не окно, а стандартный (всплывающая подсказка типа:    
  Button1.Hint:="Button Nr.1";
  Button1.ShowHint:=true;
)
Соответственно хинт своего handle не имеет. К тому же хинты меняются динамически.


 
Free_Breeze   (2007-12-13 15:13) [4]


> зачем?

Интересный вопрос. Ну к примеру клиент онлайн игры, который написан на Дельфе. В клиенте есть панель с изображением мобов (игроки, монстрики). При наведении на изображение моба появляется стандартный Hint, в котором отображается информация о нем. Мне вот захотелось написать программку, которая при наведении мышки на моба показывала полную информацию о нем...
Что-то типа того.


 
clickmaker ©   (2007-12-13 15:14) [5]


> [4] Free_Breeze   (13.12.07 15:13)

а кроме как из хинта, описание моба не узнать?


 
Free_Breeze   (2007-12-13 15:25) [6]


> а кроме как из хинта, описание моба не узнать?

если только трафик перехватывать =(
Сейчас набросал прожку которая Handle и GetClassName показывает того, что под мышкой. Нужная панель с мобами обзывается TScrollPanel. И в том окне классов с таким именем как минимум три.


 
clickmaker ©   (2007-12-13 15:29) [7]


> [6] Free_Breeze   (13.12.07 15:25)

погоди. Если дельфовый клиент УЖЕ отображает эту инфу, зачем еще? Или ты своего клиента пишешь?


 
Free_Breeze   (2007-12-13 15:45) [8]


> Если дельфовый клиент УЖЕ отображает эту инфу, зачем еще?

Не совсем так. в хинте отображается только название моба и его уровень. Я же в своей проге (скажем так: в утилитке для клиента) хочу выводить полную информацию о нем. Например в клиенте игры при наведении на моба мышки появляется хинт "Пёс [4]". И в задумке, чтобы моя прога при этом показывала инфу такого порядка:
- Название моба: Пёс
- Уровень моба:   4
- НР моба:           200 (дабы примерно знать сколько нужно из него выбить для победы)
- Возможное вооружение: нет
- Возможная броня: Ошейник
Ну и так далее...


 
clickmaker ©   (2007-12-13 15:48) [9]


> полную информацию о нем

так если ее нету в том хинте, что ж ты так упорно его мучаешь?
Надо другие пути искать. Например, через изучение формат обмена клиент-игровой сервер


 
Free_Breeze   (2007-12-13 15:54) [10]


> так если ее нету в том хинте

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


 
morgoth   (2007-12-13 16:19) [11]

что же это за мобы такие, убегают гады )))

>>А по замыслу как раз и получается, что только мышкой на моба навел, а утилитка уже всю информацию о нем показала

а потом сама его завалила и шмот подобрала наверное?
лучше всего [9]


 
Free_Breeze   (2007-12-13 17:02) [12]


> что же это за мобы такие, убегают гады )))

Да уж, на месте не стоят )))


> а потом сама его завалила и шмот подобрала наверное?

Ну это уже бот получится, я же обычно пишу "легальные" утилитки, которые иногда проходят проверку у администрации игр. Опыт в написании уже есть, а вот с этим клиентом загвоздка получилась.


> лучше всего [9]

Обмен клиент-сервер мне не по зубам пока. Даж не знаю с чего там подступиться
вот и хотелось как попроще, отработать с тем, что и так уже в наличии


 
morgoth   (2007-12-13 17:12) [13]

А ты надеешься из хинта получить текстовую инфу о мобе и подставить свою?


 
Free_Breeze   (2007-12-13 20:01) [14]


> А ты надеешься из хинта получить текстовую инфу о мобе и
> подставить свою?

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


 
Free_Breeze   (2007-12-13 20:05) [15]


> лучше всего [9]


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


 
Free_Breeze   (2007-12-14 02:47) [16]

К тому же изучение обмена клиент-игровой сервер ни к чему не приведет.
С его помощью конечно можно узнать какие мобы в данный момент на локации, но на какого из них пользователь навел мышку этим методом не выяснишь. Одновременно мобов на локе может быть до 10 штук.


 
morgoth   (2007-12-14 10:05) [17]

>>считать хинт, что я и пытаюсь добиться, но пока безуспешно (((
хинт не обязательно можно будет считать, потому что текст может быть просто отрисован...


 
Free_Breeze   (2007-12-14 14:07) [18]


> хинт не обязательно можно будет считать, потому что текст
> может быть просто отрисован...


та нет. клиента я уже немного расковырял, Явно написан на Дельфе. Хинты стандартные.

Может подскажите функцию возвращающую содержание хинта у компонента, handle которого уже известен???


 
Free_Breeze   (2007-12-14 14:13) [19]

Накопал типа того:

object MainForm: TMainForm
 Left = 132
 Top = 152
 AutoSize = True
 BorderIcons = [biSystemMenu, biMinimize]
 BorderStyle = bsSingle
 ClientHeight = 671
 ClientWidth = 702
...
 object Panel1: TPanel
   Left = 0
   Top = 0
...
   object RegionLabel: TLabel
     Left = 202
     Top = 221
...
   object CountryLabel: TLabel
     Left = 202
     Top = 233
и так далее.

Кстати, Handle TPanel я смог найти, а вот например Handle object RegionLabel: TLabel, который на этой панели находится получить не получилось. может и тут поможете? Интересует естественно Caption у RegionLabel...


 
morgoth   (2007-12-14 14:16) [20]

Что то я не уверен что ты получишь вообще хэндл лейбла, он нарисован, по-моему.


 
morgoth   (2007-12-14 14:25) [21]

из хелпа
TLabel is a nonwindowed control that displays text  on a form.


 
Free_Breeze   (2007-12-14 15:08) [22]

Лана, буду капать по сути вопроса дальше. Если найду решение - отпишу.
Если кто-то сможет всеже помочь по данному вопросу - отпишитесь =)


 
Amoeba ©   (2007-12-14 18:46) [23]


> а вот например Handle object RegionLabel: TLabel, который
> на этой панели находится получить не получилось. может и
> тут поможете? Интересует естественно Caption у RegionLabel.
> ..

Это невозможно.



Страницы: 1 вся ветка

Текущий архив: 2008.01.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.016 c
3-1188920505
spogi
2007-09-04 19:41
2008.01.13
TTable->Paradox->QRReport


2-1197386963
mufan
2007-12-11 18:29
2008.01.13
TRichEdit: блокировка Ctrl+C (ненужное копирование)


9-1165348759
Vladimir1984
2006-12-05 22:59
2008.01.13
RGB, CMY GetRValue подбор цветов перехода...


8-1168421631
olegnik
2007-01-10 12:33
2008.01.13
Преобразование изображения 24b в 8b?


2-1197372575
Ledebev
2007-12-11 14:29
2008.01.13
Проблема с MediaPlayer ом, при одновременном воспроизведении.