15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как подключить консольное окно к приложению Visual Basic

Эта статья демонстрирует подключение консольного окна к приложению Visual Basic, из которого можно записывать в это консольное окно и запускать другие приложения в этом консольном окне.

 

Пример по шагам

  1. Воспользуйтесь Блокнотом (Notepad) для создания следующего bat-файла:

    DIR /W

    и сохраните его как C:\TEST.BAT

  2. В Visual Basic создайте новый проект с формой и модулем.

  3. Занесите в модуль следующие объявления API функций:
       Option Explicit
    
       Declare Function AllocConsole Lib "kernel32" () As Long
       Declare Function FreeConsole Lib "kernel32" () As Long
       Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) _
               As Long
       Declare Function GetStdHandle Lib "kernel32" (ByVal _
               nStdHandle As Long) As Long
       Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
               (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal _
               nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
               lpReserved As Any) As Long
    
       Public Const STD_OUTPUT_HANDLE = -11&
     



  4. Добавьте на форму кнопку и введите следующий код:
       Dim hConsole As Long
    
       Private Sub Command1_Click()
       Dim Result As Long, sOut As String, cWritten As Long
         sOut = "Hi There" & vbCrLf
         Result = WriteConsole(hConsole, ByVal sOut, Len(sOut), cWritten, _
                               ByVal 0&)
         Shell "C:\TEST.BAT"
       End Sub
    
       Private Sub Form_Load()
         If AllocConsole() Then
           hConsole = GetStdHandle(STD_OUTPUT_HANDLE)
           If hConsole = 0 Then MsgBox "Couldn't allocate STDOUT"
         Else
           MsgBox "Couldn't allocate console"
         End If
       End Sub
    
       Private Sub Form_Unload(Cancel As Integer)
         CloseHandle hConsole
         FreeConsole
       End Sub
     



  5. Запустите приложение. Появится пустое окно консоли.

  6. Кликните по кнопке. В консоле должны появиться текст в sOut и вывод из bat-файла.

  7. Закройте форму. Окно консоли должно завершиться.