Форум: "WinAPI";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Вниз
поместить чужое окно(приложение) в свое окно(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 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c