3

使用 VSTO Word 互操作库,如何获得主“工作区”的屏幕坐标/矩形?即Left,和。Top_WidthHeight

这张图片很好地显示了我正在寻找的区域,突出显示为“显示”——即包含文档的面板/滚动查看器。

工作区可视化

我遇到了这个答案Range,它显示了一种与s 和自身有关的好方法Window,但是在挖掘Window/ActiveWindowView之后ActivePane,我找不到任何能让我更接近我正在寻找的“工作区”的属性。

C# 或 VBA 中的解决方案/方法会很棒。

4

2 回答 2

3

Cindy 对 Windows API 的友好指针让我走上了正轨。

使用System.Windows.Automation命名空间和优秀的inspect.exe工具,我能够隔离ControlType包含文档/工作区域。

在实践中,Rect可以通过以下方式获得:

        var window = AutomationElement.FromHandle(new IntPtr(Globals.ThisAddIn.Application.ActiveWindow.Hwnd));
        var panel = window.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document));
        var docRect = (Rect) panel.GetCurrentPropertyValue(AutomationElement.BoundingRectangleProperty, true);
于 2019-11-20T10:24:09.973 回答
3

Word 对象库仅提供有关高度和宽度的信息:

Window.UsableHeight
Window.UsableWidth

它不提供 Word 应用程序的“编辑”部分的屏幕坐标,仅提供整个应用程序窗口。为此,我认为有必要使用 Windows API。

于 2019-11-20T08:33:07.287 回答