gpt4 book ai didi

c++ - 如何在 VS2010 C++ 宏中使用 DTE.ExecuteCommand ("Edit.GoToDefinition")?

转载 作者:行者123 更新时间:2023-11-30 04:11:37 24 4
gpt4 key购买 nike

我录制了一个包含 F12(转到定义)按键的宏,但录制省略了传递给 DTE.ExecuteCommand 的第二个参数,导致宏在执行期间崩溃。大概第二个 arg 是我要查找的函数的名称,但我不知道如何获取和传递该值。如果我选择函数或方法名称(但不是 args 或类前缀),我可以使用 DTE.ActiveDocument.Selection.Text.ToString 传递选择,但不是跳转到定义,而是返回 . h 文件和 .cpp 文件在 Find Symbol Results 窗口中。

(而且我不确定选择是否真的是我想要的,但如果这是要走的路,我可能会让宏选择“正确的东西”。有什么办法可以看到 F12 正在传递什么,只是看看它是什么样子?或者更好的是,找出 F12 正在传递的编程对象?

VS2010专业版

最佳答案

事实证明,通过 IVsUIShell 运行相同的命令是可行的:

    Dim cmd As EnvDTE.Command
Dim shell As Microsoft.VisualStudio.Shell.Interop.IVsUIShell
Dim arg As Object
Dim guid As System.Guid
Dim serviceProvider As System.IServiceProvider

serviceProvider = New Microsoft.VisualStudio.Shell.ServiceProvider(CType(DTE, Microsoft.VisualStudio.OLE.Interop.IServiceProvider))
shell = serviceProvider.GetService(GetType(Microsoft.VisualStudio.Shell.Interop.SVsUIShell))
cmd = DTE.Commands.Item("Edit.GoToDefinition", 0)
guid = New System.Guid(cmd.Guid)
shell.PostExecCommand(guid, cmd.ID, 0, arg)

代码与 Visual Commander 中的一样。要从 Visual Studio 宏 IDE 运行它,您需要添加对

的引用
Microsoft.VisualStudio.OLE.Interop.dll
Microsoft.VisualStudio.Shell.10.0.dll
Microsoft.VisualStudio.Shell.Interop.dll
Microsoft.VisualStudio.Shell.Interop.8.0.dll
Microsoft.VisualStudio.Shell.Interop.9.0.dll

要添加引用,您首先需要将这些文件复制到 Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies directory .

关于c++ - 如何在 VS2010 C++ 宏中使用 DTE.ExecuteCommand ("Edit.GoToDefinition")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20168945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com