300英雄吧 关注:1,181,158贴子:77,016,897
  • 8回复贴,共1

无限视距原理及其代码实现

取消只看楼主收藏回复

一楼不给看


1楼2017-02-13 08:33回复
    存活15分钟发正文


    2楼2017-02-13 08:34
    回复
      好 时间差不多了开始正文
      其实无限视距实现的原理有好几种(修改内存,修改dll文件。。。)
      在这里介绍一种比较简单的 修改分辨率
      但其实 1600*1200 和 1366*768 的效果差不多 、
      这就涉及到长宽的比例了,但是怪异的比例会造成300.exe 闪退(亲测)
      2:1 时会横向拉伸(视距横向扩大)


      11楼2017-02-13 08:54
      收起回复
        下面放上代码实现
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
        调用系统动态链接库 安装钩子
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        [DllImport("kernel32.dll")]
        勾住300.exe
        当检测到300运行 设置分辨率
        调用APi
        DEVMODE 入口
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern int ChangeDisplaySettings([In] ref DEVMODE lpDevMode, int dwFlags);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern bool EnumDisplaySettings(string lpszDeviceName, Int32 iModeNum, ref DEVMODE lpDevMode);
        用上面这俩 改分辨率 之后游戏结束 在调用这俩改回分辨率


        12楼2017-02-13 09:02
        收起回复


          24楼2017-02-13 10:14
          收起回复



            33楼2017-02-13 15:26
            收起回复


              34楼2017-02-13 15:29
              收起回复



                35楼2017-02-13 15:39
                回复

                  开挂的三笠


                  39楼2017-02-14 06:07
                  回复