Imports EnvDTE Imports System.Diagnostics Public Module Perforce Function FindInPath(ByVal exeName As String) Dim env = System.Environment.GetEnvironmentVariable("Path") Dim Paths = Split(env, ";") Dim Element Dim p4Filename = "" For Each Element In Paths If Right(Element, 1) <> "\" And Right(Element, 1) <> "/" Then Element = Element + "\" End If If System.IO.File.Exists(Element + exeName) Then Return Element + exeName End If Next FindInPath = "" End Function Function StripLastDir(ByVal curPath As String) Dim testPath = curPath.Replace("/", "\") Dim lastIndex = testPath.LastIndexOf("\") If lastIndex = -1 Then Return "" Else Return Left(testPath, lastIndex) End If End Function Function EZRunCommand(ByVal exeName As String, ByVal args As String, ByVal p4StartDir As String) ' Find the p4 command. Dim p4Filename = FindInPath(exeName) If p4Filename = "" Then MsgBox("Can't find " + exeName + " in path.") Return "" End If ' Run p4 edit Dim p = New System.Diagnostics.Process p.StartInfo.UseShellExecute = False p.StartInfo.RedirectStandardError = True p.StartInfo.Arguments = args p.StartInfo.FileName = p4Filename p.StartInfo.CreateNoWindow = True p.StartInfo.WorkingDirectory = "" p.Start() Dim outputStr = p.StandardError.ReadToEnd() p.WaitForExit() If p.ExitCode <> 0 Then MsgBox(outputStr) Return False Else Return True End If End Function Sub OutputDebugStr(ByVal str As String) Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) ' Create handles to the Output window and its panes. Dim OW As OutputWindow = win.Object Dim OWp As OutputWindowPane ' Add a new pane to the Output window. Try OWp = OW.OutputWindowPanes.Item("Build") Catch e As System.Exception OWp = OW.OutputWindowPanes.Add("Build") End Try ' Add a line of text to the new pane. OWp.OutputString(str + System.Environment.NewLine) End Sub Sub EditCurrentFile() If EZRunCommand("p4.exe", "edit " + Chr(34) + ActiveDocument.FullName + Chr(34), ActiveDocument.FullName) Then OutputDebugStr(ActiveDocument.FullName + " edited successfully.") End If End Sub Sub AddCurrentFile() If EZRunCommand("p4.exe", "add " + Chr(34) + ActiveDocument.FullName + Chr(34), ActiveDocument.FullName) Then OutputDebugStr(ActiveDocument.FullName + " added successfully.") End If End Sub Sub RevertCurrentFile() If EZRunCommand("p4.exe", "revert " + Chr(34) + ActiveDocument.FullName + Chr(34), ActiveDocument.FullName) Then OutputDebugStr(ActiveDocument.FullName + " reverted successfully.") End If End Sub End Module