private static void CallEvent(
     EventHandler<GlobalKeyEventArgs> event_handler, GlobalKeyEventArgs event_args)
 {
     if (event_handler != null) event_handler(null, event_args);
 }
 private void GlobalKeybordMonitor_KeyUp(object sender, GlobalKeyEventArgs e)
 {
     mPressedKeys.Remove(e.KeyData);
     /*
     if (PropertyChanged != null)
         PropertyChanged(this, new PropertyChangedEventArgs("PressedKeys"));
      */
 }
        private static IntPtr HookProc(int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam)
        {
            bool handled = false;

            if (nCode == HC_ACTION)
            {
                GlobalKeyEventArgs event_args = new GlobalKeyEventArgs(lParam);
                switch (wParam.ToInt32())
                {
                    case WM_KEYDOWN:
                    case WM_SYSKEYDOWN:
                        CallEvent(KeyDown, event_args);
                        break;

                    case WM_KEYUP:
                    case WM_SYSKEYUP:
                        CallEvent(KeyUp, event_args);
                        break;
                }
                handled = event_args.Handled;
            }

            return handled
                ? (IntPtr) 1
                : CallNextHookEx(HookHandle, nCode, wParam, ref lParam);
        }
        private void GlobalKeybordMonitor_KeyDown(object sender, GlobalKeyEventArgs e)
        {
            if (mPressedKeys.Contains(e.KeyData)) return;

            var k = e.KeyData.ToString().ToLower();

            #region Windows 8 用のおまけ機能
            if (e.KeyData == Key.O && mPressedKeys.Contains(Key.LWin))
            {
                var rect = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
                System.Drawing.Image image = new System.Drawing.Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb);

                using (var g = System.Drawing.Graphics.FromImage(image))
                {
                    g.CopyFromScreen(rect.X, rect.Y, 0, 0, rect.Size, CopyPixelOperation.SourceCopy);
                }
                image.Save(GetFileNameToSave(save_dir, prefix, extension), ImageFormat.Png);

                k = "SnapShot".ToLower();
                e.Handled = true;
            }
            #endregion

            if (!MuteEnabled)
            {
                if (mSounds.Keys.Contains(k))
                    mSounds[k].Play();
                else if (DefaultSoundEnabled && mSounds.Keys.Contains("default"))
                    mSounds["default"].Play();
            }

            mPressedKeys.Add(e.KeyData);
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("PressedKeys"));
        }