我坚持一件事,我无法解决。我有一部分代码,它从命令行执行,就像魅力一样。工作没有任何问题。
所以,我将尝试从C#中调用此命令(相同)。
这是我从命令行运行的代码。
java -Xincgc -Xmx1024m -cp “%APPDATA%.minecraft \ BIN \ minecraft.jar;%APPDATA%.minecraft \ BIN \ lwjgl.jar;%APPDATA%.minecraft \ BIN \ lwjgl_util.jar;%APPDATA%.minecraft \ BIN \ jinput.jar” -Djava.library.path =“%APPDATA%.minecraft \ bin \ natives”net.minecraft.client.Minecraft“NAME”
我试图在C#中获取它的部分看起来像:
proc.StartInfo.FileName = "java";
proc.StartInfo.Arguments = "-Xincgc -Xmx1024m -cp \"%APPDATA%\\.minecraft\\bin\\minecraft.jar;%APPDATA%\\.minecraft\\bin\\lwjgl.jar;%APPDATA%\\.minecraft\\bin\\lwjgl_util.jar;%APPDATA%\\.minecraft\\bin\\jinput.jar\" -Djava.library.path=\"%APPDATA%\\.minecraft\\bin\\natives\" net.minecraft.client.Minecraft \"NAME\"";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start();
但是,根本没有任何事情发生。有什么我做错了吗? 谢谢你的帮助!
答案 0 :(得分:4)
使用Environment.ExpandEnvironmentVariables
扩展Arguments
中的环境变量。
string args = "-Xincgc -Xmx1024m -cp \"%APPDATA%\\.minecraft\\bin\\minecraft.jar;%APPDATA%\\.minecraft\\bin\\lwjgl.jar;%APPDATA%\\.minecraft\\bin\\lwjgl_util.jar;%APPDATA%\\.minecraft\\bin\\jinput.jar\" -Djava.library.path=\"%APPDATA%\\.minecraft\\bin\\natives\" net.minecraft.client.Minecraft \"NAME\"";
proc.StartInfo.Arguments = Environment.ExpandEnvironmentVariables(args);
BTW - 您可以使用verbatim string literal使该参数字符串更具可读性。
@"-Xincgc -Xmx1024m -cp ""%APPDATA%\.minecraft\bin\minecraft.jar;%APPDATA%\.minecraft\bin\lwjgl.jar;%APPDATA%\.minecraft\bin\lwjgl_util.jar;%APPDATA%\.minecraft\bin\jinput.jar"" -Djava.library.path=""%APPDATA%\.minecraft\bin\natives"" net.minecraft.client.Minecraft ""NAME""";