狸窝网页flash抓取器( 基于显示列表生成屏幕上的像素?第一步UI技术背景详解)
优采云 发布时间: 2021-12-21 22:09狸窝网页flash抓取器(
基于显示列表生成屏幕上的像素?第一步UI技术背景详解)
如何在网页中找到FLASH内部的按钮句柄?
C++技术网解答:
初看:Flash Player的内部机制
当然,看不懂也没关系。让我们简要总结一下:
渲染器如何根据显示列表在屏幕上生成像素?
第一步是视频解码。
第二步,分解显示列表,根据shape生成一个全局的边列表,然后针对rasterizer进行优化
第三步,扫描边缘(Edges),在屏幕上逐行生成像素值,并存入缓冲区。
第四步是将最终合成的位图交给浏览器并显示在屏幕上。
最后的效果是这样的:
如何在网页中找到FLASH内部的按钮句柄?" src="/source/attached/image/20160901/243_9041.jpg" alt="如何在网页中找到FLASH内部的按钮句柄?什么?” />
最后,Flash显示的是位图,你看到的一切都是位图。实际上,这就是 Direct UI。
使用Spy++(见:窗口跟踪神器Spy++和窗口反跟踪技术DirectUI整体解析)抓取优酷网页的Flash播放器,得到如下结果:
我只看到整个Flash播放器都有一个句柄,Flash内部和网页的其他部分无法抓取。
原因是 Flash 程序和网页程序实际上都是 Direct UI。当然,在网页中嵌入Flash时,Flash是作为控件使用的,因此Flash的整个元素都可以抓取到句柄。网页的其他元素和 Flash 中的各种元素(包括菜单)是不可抓取的,因为它们只是图像,而不是控件。带句柄的控件是Windows窗口,这里无法捕捉的是直接渲染图像。
所以试图在网页的 FLASH 中寻找按钮句柄是徒劳的。因为很多人不了解Flash机制和Direct UI技术,所以有盲点,还在网上到处搜索无果。因为做不到,只能找到解决问题的幻想和问题。我希望这个问题在我们站结束。
DirectUI技术请阅读:DirectUI技术背景详解及DirectUI原理介绍
当然,获取Flash内部元素的句柄是不可能的,或者更准确地说,Flash的内部元素根本没有句柄。有没有办法和Flash交互?当然不是。由于 Flash 是基于 ActiveX 组件嵌入浏览器中的,因此 ActiveX 组件是 COM 组件。如果要操作,可以通过COM组件接口来实现。网上有些实现是基于COM接口的,而不是所谓的句柄。
网上的大量问题没有得到解答,甚至产生误导。回答他们的人不知道为什么,所以他们更加误导。众人见他悟了,便信服了。众所周知,他们不知道如何制作。毕竟,你可以在网上找到很多代码。你懂。
我们不提供具体的实现,我们在大方向上指明一条路,不让走弯路。自己探索吧。