private void KeyboardListener_OnKeyEventHandler(object sender, KeyEvent e) { if (Properties.Settings.Default.MakeScreenshots == false) return; if (e.KeyDown == Key.PrintScreen && makeScreenshot == true) { if (previousKey == Key.LeftAlt || previousKey == Key.RightAlt) { var image = MakeScreenshotFromForegroundWindow(); string filePath = SaveScreenshot(image); if (filePath != null) AddImage(filePath); } else { var image = MakeScreenshotFromAllScreen(); string filePath = SaveScreenshot(image); if (filePath != null) AddImage(filePath); } makeScreenshot = false; } if ((e.KeyUp == Key.LeftAlt || e.KeyUp == Key.RightAlt) || e.KeyUp == Key.PrintScreen) makeScreenshot = true; previousKey = e.KeyDown; }
private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { try { if (nCode >= 0) { int vkCode = Marshal.ReadInt32(lParam); if (OnKeyEventHandler != null) { var keyEventArgs = new KeyEvent(); if (wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_SYSKEYDOWN) { keyEventArgs.KeyDownArgs(KeyInterop.KeyFromVirtualKey(vkCode)); } else if (wParam == (IntPtr)WM_KEYUP || wParam == (IntPtr)WM_SYSKEYDOWN) { keyEventArgs.KeyUpArgs(KeyInterop.KeyFromVirtualKey(vkCode)); } OnKeyEventHandler(this, keyEventArgs); } } return CallNextHookEx(hookID, nCode, wParam, lParam); } catch(Exception ex) { Log.Add(ex); } return new IntPtr(); }