确定文档是否确实具有焦点

本文关键字:焦点 是否 文档 | 更新日期: 2023-09-27 18:31:39

VSTO 中是否有可用于确定文档是否具有实际键盘焦点的属性或函数?当文档处于当前状态但未聚焦时,例如,在显示模式对话框或警报时,属性或函数应返回 false。请注意,ActiveWindowActiveDocument无法做到这一点,而且当警报聚焦时Application.WindowDeactivate似乎不会触发。

这是Word 2013(桌面)+ VSTO 4 + C# + .NET Fx 4.5。

确定文档是否确实具有焦点

只能使用 WinAPI。

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow();
bool WordHasFocus {
    get {
        IntPtr wordHandle = Process.GetCurrentProcess().MainWindowHandle;
        IntPtr focusedWindow = GetForegroundWindow() ;
        return wordHandle == focusedWindow;
    }
}

它只显示单词具有焦点。如果要检查给定文档,还需要确保给定文档是活动文档。