0

わかりました、私は Minecraft.exe によって起動される Java プログラムである Minecraft のコピーを持っています。

同じフォルダー内には、VB.net でプログラミングしているプログラム (launcher.exe と呼びましょう) と 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 フォルダー内からカスタム メモリ割り当てを使用して起動します。2 つのコマンド ウィンドウも表示されます。1 つは Minecraft が閉じるときに閉じますが、もう 1 つは閉じず、ユーザーが閉じる必要があります。

私の質問は: Windows ショートカットの代わりに 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\.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 に答える