C# 模拟PrintScreen 和 Alt+PrintScreen
2015-12-14 00:00
429 查看
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Drawing.Imaging; namespace KeyBoard { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) {//打印全屏 Print.printScreen(); if (Clipboard.ContainsImage()) {//功能提取或替换Windows系统剪贴板的图片 Clipboard.GetImage(); } } private void button2_Click(object sender, EventArgs e) {//打印当前窗口 Print.altPrintScreen(); if (Clipboard.ContainsImage()) {//功能提取或替换Windows系统剪贴板的图片 Clipboard.GetImage(); } } } class Print { //bVk,虚拟键盘码 //bScan ,该键的硬件扫描码 //dwFlags,定义函数操作的各个方面的一个标志位集 //dwExtraInfo,定义与击键相关的附加的32位值 [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);//该函数合成一次击键事件 const int KEYEVENTF_KEYUP = 0x2;//若指定该值,该键将被释放;若未指定该值,该键将被按下 public static void keydown(Keys k) {//按下 keybd_event((byte)k, 0, 0, UIntPtr.Zero); } public static void keyup(Keys k) {//释放 keybd_event((byte)k, 0, KEYEVENTF_KEYUP, UIntPtr.Zero); } public static void printScreen() {//模拟PrintScreen keydown(Keys.PrintScreen); Application.DoEvents(); keyup(Keys.PrintScreen); Application.DoEvents(); } public static void altPrintScreen() {//模拟Alt+PrintScreen keydown(Keys.Menu); keydown(Keys.PrintScreen); Application.DoEvents(); keyup(Keys.PrintScreen); keyup(Keys.Menu); Application.DoEvents(); } } }