Это действительно дополнение к другим отличным комментариям KeithTheBiped и др ...
Но можно несколько принудить Immediate Window в VB6, чтобы оно работало как современное окно терминала, с некоторыми оговорками. Если мы создадим вспомогательную функцию для запуска команды, каким-то образом зафиксируем вывод, а затем воспользуемся Debug.Print, чтобы передать его обратно в окно Immediate, ПОДОБНО окну терминала, но, конечно, без каких-либо интерактивных элементов.
Это работает для большинства команд, но не может захватить часть вывода в фазе git push. Приемлемый компромисс для удобства без оболочки (imo).
Мы можем сделать это с помощью командной строки (cmd.exe /c), используя каналы 1> и 2>, нацеленные на временные файлы. Я не предоставляю пару базовых функций, но предоставляю источники, если у вас их еще нет.
Рассмотрим следующую функцию:
Public Function RunCmdToOutput(ByVal cmd As String, Optional ByRef ErrStr As String = "") As String
Const p_enSW_HIDE = 0
On Error GoTo RunError
Dim A As String, B As String
A = TempFile
B = TempFile
ShellAndWait "cmd /c " & cmd & " 1> " & A & " 2> " & B, p_enSW_HIDE
RunCmdToOutput = ReadEntireFileAndDelete(A)
ErrStr = ReadEntireFileAndDelete(B)
Exit Function
RunError:
RunCmdToOutput = ""
ErrStr = "ShellOut.RunCmdToOutput: Command Execution Error - [" & Err.Number & "] " & Err.Description
End Function
Тебе понадобится:
- TempFile - возвращает уникальное и несуществующее имя файла, к которому ваша программа имеет доступ для чтения / записи. Вероятно, следует использовать GetShortPathName API, чтобы сократить длинные имена путей.
- ShellAndWait - Стандарт «запустить процесс и дождаться его завершения».
- ReadEntireFileAndDelete - Именно то, что написано ... Захватите содержимое, удалите файл, верните строку.
Как только вы это сделаете и сможете успешно запустить любое простое выполнение и вывести в окно немедленного выполнения, например:
?runcmdtooutput("ver")
Microsoft Windows [Version 10.0.16299.309]
Отсюда вы можете запускать Git и отображать БОЛЬШИНСТВО вещей в окне Immediate и использовать его так просто, но мы можем добиться большего.
Предполагая, что вы уже установили Git из командной строки и путь обновлен, чтобы он стал доступен, вы можете создать несколько новых функций (надеюсь, в модуле):
Private Function GitCmd(ByVal C As String, Optional ByVal NoOutput As Boolean = False) As String
Dim ErrSt As String
GitCmd = RunCmdToOutput(C, ErrSt)
If Not NoOutput Then Debug.Print GitCmd ' Because it also returns the string
If ErrSt <> "" Then Debug.Print "ERR: " & ErrSt
End Function
Public Function Git(ByVal C As String) As Boolean
GitCmd "git " & C
Git = True
End Function
Отсюда вы можете ПОЧТИ запускать команды Git прямо из окна. Помните, что Git () - это функция, поэтому вы должны передать аргумент в виде строки ... Только один необходимый символ. Конечно, VB будет автоматически заполнять строку, поэтому вам совсем не НУЖНО завершение, но я его включу. Используйте синтаксис:
Git "status"
Git "add ."
Git "commit -m ""Some Git Commit"""
Git "pull -r"
Git "push"
Он не позволяет использовать интерактивные команды git (git add -p), но вы можете просто перебрать его (git add . -f). Но команды выполняются и напрямую отображают свой вывод в окне Immediate без особых усилий.
git "status"
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
...
Вы уловили идею.
Оттуда вы также можете автоматизировать вещи. Создайте вспомогательные функции для пакетной обработки часто используемых команд Git и т. Д. Или просто устраните неуклюжий синтаксис. С RunCmdToOutput вы также можете переделать некоторые из них, чтобы использовать MsgBox, если хотите, но я думал, что Immediate Window было достаточно интуитивно понятным.
В какой-то момент также может быть важно ограничить выполнение любых функций только в среде IDE, но это необязательно.
Public Function IsIDE() As Boolean
On Error GoTo IDEInUse
Debug.Print 1 \ 0 'division by zero error - Debug is ignored by compile
IsIDE = False
Exit Function
IDEInUse:
IsIDE = True
End Function
Public Function GitStatus()
If Not IsIDE Then Exit Function
GitCmd "git status"
GitStatus = True
End Function
person
User51
schedule
04.04.2018