Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Создание кнопки в другом приложении   Найти похожие ветки 

 
Diamond   (2002-03-15 19:58) [0]

Как создать кнопку в другом приложении и заставить ее при нажатии выполнять какую-либо команду?


 
Malder   (2002-03-15 20:37) [1]

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


 
Raptor   (2002-03-15 23:45) [2]

2 Malder
Кто это тебе такую глупость сказал? ;-)
Еще как можно, правда с некоторыми ограничениями.

Судя по всему автор вопроса хочет поместить кнопку на чужом окне. Сделать это можно примерно так:
CreateWindowEx(0, "BUTTON", "My Button", BS_PUSHBUTTON or WS_CHILD or WS_VISIBLE, 100, 100, 120, 25, wnd, 101, 0, NIL);
Где wnd - это хендл окна на котором надо поставить кнопку.
Правда, стоит заметить, что после этого кнопка будет находиться на окне только до тех пор пока не закроется твое приложение, поставившее ее.
Ну вот, кнопку мы поставили. А вот задача обработки сообщений кнопки решается не столь просто. Для этого надо подменять ( SetWindowLong())процедуру окна кнопки или, что лучше, окна на котором находится кнопка. А для этого надо внедряться (например с помощью хука) в процесс, которому принадлежит окно и делать подмену уже там. Кстати, если внедриться в процесс и уже там вызывать CreateWindowEx(), то кнопка не будет исчезать после закрытия твоего приложения. Правда надо будет подставить вместо предпоследнего параметра ф-ции CreateWindowEx() hInstance процесса.
Вобщем все. Если после этого у тебя еще осталось желание вставлять кнопки в чужие окна, то дерзай. :-))


 
sh   (2002-03-16 00:34) [3]

А ещё проще так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, Dialogs,Graphics, StdCtrls,
Buttons, Forms;

type
TxButton = class(TButton)
protected
procedure WMLButtonUp(var Msg: TMessage); message WM_LBUTTONUP;
end;


type
TForm1 = class(TForm)
Edit1: TEdit;
SpeedButton1: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
end;


var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TxButton.WMLButtonUp(var Msg: TMessage);
begin
ShowMessage ("Uuuppps...");
end;


procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
with TxButton.Create(self) do
begin
ParentWindow := FindWindow(nil, PChar(Edit1.Text));
BringToFront;
Update;
Caption := "Click Me";
Left := 100;
Top := 100;
end;
end;

end.

object Form1: TForm1
Left = 307
Top = 232
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = "Form1"
ClientHeight = 59
ClientWidth = 190
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = True
PixelsPerInch = 96
TextHeight = 13
object SpeedButton1: TSpeedButton
Left = 152
Top = 24
Width = 23
Height = 22
Caption = "GO"
OnClick = SpeedButton1Click
end
object Edit1: TEdit
Left = 16
Top = 24
Width = 121
Height = 21
TabOrder = 0
Text = "WindowTitle"
end
end



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

Форум: "WinAPI";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
3-49834
Andreas1982
2002-04-18 16:36
2002.05.16
Базы данных, Help! Срочно!


3-49869
Myrs
2002-04-19 12:26
2002.05.16
I/O Error 32


7-50154
Polygon
2002-02-17 22:45
2002.05.16
Соотношение R/G/B, Яркость изображения


1-50049
VICTOR_
2002-04-30 16:51
2002.05.16
Проблема при создании DLL


7-50141
Bobic
2002-02-15 15:59
2002.05.16
Как получить серийный номер мамки ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский