在VB .NET中,我有一个现有的应用程序,它使用WMI和Win32来提取系统信息,从收集的信息中创建一个加盐的散列,然后在WinForm中向用户显示所有内容。
我需要的是从CMD(“MyApp. exe/nogui”)捕获命令行参数的能力,并在现有的CMD窗口中只向用户输出salt散列,而不显示WinForm。
我已经做了我能想到的一切...
1.将“应用程序类型”更改为“控制台应用程序”。这是不可取的,因为控制台窗口始终显示。(并更改WinForms主题)
1.我玩了一下模块,但还是不太明白。(我不太擅长模块编码,但也许我误解了。idk...)
1.已添加For Each arg As String
并使用Case
指定参数(“/nogui”),但WinForm继续显示。
请帮帮忙,谢谢!
编辑:目的是让Microsoft SCCM能够捕获变量中的CMD输出。
1条答案
按热度按时间aemubtdh1#
第一步是在项目属性中禁用应用程序框架。这使您能够编写自己的
Main
方法,并将其用作应用程序的入口点。您可以将Main
方法添加到现有启动窗体中,也可以将其放在其他位置,例如Program
模块。然后更改项目属性中的Startup对象。基本上,您可以复制C#项目中Main
方法的外观作为起点:下一步是读取命令行参数,并根据该参数显示表单:
注意,我已经做了一个不区分大小写的比较来匹配命令行参数。这通常更合适,但如果你愿意,你可以让它区分大小写。
这里的问题是
Console.WriteLine
调用在默认情况下不会实际写入WinForms应用程序的现有控制台窗口。您需要附加控制台窗口,阅读一些内容后发现您可以使用Windows API调用来完成此操作:我已经在一个.NET框架项目中测试过了,它和预期的一样工作。我还没有在.NET核心中测试过,但我相信它应该也能以同样的方式工作。