C#模拟PrtScn实现截屏预备知识--keybd_event使用方法

Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。但是已经被SendInput取代。

语法:

VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,Ptr dwExtralnfo);

参数:

bVk:定义一个虚拟键码。键码值必须在1~254之间。  

bScan: 定义该键的硬件扫描码。  

dwFlags: 定义函数操作的各个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位。  

KEYEVENTF_EXTENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。  

KEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键将被按下。

dwExtralnfo:定义与击键相关的附加的32位值。   

返回值:该函数无返回值。

keybd_event(16,0,0,0);//按下Shift键  
keybd_event(‘A‘,0,0,0);//按下a键  
keybd_event(‘A‘,0,KEYEVENTF_KEYUP,0);//松开a键
keybd_event(16,0,KEYEVENTF_KEYUP,0);//松开Shift键

在C#中导入keybd_event函数如下:

[DllImport("user32.dll")]
static extern void keybd_event
(
byte bVk,// 虚拟键值
byte bScan,// 硬件扫描码
uint dwFlags,// 动作标识
IntPtr dwExtraInfo// 与键盘动作关联的辅加信息
);

                              **键盘键与虚拟键码对照表**
      字母和数字键       数字小键盘的键       功能键             其它键
      键   键码       键   键码    键   键码     键       键码
      A   65        0   96     F1   112   Backspace    8
      B   66        1   97     F2   113   Tab       9
      C   67        2   98      F3   114   Clear      12
      D   68       3   99     F4   115   Enter      13
      E   69        4   100    F5   116   Shift      16
      F   70        5   101    F6   117   Control     17
      G   71        6   102    F7   118   Alt       18
      H   72       7   103     F8   119   Caps Lock    20
      I   73       8   104    F9   120   Esc       27
      J   74       9   105    F10  121   Spacebar    32
      K   75       *   106     F11  122   Page Up     33
      L   76       +   107     F12  123   Page Down    34
      M   77       Enter 108    --   --    End       35
      N   78       -   109    --   --     Home      36
      O   79       .   110    --   --    Left Arrow   37
      P   80       /   111    --   --    Up Arrow    38
      Q   81       --   --     --   --   Right Arrow   39
      R   82       --   --    --   --    Down Arrow    40
      S   83       --   --     --   --   Insert      45
      T   84       --   --     --   --   Delete      46
      U   85       --   --     --   --   Help       47
      V   86       --   --    --   --    Num Lock     144
      W   87          
      X   88      
      Y   89      
      Z   90      
      0   48      
      1   49      
      2   50       
      3   51       
      4   52       
      5   53       
      6   54       
      7   55       
      8   56       
      9   57  

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 19:24:56

C#模拟PrtScn实现截屏预备知识--keybd_event使用方法的相关文章

C#模拟PrtScn实现截屏预备知识--剪贴板操作

剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象.不过剪贴板也有限制,它在某个特定的时间只能指向一块内容,每一个随后复制的内容都会取代先前的内容.为了在C#中操作剪贴板(包括内容的读取和写入)需要使用到System.Windows.Forms.Clipboard类. Clipboard类: 提供将数据置于系统剪贴板中以及从中检索数据的方法,此类不能被继承. 命名空间: System.Windows.Forms 程序集

C#模拟PrtScn实现截屏

有了之前的基础知识了解,如今開始实现PrtScn和Alt+PrtScn. 首先新建一个WPF应用程序,命名为PrintscreenAndAltPrintScreen 导入keybd_event方法: 须要为DllImport加入using System.Runtime.InteropServices; [DllImport("user32.dll")] static extern void keybd_event ( byte bVk,// 虚拟键值 byte bScan,// 硬件扫

iOS开发-检测用户截屏, 并获取所截图片

微信可以检测到用户截屏行为(Home + Power),并在稍后点击附加功能按钮时询问用户是否要发送刚才截屏的图片,这个用户体验非常好.于是乎, 我也想着实现这个功能. 在iOS7之前, 如果用户截屏,系统会自动取消屏幕上的所有 touch 事件,(使用 touchesCancelled:withEvent: 这个方法)那么我们就可以检测这个方法的调用,然后加载本地最新图片再加以判断来实现我们的目的.但在 iOS 7 之后,截屏不再会取消屏幕的 touch 事件,所以导致了 Snapchat 和

Android Multimedia框架总结(二十五)MediaProjection实现手机截屏(无须root)

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53966818 前言:一年半多以前,我们曾有个项目,要做一个截屏功能,当时负责调研的同事,答应了产品上这个功能,但开发一周后,发现,无法实现截取手机屏幕图像,须要root权限,才能做.因为最近研究MediaProjection,意外的发现,竟然无须root,可以轻松实现次功能.曾经被做不到的,如今做到了,很难相信此时的心情.看下今天

VB用API模拟截屏键PrintScreen

很多人用 SendKeys "{PRTSC}" 模拟截屏键 PrintScreen 的时候提示<错误:'70' 拒绝的权限>,于是经常遇到人问...干脆写下来 '声明 Private Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal

【iOS开发-82】四个案例认识Quartz2D:模拟UIImageView、圆形头像切割、打水印、截屏

(1)效果 (2)源代码下载(素材自己替换) http://download.csdn.net/detail/wsb200514/8183437 (3)总结 --所有这些都可以通过封装,基于UIImage开发自己的category. --图形上下文,有开启UIGraphicsBeginImageContextWithOptions,获取UIGraphicsGetCurrentContext和关闭UIGraphicsEndPDFContext等主要操作,有开启就要由关闭. --其他图片和文字,是直

Java邮件发送与屏幕截屏

前几天七夕情人节孤独寂寞的程序猿闲来没事,花了一两个小时写了个小Demo主要实现Java的Mail发送功能和桌面截屏功能. 首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识. 一.Java  SendMail邮件发送 首先让我们来看看邮件发送的原理图: JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook.foxmail功能类似) * JavaMail开发需要类库 javamail API

[转] - 使用Qt作窗口截屏(含源码)

截屏(screenshot),就是将屏幕上的东西拷贝下来存成图片文件.介绍的好像有点多余:(,那我们就直接切入正题. QPixmap提供了两个函数grabWidget和grabWindow可以将屏幕上的窗体存成一个QPixmap格式的图片,很容易再将QPixmap存成文件.函数使用很简单,两行代码就可以.QPixmap pixmap = QPixmap::grabWidget(this);//this是调用该函数的QWidget *指针pixmap.save(“widget.png”,”png”

Google最新截屏案例详解

Google从Android 5.0 开始,给出了截屏案例ScreenCapture,在同版本的examples的Media类别中可以找到.给需要开发手机或平板截屏应用的小伙伴提供了非常有意义的参考资料,由于以前版本的API是隐藏的,要想开发一个截屏应用需要费一番心思且有局限性.当然了,这里说的截屏不是应用程序本身,而是包括状态栏在内的整个屏幕,不管当前运行的是什么程序,效果同按下手机自带截屏快捷键一样. 整个案例的源码就不在这里显摆了,相信感兴趣的朋友一定能找得到,其实整个工程很简单,而且在A