如何打破一切并继续专注于 Visual Studio 2017 年失去的注意力

How to breakall and continue on focus lost in Visual Studio 2017

我为我的 C++ 项目设置了编辑并继续功能,这样我就可以执行 breakall、更改代码,然后继续查看我的代码的结果。 但是,如果我不必手动单击按钮会更好。我的第一个解决方案是使用执行 BreakAll 然后执行 Continue 函数的 1 个按键。但是我没有找到仅使用 Visual studio 2017 的答案。

然后我想到了一个更好的主意。如果编译的 exe 失去焦点然后重新获得焦点以使其执行 BreakAll 然后继续怎么办。 或者另一种方法可以做同样的事情,但会更容易制作。当 Visual Studio 失去焦点时(因为我专注于编译的 exe)。它快速执行 BreakAll 然后继续。 那会让我编写代码并实时执行它。

我的问题是类似的东西已经存在了吗?我找不到答案。如果没有,有人知道是否可以进行延期吗?或者有人愿意做吗?感谢阅读。

编辑: 这是一些伪代码。

if compiled_build_running == true && lost_focus == true {
  Debug.BreakAll
  Debug.Continue
}

编辑2: 好的,它可以使用一些帮助和示例脚本。它现在会在 visual studio 失去焦点时保存并重新编译。和 BreaksAll 当它获得焦点时。 这是修改后的代码:

using EnvDTE;
using EnvDTE80;

public class E : VisualCommanderExt.IExtension
{
    public void SetSite(EnvDTE80.DTE2 DTE_, Microsoft.VisualStudio.Shell.Package package) {
    DTE = DTE_;
    System.Windows.Application.Current.Deactivated += OnDeactivated;
    System.Windows.Application.Current.Activated += OnActivated;
}

public void Close() {
    System.Windows.Application.Current.Deactivated -= OnDeactivated;
    System.Windows.Application.Current.Activated -= OnActivated;
}

private void OnDeactivated(object sender, System.EventArgs e) {
    try {
        DTE.ExecuteCommand("File.SaveAll");
    } catch (System.Exception ex) {
    }
    if (DTE.Mode == vsIDEMode.vsIDEModeDebug) {
        DTE.ExecuteCommand("Debug.Start");
    }
}

private void OnActivated(object sender, System.EventArgs e) {

    if (DTE.Mode == vsIDEMode.vsIDEModeDebug) {
        DTE.ExecuteCommand("Debug.BreakAll");
    }

}

private EnvDTE80.DTE2 DTE;
}

您应该能够使用我的 Visual Commander 扩展程序自动执行此任务。

关于如何捕获 Visual Studio 失去焦点事件,请参阅

要检查 Visual Studio 当前是否正在调试,请使用:

if (DTE.Mode == vsIDEMode.vsIDEModeDebug)

到运行内置Visual Studio命令使用:

DTE.ExecuteCommand("Debug.BreakAll");