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

Вниз

Создать свою кнопку на   Найти похожие ветки 

 
LeSS ©   (2002-04-04 15:42) [0]

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


 
Song ©   (2002-04-04 15:51) [1]

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


 
PVOzerski ©   (2002-04-04 16:45) [2]

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


 
PVOzerski ©   (2002-04-04 16:50) [3]

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


 
SasaR   (2002-04-04 17:01) [4]

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

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

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


 
Suntechnic ©   (2002-04-04 18:29) [5]

>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.


 
LeSS ©   (2002-04-05 09:59) [6]

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

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

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


 
cok ©   (2002-04-08 19:52) [7]

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


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

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


 
LeSS ©   (2002-04-16 10:46) [9]

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

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

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


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

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



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

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

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


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

CreateWindow ?
Не понял.



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
3-54976
Yakudza
2002-05-11 16:35
2002.06.17
System DSN


6-55256
esprit_bel
2002-04-08 05:32
2002.06.17
IP


3-55023
int64
2002-05-24 07:48
2002.06.17
UDF в качестве перегружаемой функции.


3-54984
RiNat
2002-05-23 04:48
2002.06.17
THalcyonDataSet для чайника


1-55156
MAxiMum
2002-05-29 17:54
2002.06.17
Вывод в стандарте Юникод