Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить хендл формы стороннего приложения, если я не вижу её спаем(и др.)?  (Прочитано 18944 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Travolta
Интересующийся

ua
Offline Offline

« : 02-09-2009 11:10 » 

Здравствуйте? господа программисты.

Собственно, у меня вот такой вопрос .
Есть приложение . В нём есть кнопки. Я их хочу программно нажимать.
Если вы расскажете, как их найти - будет чудесно.
А если ещё добавите, как их нажать, я, наверно, даже обрадуюсь.

Благодарю за внимание.

Ваш Гоша.
« Последнее редактирование: 13-09-2009 10:09 от Sel » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 02-09-2009 11:46 » 

Гоша, а в чем ты хочеш жать на клаву. В каком языке программирования, да и в какой ОС. Чтоб твою тему можно было перебросить в правильном направлении.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 02-09-2009 15:37 » 

>>если я не вижу её спаем

если спай не видит, значит контролы нарисованы вручную. Тогда остаётся попробовать тем же спаем определить, какие сообщения происходят при щелчках по кнопкам. А если сообщений не наблюдается, тогда сообщение есть мышиное, и жать, соответственно, путём посылки WM_LBUTTONDOWN+WM_LBUTTONUP в координату кнопки.

Это так, мысли, а расскажи ка, что у тебя там вообще происходит ? )
Записан

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #3 : 02-09-2009 19:09 » 

Не видеть спаем может означать ещё и "я не могу найти её в спае".

Я сам делал такие вещи, с ещё одним окном поверх всей формы. Тогда контролы на форме только по списку можно вычислить.
« Последнее редактирование: 03-09-2009 06:19 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 03-09-2009 02:50 » 

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

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #5 : 03-09-2009 06:21 » 

Лёш, я про это и говорю. Если сверху блокирующее окно, то именно этот прицел и не поможет. Он будет "хватать" только эту форму, а не окошки под ней. Ну и ессно если они ещё и отрисованы...
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 03-09-2009 07:05 » 

Джон, а как такое блокирующее окно сделать ? Не могу понять... Если окно поверх и видимо - то контролы не будет видно
Записан

Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #7 : 03-09-2009 11:54 » 

Лёш, ща точно уже не помню. Давно дело было. Был уже работающий проект (не мой, потому и не запомнил) с туевой хучей контролов. Их надо было в определённый момент сделать недоступными юзверям. Причём не все. Я его ещё по регионам "вычерчивал". Окно ессно прозрачное. Вроде бы фишка была в стиле (в башке крутится WS_CLIPSIBLINGS).
Но при ооочень большом желании могу найти. Тебе надо или просто так спросил?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Travolta
Интересующийся

ua
Offline Offline

« Ответ #8 : 03-09-2009 11:57 » 

Спасибо вам, так сказать, за участие.

Значит я малость не во всём соображаю, поэтом сильно не пинайте.
Приложение есть "Total Influence Online". Игра скачивается с сайта игры, затем устанавливается.
И по-ходу юзается.
У меня возникло желание в ней поковыряться. Раньше я делал варварскими методами. Трэйсил пиксели через GetPixel (). и при совпадении N-пикселей жал кнопку через mouse_event. по координатам мыши.
Знаю, что  за такое надо выгонять из области программирования вообще.

НО - оно работало. и этим всё обьяснялось.
Теперь осознаю, что прогресс не должен стоять не месте. И знаю, что люди, не мучаясь, получают хэндлы всего чего можно и работают с ними.
Открыл спай --
0220694 "Total Influence Online" TForm1
и
0013061A "Total Influence Online" TApplication.
Я в принципе где-то торможу может. Вы там направьте, если что.
Значит затем открыл InqSoft.(отменная прога).
Прицелом навожу на кнопку а оно пишет ту же чухню, что и для главного окна
Записан
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #9 : 03-09-2009 12:01 » 

Travolta, понимаешь, как Лёшка уже сказал, не всё что ты видишь есть окна с хендлами. Окно может быть одно, а всё остальное быть только нарисовано. Тогда прога сама определяет по событиям мыши, что надо делать.

А какова конкретная цель твоего занятия? Что значит "в ней поковыряться"? Что вы хочешь "выковырять"?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Travolta
Интересующийся

ua
Offline Offline

« Ответ #10 : 03-09-2009 12:06 » 

во-первых, я научусь работать вот с такими каверзными приложениями.
во-вторых научусь нажимать кнопки по хэндлам.
затем я планирую научиться управлять своим ботом сидя дома, когда он на работе.
затем переведу это всё на Java.
И какая-то порция знаний ещё добавиться.
а там глядишь устроюсь на работу тестером и стану полноценным программистом.
Записан
Travolta
Интересующийся

ua
Offline Offline

« Ответ #11 : 03-09-2009 12:08 » 

а выковырять хочу хендл кнопки или что-то , чтобы её можно было жать не через mouse_event().
Записан
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #12 : 03-09-2009 13:52 » 

Travolta, как-то ты с конца начинаешь. Тестеры - это программеры высочайшего класса, элита. С полным пониманием вещей: платформ, возможностей, способов реализации. Так что лучше начинай с программирования. Эт раз.

Два. Методом тыка ты научишься только... методу тыка. Тем более что цель какая-то авантюрная. Ещё раз - если кнопка просто нарисована, то нет у неё никакого хэндла, просто известен прямоугольник. И тогда кроме события мыши ничего не остаётся. А если это программа .NET? Что ты тогда будешь делать? Методом тыка овладевать reflections? Ага

Почитай для начала Петцольда. Тогда тебе добавится не просто порция знаний, а будет заложен фундамент прочного, надёжного, систематизированного Знания.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 03-09-2009 14:01 » 

Джон, обязательно поищи Улыбаюсь Пригодится
Записан

Travolta
Интересующийся

ua
Offline Offline

« Ответ #14 : 03-09-2009 14:27 » 

Ок. Прийдётся так и сделать.
Спасибо за внимание
Записан
zubr
Гость
« Ответ #15 : 03-09-2009 15:54 » 

Судя по названиям классов (TForm, TApplication) программа борландская. А кнопки скорее всего отрисованы в компоненте TImage. Специфика данного компонента в том, что он как таковым Windows-окном не является, то есть не создается функцией CreateWindow или CreateWindowEx. Но при всем при том имеет очередь сообщений, насколько я помню от родительской формы. То есть у самого компонента есть возможность обработки события OnClick, но зарегистрированного класса окна и соответственно хендла он не имеет. Компонент предназначен для загрузки в него изображений. Как вариант решения задачи, можно выполнить следующую последовательность действий:
1. SetCursorPos - устанавливаем курсор на кнопку
2. SendMessage WM_LBUTTONDOWN, WM_LBUTTONUP хендлу формы (класс TForm1).
Записан
Джон
просто
Администратор

de
Online Online
Пол: Мужской

« Ответ #16 : 03-09-2009 19:22 » 

Джон, обязательно поищи Улыбаюсь Пригодится

ок
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Travolta
Интересующийся

ua
Offline Offline

« Ответ #17 : 04-09-2009 12:37 » 

"1. SetCursorPos - устанавливаем курсор на кнопку
2. SendMessage WM_LBUTTONDOWN, WM_LBUTTONUP хендлу формы (класс TForm1)."

я где-то так и делаю)). Но тогда окно нельзя свернуть.
   
Записан
zubr
Гость
« Ответ #18 : 04-09-2009 13:29 » 

В функции SendMessage в качестве lParam вставляй не 0, а координаты кнопки - тогда будет работать и в свернутом состоянии. А SetCursorPos тогда не нужен.
Записан
zubr
Гость
« Ответ #19 : 04-09-2009 13:41 » 

Да, забыл уточнить - координаты должны быть относительными.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 04-09-2009 13:58 » 

>>относительными

а делается это примерно так

CPoint pnt= <координаты_экранные>;
::MapWindowPoints(0,hwnd,&pnr,1);
//pnt - относительные для окна hwnd
Записан

Travolta
Интересующийся

ua
Offline Offline

« Ответ #21 : 07-09-2009 08:58 » 

Любi друзi спасибо.
Буду разбираться!
А как-то можно GetPixel() использовать для свёрнутого окна?
« Последнее редактирование: 07-09-2009 09:48 от Travolta » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines