VB.net-使用Shell()运行java应用程序并设置其appdata文件夹。多个命令?

VB.net-使用Shell()运行java应用程序并设置其appdata文件夹。多个命令?,vb.net,process,command-line-arguments,appdata,Vb.net,Process,Command Line Arguments,Appdata,好了,伙计们,我有一个minecraft的副本,它是由minecraft.exe启动的java程序 在同一个文件夹中是我的程序(我们称之为launcher.exe),我正在VB.net中编程,还有一个名为LocalAppData的文件夹 如果我将快捷方式放置在与Minecraft.exe相同的文件夹中,请清除“开始位置”字段并将其放置在目标字段中: C:\Windows\System32\cmd.exe/C start cd LocalAppData&&set APPDATA=%cd%\Loca

好了,伙计们,我有一个minecraft的副本,它是由minecraft.exe启动的java程序

在同一个文件夹中是我的程序(我们称之为launcher.exe),我正在VB.net中编程,还有一个名为LocalAppData的文件夹

如果我将快捷方式放置在与Minecraft.exe相同的文件夹中,请清除“开始位置”字段并将其放置在目标字段中:

C:\Windows\System32\cmd.exe/C start cd LocalAppData&&set APPDATA=%cd%\LocalAppData&&javaw-Xms4096M-Xmx4096M-cp LocalAppData\Minecraft.exe net.Minecraft.LauncherFrame

然后,minecraft从LocalAppData文件夹中启动,其中包含我的自定义内存分配。还将显示两个命令窗口。当minecraft关闭时,一个关闭,但另一个不关闭,需要用户关闭

我的问题是:如何在VB.net中实现相同的结果,而不是使用windows快捷方式,以及是否有方法停止命令窗口的显示或将它们都设置为自动关闭

我的目标是从子文件夹启动minecraft,因此本地文件路径比全局文件路径更可取,但在运行时确定应用程序的位置并从子文件夹工作也可以

我原以为我可以在Shell()命令中使用相同的代码来产生相同的效果,但似乎不是这样

理想情况下,我想创建一个运行minecraft的程序,其中包括:

  • 自定义内存分配
  • 本地文件路径,以便可移植地运行
  • appdata文件夹已更改为子文件夹,以便可移植地运行
  • 这些命令窗口要么消失,要么最小化,然后在用户关闭minecraft时自动关闭
我知道这是一个很大的要求,但我已经学习编程课程6个月了,我承认我不是最好的程序员。 一旦我知道怎么做,我就可以创建程序的其余部分,在不同的子文件夹中管理多个安装,并让您选择要启动的子文件夹,但我只需要java应用程序本身实际启动方面的帮助

注意: 我应该澄清一下,Minecraft.exe不是我制作的东西,我没有编写java程序。我只是在VB.Net中寻找解决方案

谢谢你阅读这篇文章,很抱歉写了这么长的文章

编辑

谢谢你的帮助。这是我到目前为止所做的,但它产生了一个错误“错误:无法创建JavaVirtualMachine。错误:发生了致命的异常。程序将退出”

有人看到我哪里出错了吗?

Process类(http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx )允许您启动一个进程。您可以使用ProcessStartInfo实例进行设置(http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.80).aspx)

我没有时间告诉您所有细节,但以下伪代码应该可以让您开始:

Dim startInfo As ProcessStartInfo = new ProcessStartInfo()
startInfo.FileName = "javaw.exe" 'That's the name of your executable
startInfo.Arguments = "your argument line" 
startInfo.UseShellExecute = true 'Needed to open a command window   
Process.Start(startInfo)

好的,这就是我到目前为止所做的:啊,对不起,帖子太长了。到目前为止,代码已经在问题的描述中了。您将启动两个进程,一个用于设置一些环境变量,另一个用于启动java。你确定你的修改是持久的吗?如果它们是第一道工序的本地产品,我不会感到惊讶。如果这就是问题所在,解决方法之一是使用vb.Net生成一个同时执行这两项操作的批处理(dos)文件,然后使用vb.Net启动批处理
Dim startInfo As ProcessStartInfo = new ProcessStartInfo()
startInfo.FileName = "javaw.exe" 'That's the name of your executable
startInfo.Arguments = "your argument line" 
startInfo.UseShellExecute = true 'Needed to open a command window   
Process.Start(startInfo)