2012-07-24 18 views
0

好的家伙我有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) 

有谁看到我已经错了?

回答

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) 
+0

好吧,这是我到目前为止有: – 2012-07-25 01:49:35

+0

卫生署,对不起 - 交太长了。到目前为止的代码现在在这个问题的描述中。 – 2012-07-25 02:05:24

+0

您正在启动2个进程,一个用于设置一些环境变量,另一个用于启动java。你确定你的修改是持续的吗?如果他们对你的第一个过程是本地的,我不会感到惊讶。如果这是问题,解决这个问题的一种方法是使用vb.Net生成一个批处理(dos)文件,同时执行这两个文件,并使用vb.net启动批处理 – Ksempac 2012-07-25 06:10:00

相关问题