C# 控制台程序实现 Ctrl + V 粘贴功能
代码主要分为两部分,首先调用系统API注册剪切板相关的事件,然后监控用户的按键操作。完整代码如下:
class ClipBoard
{
[DllImport("user32.dll", SetLastError = true)]
private static extern Int32 IsClipboardFormatAvailable(uint format); [DllImport("user32.dll", SetLastError = true)]
private static extern Int32 OpenClipboard(IntPtr hWndNewOwner); [DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr GetClipboardData(uint uFormat); [DllImport("user32.dll", SetLastError = true)]
private static extern Int32 CloseClipboard(); [DllImport("kernel32.dll", SetLastError = true)]
private static extern Int32 GlobalLock(IntPtr hMem); [DllImport("kernel32.dll", SetLastError = true)]
private static extern Int32 GlobalUnlock(IntPtr hMem); [DllImport("kernel32.dll")]
public static extern UIntPtr GlobalSize(IntPtr hMem); const uint CF_TEXT = ; /// <summary>
/// 实现控制台自动粘贴板功能
/// </summary>
/// <returns></returns>
public static string PasteTextFromClipboard()
{
string result = "";
if (IsClipboardFormatAvailable(CF_TEXT) == )
{
return result;
}
if (OpenClipboard((IntPtr)) == )
{
return result;
} IntPtr hglb = GetClipboardData(CF_TEXT);
if (hglb != (IntPtr))
{
UIntPtr size = GlobalSize(hglb);
IntPtr s = (IntPtr)GlobalLock(hglb);
byte[] buffer = new byte[(int)size];
Marshal.Copy(s, buffer, , (int)size);
if (s != null)
{
result = ASCIIEncoding.ASCII.GetString(buffer);
GlobalUnlock(hglb);
}
} CloseClipboard();
return result;
} /// <summary>
/// 监控用户输入的按键
/// </summary>
public void KeyPress()
{
ConsoleKeyInfo ki = Console.ReadKey(true);
if ((ki.Key == ConsoleKey.V) && (ki.Modifiers == ConsoleModifiers.Control))
{
Console.WriteLine("Ctrl+V pressed");
string s = ClipBoard.PasteTextFromClipboard();
Console.WriteLine(s);
} Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
C# 控制台程序实现 Ctrl + V 粘贴功能的更多相关文章
- c# TextBox只允许输入数字,禁用右键粘贴,允许Ctrl+v粘贴数字
TextBox只允许输入数字,最大长度为10 //TextBox.ShortcutsEnabled为false 禁止右键和Ctrl+v private void txtNumber_KeyPress( ...
- 2019-3-22c# TextBox只允许输入数字,禁用右键粘贴,允许Ctrl+v粘贴数字
TextBox 禁止复制粘贴 ShortcutsEnabled =false TextBox只允许输入数字,最大长度为10 //TextBox.ShortcutsEnabled为false 禁止右键和 ...
- js实现ctrl+v粘贴图片或是截图
浏览器环境:谷歌浏览器 1.ctrl+v粘贴图片都是监听paste时间实现的,复制的数据都存在clipboardData下面,虽然打印显示数据长度为0,但是还是可以获取数据的 2.打印clipboar ...
- wangEditor实现ctrl+v粘贴word图片并上传
很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...
- js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)【转载】
我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=>粘贴=> ...
- js实现ctrl+v粘贴上传图片(兼容chrome,firefox,ie11)
背景 我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何实现的呢? 原理分析 提取操作:复制=>粘贴=& ...
- 如何屏蔽ctrl + v 粘贴事件,鼠标右键粘贴事件
通常在自己的APP里的密码框,验证码框需要屏蔽复制,粘贴,怎么办呢? 有三种方法: 1 hook 此方法是最完全的,但由于hook是全局的,容易影响到其它代码. 2 子类化文本框, 重写OnPaste ...
- ckeditor 实现ctrl+v粘贴图片并上传、word粘贴带图片
公司做的项目需要用到文本上传功能. Chrome+IE默认支持粘贴剪切板中的图片,但是我要粘贴的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? 我希望打开文档doc直接复制粘贴到富文本 ...
- umeditor实现ctrl+v粘贴word图片并上传
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM ...
随机推荐
- my_ls
#include<stdio.h> #include<dirent.h> #include<string.h> #include<sys/types.h> ...
- I am back-电商网站开发&jQuery
hi 之前有将近两周的时间没有更新,除了懒就是其他的事情耽误了.现在好了,回家了,虽然家里停水,外面又有积雪,天寒地冻的,但诸多不便,都比不过有点闲的好. 开搞每个学PHP的必经之路——电商网站的开发 ...
- 【原】css实现两端对齐的3种方法
说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐.右对齐的方式来对齐页面 ...
- NOIP2014飞扬的小鸟[DP][WRONG]
坑人啊朴素的dp 75分 用了完全背包才是80分,结果普遍偏小 为什么啊啊啊啊啊 等以后再写一遍吧 #include<iostream> #include<cstdio> #i ...
- Java中的单例模式
单例模式: public class Person{ public static Person per; //定义一个静态变量,用来存储当前类的对象 private Person() //构造一个私有 ...
- jqueryUI小案例
实现上面的功能: <%@ page language="java" import="java.util.*" pageEncoding="utf ...
- HTML 学习笔记 CSS(选择器2)
CSS 类选择器 类选择器允许以一种独立于文档元素的方式来指定样式 CSS 类选择器 类选择器允许以一种独立于文档元素的方式来指定样式 该选择器可以单独使用 也可以和其他元素结合使用 提示 只要适当的 ...
- jquery工具方法proxy
proxy : 改变this指向 使用方法1:function show(){ alert(this); }$.proxy(show,document)(); //document 使用方法2:fu ...
- webpack webpack-dev-server使用指南
webpack-dev-server插件可以实现webpack的自动编译刷新 项目结构 pockage.js { "name": "webpack", &quo ...
- Centos5.8 安装 PHP5.5 和 memcached
安装GIT 需要先安装gcc-c++ (sudo yum install gcc-c++) sudo yum install gettext-devel expat-devel cpio perl o ...