代码之家  ›  专栏  ›  技术社区  ›  JayC667

使用.NET/C#和SHDocVw.InternetExplorer将HTML显示区域(视口)偏移量设置为0/0并缩放IE窗口

  •  0
  • JayC667  · 技术社区  · 4 年前

    这是 不是

    查看以下图片: X offset negligible; Y offset relevant

    enter image description here

    我需要得到的HTML显示区(又名视口)偏移到0/0的IE窗口。

    • 我正在使用C#with SHDocVw.InternetExplorer库来访问/控制IE。

    我真正想做的是触发双击事件

    • 类似于IHTMLElement.click(),只需双击()
    • 多次调用IHTMLElement.click()无效

    所以现在我控制鼠标来触发某些事件,调用 [DllImport("user32.dll")] public static extern bool GetCursorPos(out PointInter lpPoint); 类似于获取和设置鼠标光标,模拟双击某些元素。

    对于鼠标导航,我已经考虑过了

    • IE窗口左侧和顶部属性
    • IHTMLElement(3).getClientBoundingRect的位置,即要触发的元素的位置

    当IE配置相同时,这一切都可以很好地工作。我的假设:

    • 相同的HTML视口偏移(相同的工具栏、菜单等)
    • HTML视口缩放100%(无页面缩放)

    所以我需要的是:

    • HTML视口的垂直偏移(在两个屏幕截图中都是106像素)
    • HTML视口的水平偏移(第一个是1,第二个是291)
    • HTML视口的缩放因子(在两个屏幕截图中均为100%)

    我曾尝试访问ShDocVw.InternetExplorer对象中的多个元素,但我要么有错误的接口类型转换,要么它不愿意公开此信息,因为我还找不到它。

    你们有谁知道怎么处理这个问题吗?一些晦涩难懂的COM/OLE咒语和仪式可以引导鼠标光标前进?

    编辑:

    虽然这是一个解决方案,但如果用户在应用程序工作时更改缩放,那么考虑到在以后运行时可能发生的布局/显示更改,这是非常难看和无用的。

    0 回复  |  直到 4 年前