alibek писал(а):А, понял. Ты имеешь ввиду Win9x? Что часть виндовых утилит умеют работать и под DOS? На VB ты такого не сделаешь, это точно.
Просто любая программа (в том числе и виндовая) ЗАПУСКАЕТСЯ под DOS. Но в виндовых программах при запуске проверяется среда, и если прога запущена не под Windows, то выдается сообщение (не могу, мол, работать под DOS) и завершение работы. Но никто не запрещает тебе вместо этого обработчика засунуть полноценный DOS-вариант этой программы. Т.е. при запуске под DOS управление передается DOS-варианту программы, а под Windows запустится виндовый вариант.
corgi писал(а):2Firestorm: следует различать дос режим, что подрузамевает под собой консольное приложение и чистый дос так как это две баальшие разницы
Как подключить консольное окно к приложению Visual Basic
Эта статья демонстрирует подключение консольного окна к приложению Visual Basic, из которого можно записывать в это консольное окно и запускать другие приложения в этом консольном окне.
Пример по шагам
Воспользуйтесь Блокнотом (Notepad) для создания следующего bat-файла:
DIR /W
и сохраните его как C:\TEST.BAT
В Visual Basic создайте новый проект с формой и модулем.
Занесите в модуль следующие объявления 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&
Добавьте на форму кнопку и введите следующий код:
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
Запустите приложение. Появится пустое окно консоли.
Кликните по кнопке. В консоле должны появиться текст в sOut и вывод из bat-файла.
Закройте форму. Окно консоли должно завершиться.
Firestorm писал(а):2GoGosha
и чё это? такой пример у меня где-то на харде валяется...
лучшеб показали пример, как в досе запустить всё барахло с контролами (типа как установка винды из доса)...
Сейчас этот форум просматривают: AhrefsBot и гости: 75