我只想在代码编辑器打开时启用扩展菜单项。
我尝试检测何时使用以下代码打开“代码”窗口,但没有成功的结果...
private void MenuItem_BeforeQueryStatus(object sender, EventArgs e)
{
OleMenuCommand menuCommand = sender as OleMenuCommand;
if (null != menuCommand)
{
IVsMonitorSelection monitorSelection = this.ServiceProvider.GetService(typeof(IVsMonitorSelection)) as IVsMonitorSelection;
int pfActive;
Guid codeWindowGuid = VSConstants.UICONTEXT_CodeWindow;
uint solutionExistCookie;
monitorSelection.GetCmdUIContextCookie(ref codeWindowGuid, out solutionExistCookie);
monitorSelection.IsCmdUIContextActive(solutionExistCookie, out pfActive);
menuCommand.Enabled = (pfActive == 1);
}
}
尽管IsCmdUIContextActive
正在重用S_OK
,但是即使代码窗口确实打开了,我也总是收到pfActive为false。
我在做什么错了?
答案 0 :(得分:0)
也许您忘记在out
方法签名中的定义位置添加IsCmdUIContextActive
关键字了?
答案 1 :(得分:0)
Component Diagnostics扩展名可以显示所有当前活动的上下文,以便您选择所需的上下文:
答案 2 :(得分:0)
检查DTE.ActiveWindow.Document不为空可能是检查活动编辑器的最简单方法。