如何让Visual Basic 2015表单应用程序作为控制台应用程序运行

时间:2015-12-08 13:20:23

标签: vb.net visual-studio-2015

我有一个VB.net 2015应用程序,我也希望能够作为命令行应用程序运行。

我找到了article如何为visual studio 2010做到这一点,但我不能在2015年那样做。

我认为,我能够读取命令行参数,只是如果现在不知道如何让我的程序决定如果存在命令行参数,它不应该显示主窗体,而只是运行一个专用于处理命令行选项的特定函数。

我认为如果需要做一些事情来拦截一个应用程序启动事件呢?我不知道该怎么做。

*更新我现在正在使用它将在我完成一些代码抛光后发布代码

3 个答案:

答案 0 :(得分:0)

该文章有效,并于2015年正常运作。

要手动添加启动事件,请转到MyApplication类,单击左侧组合框,然后选择“(MyApplication Events)”,然后在右侧组合框中选择“启动”,它将为您添加事件,然后只需按照其余部分或文章。或者,只需复制并粘贴他们引用的代码即可。

本文中的主要子类只是一个示例,它可以是您在传递命令行参数时要运行的任何类/子。

答案 1 :(得分:0)

对于我们的批量应用,我们只看一下.exe路径。如果程序是从“批处理程序”文件夹运行,或者具有特定的命名约定,我们只需从Load()事件调用批处理任务,然后结束程序。如果程序从另一个位置运行,我们将调用GUI。

   If Application.ExecutablePath.ToLower.Contains("task.exe") Then
        mbBatchTask = True
        DoBatch()
        Application.DoEvents()
        End
    Else
        ' continue loading GUI
    End If

答案 2 :(得分:0)

在VS2015中,使用主窗体Load事件 进入物业区并点击雷电图标。 在下面的示例中,我输入了MyLoader

在那里输入您想要用作启动的子程序 并在属性区域将表单的不透明度设置为0%

这样做的效果是应用程序很快就会显示为隐藏状态。 由于表单必须加载否则加载事件也不会触发。

REM inside your program public class

Declare Function AttachConsole Lib "kernel32.dll" (ByVal dwProcessId As Int32) As Boolean
Declare Function AllocConsole Lib "kernel32" () As Int32
Declare Function FreeConsole Lib "kernel32" () As Boolean

Private Sub MyLoader(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim args = My.Application.CommandLineArgs

    If args.Count > 0 Then
        Me.Hide()
        Me.Opacity = 0

        AttachConsole(-1)
        AllocConsole()
        Console.WriteLine(vbCrLf + "Here you can output something")


        If UCase(args(0)) = "HELP" Then Console.WriteLine("no help")


        End If
        Console.Write(vbCrlf + System.IO.Directory.GetCurrentDirectory + "\")
        FreeConsole()
        Application.Exit()

    ElseIf args.Count = 0
        Me.Opacity = 1.0

        REM if no argument is clicked start with a default event / method /  or...
        Call Button1_Click(Nothing, Nothing)

    End If
End Sub