C# 模拟PrintScreen 和 Alt+PrintScreen

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://my.oschina.net/u/2552902/blog/543912

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值