Example #1
0
        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="Yanitta.WowMemory"/>.
        /// </summary>
        /// <param name="process">Процесс WoW.</param>
        public WowMemory(Process process)
        {
            if (process == null)
            {
                throw new ArgumentNullException(nameof(process));
            }

            var section = $"{process.ProcessName}_{process.MainModule.FileVersionInfo.FilePrivatePart}";

            Offsets = new Offsets(section);
            if (Offsets == null)
            {
                throw new NullReferenceException($"Current game version ({section}) not supported!");
            }

            Memory = new ProcessMemory(process);

            // Мы должны сохранить ссылку на делегат, чтобы его не трогал сборщик мусора
            KeyBoardProck = new KeyBoardProc(HookCallback);
            keyboardHook  = SetWindowsHookEx(13, KeyBoardProck, Process.GetCurrentProcess().MainModule.BaseAddress, 0);

            mTimer.Tick += (o, e) => {
                if (CheckProcess())
                {
                    var ingame = Memory.Read <byte>(Memory.Rebase(Offsets.IsInGame));
                    IsInGame = ingame != 0;
                }
            };
            mTimer.Start();
        }
Example #2
0
 public KeyboardHook()
 {
     dCallback = KeyboardCallback;
     using (Process process = Process.GetCurrentProcess())
         using (ProcessModule module = process.MainModule)
             hHook = SetWindowsHookEx(WH_KEYBOARD_LL, dCallback, GetModuleHandle(module.ModuleName), 0);
 }
Example #3
0
        void Dispose(bool disposing)
        {
            if (IsDisposed)
            {
                return;
            }

            mTimer?.Stop();
            if (keyboardHook != IntPtr.Zero)
            {
                UnhookWindowsHookEx(keyboardHook);
            }
            KeyBoardProck = null;

            if (IsInGame && Memory?.Process?.HasExited != true)
            {
                LuaExecute(StopCode);
            }

            keyboardHook = IntPtr.Zero;
            Memory       = null;
            IsDisposed   = true;
        }
Example #4
0
 static extern IntPtr SetWindowsHookEx(int idHook, KeyBoardProc lpfn, IntPtr hMod, uint dwThreadId);
Example #5
0
        /// <summary>
        /// Closes an open wow memory.
        /// </summary>
        public void Dispose()
        {
            if (IsDisposed)
                return;

            mTimer?.Stop();
            if (keyboardHook != IntPtr.Zero)
                UnhookWindowsHookEx(keyboardHook);
            KeyBoardProck = null;

            if (IsInGame && Memory?.Process?.HasExited != true)
                LuaExecute(StopCode);

            keyboardHook = IntPtr.Zero;
            Memory = null;
            IsDisposed = true;
            GC.SuppressFinalize(this);
        }
Example #6
0
        /// <summary>
        /// Create new instance of the <see cref="WowMemory"/>.
        /// </summary>
        /// <param name="process">Wow process.</param>
        public WowMemory(Process process)
        {
            if (process == null)
                throw new ArgumentNullException(nameof(process));

            Memory = new ProcessMemory(process);

            Settings.Load(Build);
            if (Settings.PlayerName == 0U)
                throw new NullReferenceException($"Current game version ({Build}) not supported!");

            KeyBoardProck = new KeyBoardProc(HookCallback);
            keyboardHook = SetWindowsHookEx(13, KeyBoardProck, Process.GetCurrentProcess().MainModule.BaseAddress, 0);

            mTimer.Tick += (o, e) => {
                if (CheckProcess())
                {
                    Settings.Load(Build);// reload offsets
                    IsInGame = Memory.Read<bool>(Memory.Rebase(Settings.IsInGame));
                    if (IsInGame && Settings.FishEnbl != 0L)
                    {
                        var isBotEnable = Memory.Read<float>(Memory.Rebase(Settings.FishEnbl));
                        if (Math.Abs(isBotEnable - 12.01f) < float.Epsilon)
                            TestBoober();
                    }
                }
            };
            mTimer.Start();
        }
Example #7
0
 static extern IntPtr SetWindowsHookEx(int idHook, KeyBoardProc lpfn, IntPtr hMod, uint dwThreadId);
Example #8
0
        void Dispose(bool disposing)
        {
            if (IsDisposed)
                return;

            mTimer?.Stop();
            if (keyboardHook != IntPtr.Zero)
                UnhookWindowsHookEx(keyboardHook);
            KeyBoardProck = null;

            if (IsInGame && Memory?.Process?.HasExited != true)
                LuaExecute(StopCode);

            keyboardHook = IntPtr.Zero;
            Memory = null;
            IsDisposed = true;
        }
Example #9
0
        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="Yanitta.WowMemory"/>.
        /// </summary>
        /// <param name="process">Процесс WoW.</param>
        public WowMemory(Process process)
        {
            if (process == null)
                throw new ArgumentNullException(nameof(process));

            var section = $"{process.ProcessName}_{process.MainModule.FileVersionInfo.FilePrivatePart}";

            Offsets = new Offsets(section);
            if (Offsets == null)
                throw new NullReferenceException($"Current game version ({section}) not supported!");

            Memory = new ProcessMemory(process);

            // Мы должны сохранить ссылку на делегат, чтобы его не трогал сборщик мусора
            KeyBoardProck = new KeyBoardProc(HookCallback);
            keyboardHook = SetWindowsHookEx(13, KeyBoardProck, Process.GetCurrentProcess().MainModule.BaseAddress, 0);

            mTimer.Tick += (o, e) => {
                if (CheckProcess())
                {
                    var ingame = Memory.Read<byte>(Memory.Rebase(Offsets.IsInGame));
                    IsInGame = ingame != 0;
                }
            };
            mTimer.Start();
        }