Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создать свою кнопку ; на


LeSS ©   (2002-04-04 15:42:00) 

Уважаемые Мастера. Помоготе пожалуйта решить вопрос:
Нужно создать, к примеру, TButton на "чужом" окне (другого приложения).. Моих знаний пока хватает только на нахождения дискриптора этого окна, управлять ее своиствами типа Visible, и посылать на него типа WM_CLOSE. А вот как кнопку свою на нем поместить? Причем, хотелось бы, чтобы эту кнопку я смог сварганить во время design time визуально, а также чтобы она "умела работать" - у нее были onclick и т.д. и т.п.
Зарание, спасибо...


Derr   (2002-04-17 15:59:00) [1]

CreateWindow ?
Не понял.


StepByStep   (2002-04-16 15:13:00) [2]

Добавление в любое приложение

EnumWindows - смотрим какое окно
CreateWindow


Derr   (2002-04-16 14:48:00) [3]

Не отлавливал, а посылал нажатия клавиши (ее код).


LeSS   (2002-04-16 10:46:00) [4]

Получил письмо от PVOzerski. не имел возможности вовремя ответить. т.к. был в отъезде. Большое спасибо. Мыло у меня не работает, поэтому пишу через чат.

>>Derr Но можно через нажатия клавишь...
Как? Я так понял, что Вы предлагаете написать резидент, который бы отлавливал нажатие по клаве. Но это не совсем то,что мне нужно, к сожалению. Если Вы имели ввиду чтото другое, поясните пожалуйста, на примере если можно.

А если зделать так.......Писать код создания кнопки так, какбудто создаешь ее на форме своего проекта.Затем инструментами склеиваем две проги - прогу с формой, на которой должна создаваться кнопель и мое приложение, скомп. на Делфи. (инструменты вроде тех, которые лежат на хакерских сайтах, может, кто знаком, из двух exe получаем один...). Здесь, мне кажется, решается вопрос о чужом пространстве..Только вот как отлаживать такую программу:)...
Это лишь мои рассуждения, и я начинаю эксперимент.. Буду рад услышать отзывы по этому поводу, если кто хочет...если кто чтото знает или если ктото хочет сказать "Не делай так, взорвется:)" на собственном опыте...
Спасибо, до свидания...


Derr   (2002-04-11 16:35:00) [5]

Низя в чужое кнопку!
Но можно через нажатия клавишь


cok   (2002-04-08 19:52:00) [6]

2 SasaR
Что-то у меня ваш пример не работает (по-моему он слишком прост :).


LeSS   (2002-04-05 09:59:00) [7]

Спасибо ВСЕМ за то что уделили время....на вопрос от Song отвечаю да....в этом вся и фишка)
Полностью согласен с Suntechтic"ом - не так все просто, и про пространство - правда..."GetWindowLong, SetWindowLong и, может быть, CreateRemoteThread" - надо переварить.....ловушку можно поставить, но както не красиво, через задницу...:))))

>PVOzerski © (04.04.02 16:50)
>...Если надо, могу и код продемонстрировать.

Спасибо, с удовольствием.....


Suntechnic   (2002-04-04 18:29:00) [8]

>PVOzerski © (04.04.02 16:50)
>...Если надо, могу и код продемонстрировать.
Эта реплика конечно не ко мне, но ИХМО этот код у каждого на машине "валяется" :). Достаточно открыть исходники PictureDialog

>LeSS © (04.04.02 15:42)
Да не всё так просто как советуют. Чтобы кнопочку там сотворить внедрятся в чужое адресное пространство надо. См. совет PVOzerski © (04.04.02 16:45) про CreateRemoteThread(только для Windows NT/2000/XP) или читай про ловушки SetWindowsHookEx.


SasaR   (2002-04-04 17:01:00) [9]

А можно еще проще: -

b := TMyButton.Create(nil);
b.ParentWindow := Wnd;

где Wnd - хендл окна, в котором нужно создать нашу кнопку, а "b"-наша кнопка, потомок стандартной :)


PVOzerski   (2002-04-04 16:50:00) [10]

Дополняю мысль: я, на самом деле, в стандартный SaveDialog (но своего приложения, так что
с адресным пространством проблем не возникало) дополнительные Radiobutton"ы добавлял таким
путём, притом вполне функциональные. Да ещё и размер диалога подправлял. Если надо, могу и
код продемонстрировать.


PVOzerski   (2002-04-04 16:45:00) [11]

>А саму процедуру onClick тоже хотите в чужое приложение забабахать?
IMHO, можно и это, если аккуратно. Не пробовал, правда, но, скорее всего,
удачное сочетание GetWindowLong, SetWindowLong и, может быть, CreateRemoteThread
должно бы позволить сотворить и такое.


Song   (2002-04-04 15:51:00) [12]

А саму процедуру onClick тоже хотите в чужое приложение забабахать?
CreateWindow
CreateWindowEx


Наверх

Титульная страница Поиск, карта сайта Написать письмо