VSTO中是否有属性或功能可用于确定文档是否具有实际的键盘焦点?当文档当前但不聚焦时,属性或函数应返回false,例如显示模态对话框或警报时。请注意,ActiveWindow
或ActiveDocument
无法做到这一点,加上Application.WindowDeactivate
似乎无法在警报集中时触发。
这是Word 2013(桌面版)+ VSTO 4 + C#+ .NET Fx 4.5。
答案 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;
}
}
它只显示该单词具有焦点。如果要检查给定文档,还需要确保给定文档是活动文档。