您可以使用Mirosoft Visual Basic 2008 Express Edition制作MS-DOS程序吗?我想制作一个没有命令提示符,DOSBOX或任何正在使用的窗口的窗口。我试图创建一个消息框,但它不会像在MS-DOS中一样!我对VB不太了解,但我需要把所有东西留在DOSBOX上。以下是不会留在CLI中的模板:
Imports System.Windows.Forms
Public Class Dialog1
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
Private Sub Dialog1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
如果我能获得模板或某种类型的代码,我将非常感激。
答案 0 :(得分:2)
过去15年(或更多......)中没有Microsoft编译器会针对16位系统(这就是DOS)。为DOS编译的最后一个VB版本是VB 1.0,但是再好不过了。
如果你不介意沿着C ++路线走,你可以看看DJGPP。还有可以为DOS编译的Pascal和汇编程序编译器。
随意重新思考你的道路:)
答案 1 :(得分:1)
您可以创建一个保留在控制台窗口内的VB.Net应用程序。
您需要做的就是不要调用任何不在控制台窗口内的功能(例如MessageBox
)。
与所有其他.Net应用程序一样,它需要运行Windows和正确版本的.Net Framework。
答案 2 :(得分:1)
你的意思是运行Windows XP / Vista / 7的现代计算机上的控制台窗口(即带有看起来像DOS命令提示符的黑盒子)或实际DOS 即运行MS的计算机-DOS 5.22或类似的东西?
如果您指的是前者 - 控制台窗口 - 您只需在Visual Basic中将项目创建为控制台应用程序。 (按“新建项目”后立即选择。)代码中的第一行表明它是一个Windows窗体应用程序,用于创建对话框和窗口等。
在Google / Youtube上查看“视觉基本控制台应用程序”,您应该可以顺利完成。
答案 3 :(得分:1)
我知道这是一个老问题,也许这次OP讨论的MS-DOS盒子现在在博物馆中,但如果您选择的语言是Visual Basic,那么我建议您尝试使用PowerBasic(仍然可用的,商业的,可以编译成16位代码)或QBasic(无论如何已经在您的DOS盒子上可用。
在PowerBasic, recent versions编译成32位的情况下。但我相信你可以问他们旧版本。好处是你可以使用单个代码库来实现16位和32位。我使用它已经有一段时间了,但是如果我没记错的话,它可以为控制台视图创建对话框窗口(即,不会弹出消息框,而是在MS-DOS控制台中)。
在QBasic的情况下,它是一个相当有限的环境并且它被解释,尽管其编译的商业伴侣QuickBasic现在可以从几个站点免费下载。此外,似乎存在可以编译为32位和64位的新版本,这意味着您可以保持(种类)相同的代码库。
我确定还有其他选择,但如果您已经有使用Visual Basic的经验,这些可能是最简单的。
顺便说一下,正如其他人已经指出的那样,Windows Forms无法使用或编译成16位MS-DOS。
答案 4 :(得分:-1)
为此添加三个文本框
1)txterror(从命令提示符或DOS获取错误)
2)txtresult(从命令提示符或DOS获取结果)
3)txtcommand(写入要执行的DOS命令)
在表单加载
中写下面的代码' Set start information.
Dim start_info As New ProcessStartInfo("cmd")
start_info.UseShellExecute = False
start_info.CreateNoWindow = True
start_info.RedirectStandardOutput = True
start_info.RedirectStandardError = True
start_info.RedirectStandardInput = True
' Make the process and set its start information.
Dim proc As New Process()
proc.StartInfo = start_info
' Start the process.
proc.Start()
' Attach to stdout and stderr.
Dim std_out As StreamReader = proc.StandardOutput()
Dim SW As System.IO.StreamWriter = proc.StandardInput
Dim std_err As StreamReader = proc.StandardError()
SW.WriteLine(txtcommand.Text)
SW.WriteLine("exit")
' Display the results.
txtresult.Text = std_out.ReadToEnd()
' Clean up.
std_out.Close()
std_err.Close()
proc.Close()
在textbox keydown事件中写下面的代码(即txtcommand_KeyDown)
If e.KeyCode = Keys.Enter Then
txterror.Text = ""
' Set start information.
Dim start_info As New ProcessStartInfo("cmd")
start_info.UseShellExecute = False
start_info.CreateNoWindow = True
start_info.RedirectStandardOutput = True
start_info.RedirectStandardError = True
start_info.RedirectStandardInput = True
' Make the process and set its start information.
Dim proc As New Process()
proc.StartInfo = start_info
' Start the process.
proc.Start()
' Attach to stdout and stderr.
Dim std_out As StreamReader = proc.StandardOutput
Dim SW As System.IO.StreamWriter = proc.StandardInput
Dim std_err As StreamReader = proc.StandardError()
SW.WriteLine(txtcommand.Text)
SW.WriteLine("exit")
' Display the results.
txtresult.Text = std_out.ReadToEnd()
txterror.Text = std_err.ReadToEnd()
std_err.Dispose()
SW.Close()
' Clean up.
std_out.Close()
std_err.Close()
proc.Close()
End If