![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Handle объекта в документе html [D6, D7, Win2k, WinXP]
Строгов Артем © (2004-10-21 13:30:00)Есть документ HTML. В теге <object> указан flash-файл. Собственно нужно получить его handle в окне документа.
Очень нужно, прошу помочь кто знает.
Строгов Артем (2004-10-22 15:33:00) [1]Огвомное спасибо, сейчас буду тестить.
easy (2004-10-22 11:02:00) [2]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
procedure WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function EnumChildProc(Window: HWND; LParam: Longint): Bool; stdcall;
var
ClassName: array [0..255] of Char;
const
FLASH_AX = 'MacromediaFlashPlayerActiveX';
begin
Result := True;
GetClassName(Window, ClassName, SizeOf(ClassName));
if not (TStringList(LParam) is TStringList) then
raise Exception.Create('EnumChildProc was not passed a TStringList');
if ClassName = FLASH_AX then
TStringList(LParam).Add('$'+IntToHex(Window, 8) + ' -> ' + ClassName);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with Memo1 do begin
Clear;
Height:=150;
Align:=alBottom;
ScrollBars:=ssBoth;
end;
with WebBrowser1 do begin
Align:=alClient;
Navigate('чтототама.htm');
end;
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Captions: TStringList;
ErrCode: DWORD;
begin
Captions := TStringList.Create;
try
SetLastError(0);
if EnumChildWindows(WebBrowser1.Handle, @EnumChildProc,
Longint(Captions)) then
Captions.Add('End of child list')
else if GetLastError = NO_ERROR then
Captions.Add('No child windows were found')
else
begin
ErrCode := GetLastError;
Captions.Add('EnumChildWindows failed - ' +
SysErrorMessage(ErrCode));
end;
finally
Memo1.Clear;
Memo1.Lines.Assign(Captions);
Captions.Free;
end;
end;
end.
Строгов Артем (2004-10-21 23:33:00) [3]Большое спасибо. С одним файлом работает, а как получить если есть фреймы?
easy (2004-10-21 16:30:00) [4]
var
h,flash:HWND;
begin
h := GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD);
flash:=FindWindowEx(h,0,'MacromediaFlashPlayerActiveX','');
if flash<>0 then
caption:='$'+inttohex(h,8)
else
caption:='Not Found';
VMcL (2004-10-21 14:34:00) [5]> Собственно нужно получить его handle в окне документа.
А откуда сведения, что у object'а есть некий handle?