这不是HTML / JAVASCRIPT / CSS 问题!
我需要将 HTML 显示区域(又名视口)偏移到 IE 窗口的 0/0。
- 我的目标是 Microsoft Internet Explorer 11。
- 我正在使用带有 SHDocVw.InternetExplorer 库的 C# 来访问/控制 IE。
我真正想做的是触发双击事件
- 类似于 IHTMLElement.click(),只是一个 doubleClick()
- 多次调用 IHTMLElement.click() 不起作用
我试图在没有实际点击的情况下解决它:
所以现在我正在控制鼠标来触发某些事件,调用 [DllImport("user32.dll")] public static extern bool GetCursorPos(out PointInter lpPoint);
等来获取和设置鼠标光标并模拟对某些元素的双击。
对于鼠标导航,我已经考虑到了
- 操作系统的桌面缩放/比例设置
- IE 窗口 Left 和 Top 属性
- IHTMLElement(3).getClientBoundingRect的位置,即我要触发的元素的位置
当 IE 配置相同时,这一切都可以正常工作。我的假设:
- 相同的 HTML 视口偏移(相同的工具栏、菜单等)
- HTML 视口缩放 100%(无页面缩放)
但这两个因素是动态的,所以我必须以某种方式解释它们。
所以我需要的是:
- HTML 视口的垂直偏移(在两个屏幕截图中都是 106 像素)
- HTML 视口的水平偏移量(首先是 1,其次是 291)
- HTML 视口的缩放系数(在两个屏幕截图中均为 100%)
我曾尝试访问 ShDocVw.InternetExplorer 对象中的多个元素,但我要么有错误的接口转换,要么它没有自愿公开这些信息,因为我还没有找到它。
从对谷歌世界的深入研究中,我也一无所获,所以那里也没有(明显的)答案。
那么你们中的任何人都知道如何处理这个问题吗?一些晦涩的 COM/OLE 咒语和仪式可以引导鼠标光标前进?
编辑:
肮脏的解决方案:我可以先显示一些自制的 HTML/JS 页面,它检测我的模拟鼠标移动并将该信息转储到某个(不可见)div 中,然后在 C# 中读取该数据。
虽然这是一个解决方案,但如果用户在应用程序运行时更改缩放,它非常难看并且对于考虑可能在以后的运行时发生的布局/显示更改没有用处。