public static bool InstallHook()
        {
            dmDelegate = new DispatchMessageDelegate(DispatchMessageHook);
            IntPtr hookPtr = Marshal.GetFunctionPointerForDelegate(dmDelegate);

            try
            {
                return(ImportPatcher.ReplaceIATEntry("user32.dll",
#if S5
                                                     "DispatchMessageA",
#elif S6
                                                     "DispatchMessageW",
#endif
                                                     hookPtr));
            }
            catch (Exception)
            {
                MessageBox.Show("Couldn't patch DispatchMessage!");
                return(false);
            }
        }
        public static bool InstallHook()
        {
            ErrorHook.errorHandler    = new LuaCFunc(ErrorHook.ErrorCatcher);
            ErrorHook.errorHandlerPtr = Marshal.GetFunctionPointerForDelegate(ErrorHook.errorHandler);

            ErrorHook.pcallHook = new LuaPcallHook(ErrorHook.FakePcall);
            IntPtr pcallHookPtr = Marshal.GetFunctionPointerForDelegate(ErrorHook.pcallHook);

            try
            {
                return(ImportPatcher.ReplaceIATEntry(GlobalState.LuaDll, "lua_pcall", pcallHookPtr));
            }
            catch (Exception e)
            {
                Process p       = Process.GetCurrentProcess();
                string  modules = "";
                foreach (ProcessModule pm in p.Modules)
                {
                    modules += pm.ModuleName + " (@ 0x" + pm.BaseAddress.ToString("X") + ") " + pm.FileName + "\n";
                }
                MessageBox.Show("Patching the Import Table for lua_pcall failed!\nLua Errors won't be caught by the Debugger.\nProblem: " + e.Message + "\n\n" + modules.TrimEnd(), "Press Ctrl+C and send to yoq!");
                return(false);
            }
        }