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



好吧,伙计们,我有一份minecraft的副本,它是minecraft.exe启动的java程序。

在同一个文件夹中是我在VB.net中编程的程序(让我们称之为launcher.exe)和一个名为LocalAppData的文件夹。

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

C: \Windows\System32\cmd.exe/C启动cd LocalAppData&设置APPDATA=%cd%\LocalAppData&javaw-Xms4096M-Xmx4096M-cp LocalAppData\Minecraft.exe net.Minecraft.LauncherFrame

然后minecraft从LocalAppData文件夹中启动我的自定义内存分配。同时显示两个命令窗口。一个在minecraft关闭时关闭,但另一个没有,需要由用户关闭

我的问题是:我如何在VB.net中获得相同的结果,而不是使用窗口快捷方式?有没有方法可以停止命令窗口的出现,或者将它们都设置为自动关闭?

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

我原以为我可以在Shell()命令中使用相同的代码来产生相同的效果,但事实并非如此。

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

  • 自定义内存分配
  • 本地文件路径,以便可移植地运行
  • appdata文件夹已更改为子文件夹,以便它可以便携运行
  • 这些命令窗口要么消失,要么最小化,然后在用户关闭minecraft时自动关闭

我知道这是一个很大的要求,但我已经上了6个月的编程课程,我承认我不是最好的程序员。一旦我知道了如何做到这一点,我就可以创建程序的其余部分,在单独的子文件夹中管理多个安装,并允许您选择要启动的安装,但我只需要在实际启动java应用程序本身方面得到帮助。

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

感谢您阅读这一切,并对这篇冗长的帖子感到抱歉。

编辑

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

'Declare Processes
Dim appDataStartInfo As ProcessStartInfo = New ProcessStartInfo()
Dim javaStartInfo As ProcessStartInfo = New ProcessStartInfo()
Dim appPath As String = Application.StartupPath()
'Launch appdata relocation process
appDataStartInfo.FileName = "cmd.exe"
appDataStartInfo.Arguments = "/c start cd " & appPath & "&& set APPDATA=" & appPath & "LocalAppData"
appDataStartInfo.UseShellExecute = True
Process.Start(appDataStartInfo)
'Launch Minecraft
javaStartInfo.FileName = "javaw.exe"
javaStartInfo.Arguments = "-Xms4096M -Xmx4096M -cp " & appPath & "LocalAppData.minecraftbinMinecraft.jar net.minecraft.LauncherFrame"
javaStartInfo.UseShellExecute = True
Process.Start(javaStartInfo)

有人看到我哪里错了吗?

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)

相关内容

  • 没有找到相关文章

最新更新