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

Вниз

поместить чужое окно(приложение) в свое окно(window, panel, etc.)   Найти похожие ветки 

 
Teenager ©   (2006-09-01 18:58) [0]

Здравствуйте, добрые люди :) вы случаем не знаете, как поместить чужое окно (калькулятор, проигрыватель) в свое окно - или дочерний компонент своего окна?

1) мысль: по идее можно, ведь можно же делать свой Desktop как-то... просто при вызове чужого приложения надо бы как-то сделать своё - родителем чужого окна
2) желательно - отсутствие использования VCL. потому и пишу в тему WinAPI.
3) буду очень благодарен, если поможете :) на всякий случай мой ящик shmromacs@yandex.ru
4) желательно без COM и всяких там интерфейсов.
5) вероятнее всего, в конечном итоге будет использоваться либо Дельфи, либо С#... надеюсь, предложенные варианты возможно будет реализовать в любой среде разработки.

Заранее спасибо :)


 
PSPF2003 ©   (2006-09-01 19:31) [1]

Windows.SetParent(Окно.Handle, GetDesktopWindow);


 
PSPF2003 ©   (2006-09-01 19:32) [2]

FindWindow тебе поможет.


 
PSPF2003 ©   (2006-09-01 19:34) [3]

Может лучше старый оставить?


 
Teenager ©   (2006-09-01 19:45) [4]

ааам... дякую :) как я понял - если найти хэндл чужого окна, и вызвать апишную функцию SetParent, передав туда хэндл моей формы и хэндл чужого окна, то чужое окно налегке согласится рисоваться и работать в моем маленьком оконце?

Если да, то все намного легче, чем я думал.
Спасибо. Проверю. Отвечу.


 
PSPF2003 ©   (2006-09-01 19:50) [5]

М.Фленов

unit MainUnit;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, Menus;

type
 THaosForm = class(TForm)
   bStart: TButton;
   Bevel1: TBevel;
   bDelMenu: TButton;
   MainMenu1: TMainMenu;
   Windows1: TMenuItem;
   linux1: TMenuItem;
   Windows2: TMenuItem;
   Linux2: TMenuItem;
   Linux3: TMenuItem;
   Linux4: TMenuItem;
   bDelCaption: TButton;
   procedure bStartClick(Sender: TObject);
   procedure bDelMenuClick(Sender: TObject);
   procedure bDelCaptionClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 HaosForm: THaosForm;

implementation

{$R *.dfm}

function EnumWindowsProc(h: hwnd; lparam:Integer): BOOL; stdcall;
begin
if IsWindowVisible(h) then
 SetParent(h, HaosForm.Handle);

Result:=true;
end;

function EnumWindowsProc1(h: hwnd; lparam:Integer): BOOL; stdcall;
begin
if IsWindowVisible(h) then
 SetMenu(h, HaosForm.MainMenu1.Handle);

Result:=true;
end;

function EnumWindowsProc2(h: hwnd; lparam:Integer): BOOL; stdcall;
begin
if IsWindowVisible(h) then
 SetWindowLong(h, GWL_STYLE, GetWindowLong(h, GWL_STYLE) - WS_CAPTION);

Result:=true;
end;

procedure THaosForm.bStartClick(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc, 0);
end;

procedure THaosForm.bDelMenuClick(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc1, 0);
end;

procedure THaosForm.bDelCaptionClick(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc2, 0);
end;

end.


 
Teenager ©   (2006-09-01 23:55) [6]

ааааааааааа :) все работает ^_^

оч просто и понятно :))

даже сложные приложения или даже части их - все прекрасно залазит в мои окна!

приятно, что есть люди, которые никогда не против помочь )) за что им большое спасибо и моя счастливая улыбка :)



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
2-1167305531
vain
2006-12-28 14:32
2007.01.21
Сообщение о закрытии от Винды.


15-1167335895
1eof
2006-12-28 22:58
2007.01.21
Какой ты программист? Тест


15-1166817209
Ученик чародея
2006-12-22 22:53
2007.01.21
FSF начинает кампанию против Microsoft Vista.


2-1167192241
Marat
2006-12-27 07:04
2007.01.21
преобразовать в дату


15-1167456185
Джо
2006-12-30 08:23
2007.01.21
Алкоголизьм!