Ms word Word VSTO加载项:在屏幕上获取工作区域坐标/矩形
使用VSTO Word互操作库,如何获得主“工作区”的屏幕坐标/矩形?即Ms word Word VSTO加载项:在屏幕上获取工作区域坐标/矩形,ms-word,vsto,office-interop,office-addins,word-interop,Ms Word,Vsto,Office Interop,Office Addins,Word Interop,使用VSTO Word互操作库,如何获得主“工作区”的屏幕坐标/矩形?即左侧,顶部,宽度和高度 这张图片很好地显示了我正在寻找的突出显示为“DISPLAY”的区域,即包含文档的面板/滚动查看器 我遇到了一个关于范围s和窗口本身的很好的方法,但是在深入研究窗口/活动窗口、视图和活动窗格之后,我找不到任何让我更接近我正在寻找的“工作区域”的属性 C#或VBA中的解决方案/方法都很好。Word对象库仅提供高度和宽度的信息: Window.UsableHeight Window.UsableWidth
左侧
,顶部
,宽度
和高度
这张图片很好地显示了我正在寻找的突出显示为“DISPLAY”的区域,即包含文档的面板/滚动查看器
我遇到了一个关于范围
s和窗口
本身的很好的方法,但是在深入研究窗口
/活动窗口
、视图
和活动窗格
之后,我找不到任何让我更接近我正在寻找的“工作区域”的属性
C#或VBA中的解决方案/方法都很好。Word对象库仅提供高度和宽度的信息:
Window.UsableHeight
Window.UsableWidth
它不提供Word应用程序“编辑”部分的屏幕坐标,只提供整个应用程序窗口的坐标。为此,我认为有必要使用Windows API。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);