0

不是HTML / JAVASCRIPT / CSS 问题!

看看这些图片: X 偏移量可忽略不计; Y 偏移相关

在此处输入图像描述

我需要将 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# 中读取该数据。

虽然这是一个解决方案,但如果用户在应用程序运行时更改缩放,它非常难看并且对于考虑可能在以后的运行时发生的布局/显示更改没有用处。

4

0 回答 0