Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Фишки с окнами чужих прог


Автор: COOLHack 8.2.2008, 18:18
имеется прога, в ней есть дочернее окно. Нужно чтоб моя прога открыла это окно чужой проги

я знаю имя дочернего окна, и имя главного окна(того, от куда надо вызвать дочернее) как это сделать?

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

З.Ы. Уже не первый день гугл мучаю, всё в пустую, жду помощи

Автор: source777 8.2.2008, 18:47
А ты бы его не мучил, а спросил напрямую - http://www.google.ru/search?q=%D1%8D%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+%D0%BD%D0%B0%D0%B6%D0%B0%D1%82%D0%B8%D1%8F+%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8

Автор: COOLHack 8.2.2008, 19:04
Эт не то! Я так спрашивал! Условие такаво что я не знаю координаты кнопки! Нужно узнать её handle (кнопки) и уже тогда нажать, используя его! handle  окна мне известен! 
Нужно нйти handle  кнопки, и с иметировать нажатие!

Жду помощи

Народ, кто знает, помогите, буду очень благодарен! 

Автор: Exai1e 8.2.2008, 20:00
Нужно нйти handle  кнопки, и с иметировать нажатие!
Код

sendmessage, postmessage

см. поиск

Автор: COOLHack 8.2.2008, 22:23
Да знаю что надо найти её хендл! Даж знаю как! Но там нужно указать текст, кторый на кнопке написан! А в моей ситуации на кнопке  картинка! 

Если кто поможет, буду очень благодарен! 

Автор: THandle 9.2.2008, 11:37
COOLHack, ищи не по тексту, а по классу.

Автор: COOLHack 9.2.2008, 12:02
Вау, какой полезный совет! А я типо не знаю! И типо не пробывал! 

Я запарился уже реально, сюда написал, в ожидании помощи, Искать по классу пробывал, вообщем не работает! Если не сложно, пример кода приведи

Автор: THandle 9.2.2008, 12:30
Код

procedure TForm1a.aaaClick(Sender: TObject);
var
  h : HWND;
begin
  h := FindWindowEx(FindWindow('TForm1', nil), 0, 'TButton', nil);
  SendMessage(h, BM_CLICK, 0, 0);
end;


Находит кнопку класса 'TButton' на форме класса 'TForm1' и посылает сообщение клика. 

Для того чтобы узнать класс кнопки можно использовать программу http://dpclub.clan.su/load/0-0-0-2-20 

Автор: COOLHack 9.2.2008, 13:02
А если там кнопок 10 таких? как он себя поведёт? всем пошлёт?

Чёт у меня не работает... А как хендл строки для ввода тектса в чужой проге узнать не подскажешь?

Автор: anwe 9.2.2008, 13:18
Цитата(COOLHack @  9.2.2008,  12:02 Найти цитируемый пост)
А как хендл строки для ввода тектса в чужой проге узнать не подскажешь?
Подозреваю, что Winspy это может и может WS32, что входит Борладовсикй пакет с Делфи.
Можешь попробывать с помощью это:

Автор: COOLHack 9.2.2008, 14:59
И что в этом файле? не рискну запускать...  Лучшеб исходник выложил

Автор: COOLHack 9.2.2008, 15:16
Ну мне кто нить поможет? 

Автор: anwe 9.2.2008, 15:54
В этом файле показывается название класса, хэндл окна и его оконная процедура. Все этот справедливо для окон, что находятся под мышкой. Нажми хук и увидешь эффект. После закрытия проги все снимается. Ничего вредоносного. Вот и увидишь хэндл нужных окошек.

Автор: THandle 9.2.2008, 22:25
COOLHack, если не получается ничего, то можешь выслать мне на E-Mail ту програмку в которой надо нажать кнопку и то что у тебя получается. В свободное время посмотрю.

Автор: COOLHack 9.2.2008, 22:32
Ок

Автор: source777 9.2.2008, 23:25
Цитата(COOLHack @  9.2.2008,  13:02 Найти цитируемый пост)
А если там кнопок 10 таких? 
А что функцию GetWindow типа отменили, перебирай хендлы пока до нужной не дойдёшь, вобщем RTFM.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)