Vb.net 命令行参数可在visual studio中使用,但不能从visual Basic中WindowsForm项目的命令行中使用
我用visualbasic做了一个小程序。 它压缩文件并将文件上载到ftp服务器上。程序本身运行良好 我的问题是,如果它是否从命令行获取参数,我希望它具有不同的行为。如果给出了参数,则不显示表单,如果没有,则加载表单 从visual basic执行获取命令行参数的代码时工作正常(项目属性->调试->启动选项->命令行参数随文件路径设置) 但是当我用这行代码从cmd执行程序时: pogram.exe C:\Users\user\file.txt 该表单将显示,并且未检测到任何参数 这是发送的主要信息。Vb.net 命令行参数可在visual studio中使用,但不能从visual Basic中WindowsForm项目的命令行中使用,vb.net,visual-studio-2010,command-line-arguments,Vb.net,Visual Studio 2010,Command Line Arguments,我用visualbasic做了一个小程序。 它压缩文件并将文件上载到ftp服务器上。程序本身运行良好 我的问题是,如果它是否从命令行获取参数,我希望它具有不同的行为。如果给出了参数,则不显示表单,如果没有,则加载表单 从visual basic执行获取命令行参数的代码时工作正常(项目属性->调试->启动选项->命令行参数随文件路径设置) 但是当我用这行代码从cmd执行程序时: pogram.exe C:\Users\user\file.txt 该表单将显示,并且未检测到任何参数 这是发送的主要信
模块1.vb:
Module Module1
Declare Function AttachConsole Lib "kernel32" (ByVal dwProcessId As Int32) As Boolean
Declare Function FreeConsole Lib "kernel32.dll" () As Boolean
Sub Main()
Dim cmdArgs As String() = GetCommandLineArgs()
Form2.loadData()
If cmdArgs.Length = 0 Then ' NO ARGS MODE
mainWindow.commandLineMode = False
Application.Run(mainWindow)
ElseIf cmdArgs.Length < 3 And Form2.TXTnumLicence.Text = "" Then ' BAD ARGS NUMBER
Console.WriteLine("Aucun numero de licence definit. Usage : ./ODG_exchange ['filePath'] [numeroLicence [default = ./ODG_param.xml > numero_licence]]")
Application.Exit()
Else ' ARGS MODE
mainWindow.commandLineMode = True
mainWindow.commandeLine(cmdArgs)
End If
End Sub
模块1
将函数AttachConsole库“kernel32”(ByVal dwProcessId为Int32)声明为布尔值
将函数FreeConsole Lib“kernel32.dll”()声明为布尔值
副标题()
Dim cmdArgs作为字符串()=GetCommandLineArgs()
Form2.loadData()格式
如果cmdArgs.Length=0,则“无ARGS模式”
mainWindow.commandLineMode=False
Application.Run(主窗口)
ElseIf cmdArgs.Length<3,Form2.txtnumlience.Text=“”然后是“错误的ARGS编号”
Console.WriteLine(“Aucun numero de license definit.用法:./ODG_exchange['filePath'][numeroLicence[default=./ODG_param.xml>numero_license]]))
Application.Exit()
Else的ARGS模式
mainWindow.commandLineMode=True
mainWindow.commandeLine(cmdArgs)
如果结束
端接头
在VisualStudio中,我还将启动对象定义为Module1。也许它会有用。始终有一个命令行arg—执行程序的文件名。
您需要将if语句更改为cmdArgs.length=1。7天后,我找到了解决方案。。。只需使用good.exe,它的工作原理与visual studio中的一样好
我觉得自己好笨,谢谢你的帮助
GetCommandLineArgs
是不是,对吧?这确实有点可疑。另外,“将启动对象定义为Module1”,这是不可能的。此问题的差异太多。确实是。GetCommandLineArgs。我想这是可能的设置启动对象有模块1,因为我这样做了。编辑:我仔细查看了为什么您说这是不可能的,我在ProjectPropertiesIndeed中禁用了ApplicationFramework复选框。我以前以另一种方式使用了args,我修改了代码的其余部分,但忘记了这一行。我把它修好了,但还是不行。谢谢你的尝试