繁体   English   中英

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

[英]VB.net - Running a java application using Shell() and set its appdata folder. multiple commands?

好的,我有一份《我的世界》,这是Minecraft.exe启动的Java程序。

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

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

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

然后,我的世界就会从LocalAppData文件夹中以我的自定义内存分配启动。 同时出现两个命令窗口。 一个关闭时,我的世界会关闭,但另一个不会,需要由用户关闭

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

我的目标是从子文件夹启动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\.minecraft\bin\Minecraft.jar net.minecraft.LauncherFrame"
javaStartInfo.UseShellExecute = True
Process.Start(javaStartInfo)

有人看到我哪里出问题了吗?

Process类(http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.aspx)允许您启动进程。 您可以使用ProcessStartInfo实例(http://msdn.microsoft.com/zh-cn/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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM