确定文档是否确实具有焦点
本文关键字:焦点 是否 文档 | 更新日期: 2023-09-27 18:31:39
VSTO 中是否有可用于确定文档是否具有实际键盘焦点的属性或函数?当文档处于当前状态但未聚焦时,例如,在显示模式对话框或警报时,属性或函数应返回 false。请注意,ActiveWindow
或ActiveDocument
无法做到这一点,而且当警报聚焦时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;
}
}
它只显示单词具有焦点。如果要检查给定文档,还需要确保给定文档是活动文档。