Visual Studio 2010 with SP1, when running a macro
DTE.ExecuteCommand("EditorContextMenus.CodeWindow.GoToHeaderFile")
error msg pop: "Error HRESULT E_FAIL has been returned from a call to a COM component"
I am sure that the current active doc is a cpp file.
and, If I paste the "EditorContextMenus.CodeWindow.GoToHeaderFile" in the Command Window, it worked.
Why it failed in macro ?
Thanks!
the macro script
Imports System Imports EnvDTE Imports System.Diagnostics Public Module swaphcpp Function GetOutputWindowPane(ByVal Name As String, Optional ByVal show As Boolean = True) As OutputWindowPane Dim window As Window Dim outputWindow As OutputWindow Dim outputWindowPane As OutputWindowPane window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) If show Then window.Visible = True outputWindow = window.Object Try outputWindowPane = outputWindow.OutputWindowPanes.Item(Name) Catch e As System.Exception outputWindowPane = outputWindow.OutputWindowPanes.Add(Name) End Try outputWindowPane.Activate() Return outputWindowPane End Function Sub SwapHeaderSource() Dim proj As Project Dim doc As Document Dim name As String Dim window As Window Dim target As Object = Nothing Dim item As ProjectItem doc = DTE.ActiveDocument If doc Is Nothing Then Exit Sub End If If (DTE.ActiveWindow Is window) Then target = window.Object Else target = GetOutputWindowPane("List Project") target.Clear() End If name = doc.Name name = LCase(name) If name.EndsWith(".h") Then name = name.Replace(".h", ".cpp") ElseIf name.EndsWith(".cpp") Or name.EndsWith(".c") Then MsgBox("11111") DTE.ExecuteCommand("EditorContextMenus.CodeWindow.GoToHeaderFile") End If End Sub End Module