private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) // Defining a keyboard shortcut { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); if (vkCode == 162 || vkCode == 163) // 162 is Left Ctrl, 163 is Right Ctrl { ctrlPressed = true; } else if (vkCode == 83 && ctrlPressed == true) // "S" { ctrlPressed = false; ctrlSPressed = true; } else if (vkCode == 68 && ctrlSPressed == true) // "D" { ctrlPressed = false; ctrlSPressed = false; Console.WriteLine("\"CTRL + S + D\" is PRESSED!"); SnippingTool.Snip(); } else { ctrlPressed = false; ctrlSPressed = false; } } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
public static void Snip() { var screens = ScreenHelper.GetMonitorsInfo(); _forms = new SnippingTool[screens.Count]; for (int i = 0; i < screens.Count; i++) { int hRes = screens[i].HorizontalResolution; int vRes = screens[i].VerticalResolution; int top = screens[i].MonitorArea.Top; int left = screens[i].MonitorArea.Left; var bmp = new Bitmap(hRes, vRes, PixelFormat.Format32bppPArgb); using (var g = Graphics.FromImage(bmp)) { g.CopyFromScreen(left, top, 0, 0, bmp.Size); } _forms[i] = new SnippingTool(bmp, left, top, hRes, vRes); _forms[i].Show(); } }