private void InputObserveThread()
        {
            var keyboardHook = new KeyboardHook();
            var mouseHook    = new MouseHook();

            keyboardHook.KeyboardHooked += OnKeyboardHookEvent;
            mouseHook.MouseButton       += OnMouseButtonEvent;

            IntPtr msgPtr = IntPtr.Zero;

            while (WinApi.GetMessage(msgPtr, IntPtr.Zero, 0, 0))
            {
                WinApi.TranslateMessage(msgPtr);
                WinApi.DispatchMessage(msgPtr);
            }

            keyboardHook.KeyboardHooked -= OnKeyboardHookEvent;
            mouseHook.MouseButton       -= OnMouseButtonEvent;
            keyboardHook.Dispose();
            mouseHook.RemoveHook();
        }
        private void InputObserveThread()
        {
            _threadId.Value = WinApi.GetCurrentThreadId();
            //var keyboardHook = new KeyboardHook();
            var mouseHook = new MouseHook();

            //keyboardHook.KeyboardHooked += OnKeyboardHookEvent;
            mouseHook.MouseButton += OnMouseButtonEvent;

            try
            {
                IntPtr msgPtr = IntPtr.Zero;
                WinApi.PeekMessage(msgPtr, IntPtr.Zero, 0, 0, WinApi.PM_NOREMOVE);
                while (!_shouldStop.Value)
                {
                    int res = WinApi.GetMessage(msgPtr, IntPtr.Zero, 0, 0);
                    //NOTE: res == 0, -1は普通起きない
                    if (_shouldStop.Value || res == 0 || res == -1)
                    {
                        break;
                    }

                    LogOutput.Instance.Write("recv input message");
                    WinApi.TranslateMessage(msgPtr);
                    WinApi.DispatchMessage(msgPtr);
                }
            }
            catch (Exception ex)
            {
                LogOutput.Instance.Write(ex);
            }

            //keyboardHook.KeyboardHooked -= OnKeyboardHookEvent;
            mouseHook.MouseButton -= OnMouseButtonEvent;
            //keyboardHook.Dispose();
            mouseHook.RemoveHook();
        }