- 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();
- }
- }
- }
转载于:https://www.cnblogs.com/ryq2012/p/3199889.html