如何跳过一个 IntPtr Struct 转到第二个 IntPtr Struct

问题描述

我一直在尝试让旧游戏正常运行,并认为我已经发现了问题。在下面的代码中,它显示了“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 (将#修改为@)