好的家伙我有Minecraft的副本,这是一个由Minecraft.exe发起的java程序。VB.net - 使用Shell()运行Java应用程序并设置其appdata文件夹。多个命令?
在同一个文件夹里面是我的程序(让我们称之为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,但其他没有,需要由用户关闭关闭
我的问题是:如何acheive同样的结果在VB.net,而不是与Windows快捷方式,是有方法来停止命令窗口出现或设置它们都自动关闭?
我的目标是从子文件夹启动我的世界,所以本地文件路径将远远优于全局文件路径,但在运行时和应用子文件夹时确定应用程序的位置也可以。
我以为我可以在Shell()命令中使用相同的代码来产生相同的效果,但似乎没有。
理想我想创建一个运行的Minecraft与程序:
- 定制内存分配
- 本地文件路径,这样
- 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)
有谁看到我已经错了?
好吧,这是我到目前为止有: – 2012-07-25 01:49:35
卫生署,对不起 - 交太长了。到目前为止的代码现在在这个问题的描述中。 – 2012-07-25 02:05:24
您正在启动2个进程,一个用于设置一些环境变量,另一个用于启动java。你确定你的修改是持续的吗?如果他们对你的第一个过程是本地的,我不会感到惊讶。如果这是问题,解决这个问题的一种方法是使用vb.Net生成一个批处理(dos)文件,同时执行这两个文件,并使用vb.net启动批处理 – Ksempac 2012-07-25 06:10:00