微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何跳过一个 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 举报,一经查实,本站将立刻删除。