您的位置:首页 > 编程语言 > C#

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();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: