首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

获取WebBrowser中FLASH句柄有关问题

2012-08-31 
获取WebBrowser中FLASH句柄问题function EnumerateChildWindows(hWnd: HWND lParam: LPARAM): BOOLstdca

获取WebBrowser中FLASH句柄问题
function EnumerateChildWindows(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
var
  ClassName: Array[0..255] of char; // this holds the class name of our child windows
begin
  GetClassName(hWnd,ClassName,255);
  if ClassName='MacromediaFlashPlayerActiveX' then
  begin
  showmessage(inttostr(hWnd));
  end;
  Result:=TRUE;
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  WndChild: THandle;
begin
  WndChild := FindWindowEX(TWebBrowser(ASender).Handle, 0, 'Shell DocObject View', nil);
  WndChild := FindWindowEX(WndChild, 0, 'Internet Explorer_Server', nil);
  EnumChildWindows(WndChild,@EnumerateChildWindows,0);
end;

我本来是想获取所有FLASH的句柄(包括框架中的),但是上面的代码只能获取到主页面中的FLASH句柄,不能获取到框架页中的句柄

[解决办法]

探讨
我主要想屏蔽FLASH的弹出菜单,改成自己的菜单

[解决办法]
var
w:THandle;
i:integer;
ClassName: Array[0..255] of char;
begin
w:=GetWindow(WebBrowser1.Handle,GW_Child);
for i:=1 to 2 do w:=GetWindow(w,GW_Child);
while w<>0 do
begin
GetClassName(hWnd,ClassName,255);
if ClassName='MacromediaFlashPlayerActiveX' then
begin
showmessage(inttostr(hWnd));
break;
end;
w:=GetWindow(w,HWNDNEXT);
end;
end;

热点排行