问题描述
我一直在尝试让旧游戏正常运行,并认为我已经发现了问题。在下面的代码中,它显示了“IntPtr”和“IntPtr2”。我认为第一个包含 Settings.Default.XTrapArgKey
的 IntPtr 需要以某种方式绕过或禁用,以便游戏无需下载 XTrap 即可启动。
现在我不知道如何执行此操作或如何使其忽略该行代码,因为删除它会给我带来 100 多个错误。有什么帮助吗?
private unsafe void DoStartGame()
{
string text = Environment.CurrentDirectory + Program.SClientName;
try
{
btnStartEnable = true;
btnFileCheckEnable = false;
btnInitEnable = false;
IntPtr intPtr = Marshal.StringToHGlobalAnsi(Settings.Default.XTrapArgKey);
string s = Environment.CurrentDirectory + "\\Binaries\\Win32\\";
IntPtr intPtr2 = Marshal.StringToHGlobalAnsi(s);
Launcher.PatchC((sbyte*)(void*)intPtr,(sbyte*)(void*)intPtr2,60u,1u);
if (IntPtr.Zero != intPtr2)
{
Marshal.FreeHGlobal(intPtr2);
}
if (IntPtr.Zero != intPtr)
{
Marshal.FreeHGlobal(intPtr);
}
Process.Start(text,$"/VER:{FVersion.CurVersion}");
Close();
}
catch (Exception ex)
{
btnStartEnable = true;
btnFileCheckEnable = true;
btnInitEnable = true;
FLogWrite(ELogType.ERROR,"[PATCH] Client program execution Failed.\r\nFile: {0}\r\nError: {1}",text,ex.Message);
MessageBox.Show("Client program execution Failed.\nError: " + ex.Message,Program.SMessageTitle,MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
编辑: 删除部分代码有效,现在游戏进程启动但不执行任何操作。我已经尝试添加以下代码,但这就像我双击了游戏可执行文件一样,它给了我一个弹出窗口“请通过 dekstop 快捷方式启动”,这是启动器。
processstartinfo renaissanceHeroesInfo = new processstartinfo();
renaissanceHeroesInfo.FileName = (@"E:\Steam\steamapps\common\Renaissance Heroes\Binaries\Win32\DVGame.exe");
renaissanceHeroesInfo.WorkingDirectory = Path.GetDirectoryName(@"E:\Steam\steamapps\common\Renaissance Heroes\Binaries\Win32\DVGame.exe");
Process DVGame = Process.Start(renaissanceHeroesInfo);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)