确定文档ACTUALLY是否具有焦点

时间:2016-01-25 06:13:38

标签: c# vba ms-word vsto

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

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

1 个答案:

答案 0 :(得分:0)

只能使用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;
    }
}

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