0

好吧,伙计们,我有一份我的世界,它是一个由 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() 命令中使用相同的代码来产生相同的效果,但似乎没有。

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

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

我知道这是一个很大的问题,但我已经学习了 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\.minecraft\bin\Minecraft.jar net.minecraft.LauncherFrame"
javaStartInfo.UseShellExecute = True
Process.Start(javaStartInfo)

有谁看到我哪里出错了?

4

1 回答 1

1

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)
于 2012-07-24T15:56:31.827 回答