/************************************************************
FileName: SendKey.cs Description: 模拟键盘指令,发送命令字符
Version:
***********************************************************/
using System;
using System.Windows.Automation;
using System.Threading;
using System.Text;
using System.Windows.Forms; namespace 命名空间
{
/// <summary>
/// 操作键盘命令
/// </summary>
public class SendKeys
{
StringBuilder builder = new StringBuilder(); public string Alt = "%";
public string ContextMenu = "+{F10}";
public string Ctrl = "^";
public string Shift = "+";
public string Enter = "{Enter}";
public string Delete = "{Del}";
public string Save = "^S";
public string SaveAll = "^+S";
public string Copy = "^C";
public string Cut = "^X";
public string Paste = "^V";
public string Undo = "^Z";
public string Redo = "^Y";
public string Print = "^P";
public string Help = "{F1}";
public string New = "^N";
public string DOWNARROW = "{DOWN}";
public string UPARROW = "{UP}";
public string LEFTARROW = "{LEFT}";
public string RIGHTARROW = "{RIGHT}"; public string[] Keys { get; set; } public void Sendkeys(AutomationElement element, string[] keys)
{
this.Keys = keys;
try
{
// element.SetFocus();
} catch (Exception exception)
{
throw new Exception("Cannot set focus to this element.", exception);
} string myKeys = ""; foreach (string str2 in this.Keys)
{
myKeys = myKeys + str2;
} Thread.Sleep(); if ((this.ContainsUnescapedKey(myKeys, '^') || this.ContainsUnescapedKey(myKeys, '%')) || this.ContainsUnescapedKey(myKeys, '+'))
{ myKeys = myKeys.ToLower(); } System.Windows.Forms.SendKeys.SendWait(myKeys); Thread.Sleep(0x3e8); } public void Sendkeys(AutomationElement element, string myKeys)
{
if (myKeys == string.Empty || myKeys == "") return;
this.Keys = new string[]; this.Keys[] = myKeys; try
{
//element.SetFocus();
}
catch (Exception exception)
{
throw new Exception("Cannot set focus to this element.", exception);
} Thread.Sleep(); if ((this.ContainsUnescapedKey(myKeys, '^') || this.ContainsUnescapedKey(myKeys, '%')) || this.ContainsUnescapedKey(myKeys, '+'))
{
myKeys = myKeys.ToLower();
} System.Windows.Forms.SendKeys.SendWait(myKeys); Thread.Sleep(0x3e8); } /// <summary>
/// 向活动应用程序发送击键。
/// </summary>
/// <param name="keys"></param>
public void Sendkeys(string keys)
{
System.Windows.Forms.SendKeys.SendWait(keys); Thread.Sleep(0x3e8);
} private bool ContainsUnescapedKey(string keys, char key)
{
for (int i = ; i < keys.Length; i++)
{
if (keys[i] == key)
{
if ((i == ) || (i == (keys.Length - )))
{
return true;
} if ((keys[i - ] != '{') || (keys[i + ] != '}'))
{
return true;
}
}
} return false; } private string KeysToString(string[] keys)
{
if (keys != null)
{ for (int i = ; i < keys.Length; i++)
{
string str = keys[i];
if (str == null)
{
builder.Append(keys[i]);
} int length = keys.Length - ; switch (str)
{ case "^":
builder.Append("Ctrl");
IsEquals(i, length, builder);
break; case "+{F10}":
builder.Append("Open Context Menu");
IsEquals(i, length, builder);
break; case "%":
builder.Append("Alt");
IsEquals(i, length, builder);
break; case "+":
builder.Append("Shift");
IsEquals(i, length, builder);
break; case "^S":
builder.Append("Save");
IsEquals(i, length, builder);
break; case "^X":
builder.Append("Cut");
IsEquals(i, length, builder);
break; case "^C":
builder.Append("Copy");
IsEquals(i, length, builder);
break; case "^V":
builder.Append("Paste");
IsEquals(i, length, builder);
break; case "^+S":
builder.Append("Save All");
IsEquals(i, length, builder);
break; case "^P":
builder.Append("Print");
IsEquals(i, length, builder);
break; case "^Z":
builder.Append("Undo");
IsEquals(i, length, builder);
break; case "^Y":
builder.Append("Redo");
IsEquals(i, length, builder);
break; case "^N":
builder.Append("New");
IsEquals(i, length, builder);
break; default:
builder.Append(keys[i]);
IsEquals(i, length, builder);
break; } } }
return builder.ToString(); } void IsEquals(int i, int length, StringBuilder builder)
{
if (i < length)
builder.Append("+");
} #region Public Method public override string ToString()
{
return string.Format("Sendkeys to input data or operator with keys = '{0}'", this.KeysToString(Keys));
} #endregion } }

SendKeys回车操作类的更多相关文章

  1. C# 文件操作类大全

      C# 文件操作类大全 时间:2015-01-31 16:04:20      阅读:1724      评论:0      收藏:0      [点我收藏+] 标签: 1.创建文件夹 //usin ...

  2. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  3. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  4. JQuery操作类数组的工具方法

    JQuery学习之操作类数组的工具方法 在很多时候,JQuery的$()函数都返回一个类似数据的JQuery对象,例如$('div')将返回div里面的所有div元素包装的JQuery对象.在这中情况 ...

  5. Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)

    今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> ...

  6. Util应用程序框架公共操作类(九):Lambda表达式扩展

    上一篇对Lambda表达式公共操作类进行了一些增强,本篇使用扩展方法对Lambda表达式进行扩展. 修改Util项目的Extensions.Expression.cs文件,代码如下. using Sy ...

  7. Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)

    前面介绍了查询的基础扩展,下面准备给大家介绍一些有用的查询封装手法,比如对日期范围查询,数值范围查询的封装等,为了支持这些功能,需要增强公共操作类. Lambda表达式公共操作类,我在前面已经简单介绍 ...

  8. Util应用程序框架公共操作类(七):Lambda表达式公共操作类

    前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务. Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递.在Linq中,大量使用La ...

  9. Util应用程序框架公共操作类(六):验证扩展

    前面介绍了仓储的基本操作,下面准备开始扩展查询,在扩展查询之前,首先要增加两个公共操作类,一个是经常要用到的验证方法,另一个是Lambda表达式的操作类. 很多时候,我们会判断一个对象是否为null, ...

随机推荐

  1. 初步理解MVC

    一.Asp.net WebForms 与Asp.net MVC 概念 Asp.net是创建WEB应用的框架,MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系. 我们可将原来的Asp.net ...

  2. elasticsearch2

    简单认为是可以在命令行下访问url的一个工具 curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求. curl -x 指定http请求的方法 ...

  3. iphone dev 入门实例2:Pass Data Between View Controllers using segue

    Assigning View Controller Class In the first tutorial, we simply create a view controller that serve ...

  4. python 虎扑注册检查脚本

    ulipad,看着蛮舒服的. 图里的代码就是今天晚上的成果. 突然就想看看python这个被很多人说是优雅的语言,于是晚上没事就配了配环境,做了个东西 #encoding: utf-8 import ...

  5. adb上使用cp/mv命令的替代方法(failed on '***' - Cross-device link解决方法)

    今天把玩手头的那部Android手机时碰到一个问题,即因为权限问题无法将文件复制到/system/和/data/分区中,经过一番折腾后,算是解决了,在此记录一笔.本方所涉及到的命令输入,均用斜体字表示 ...

  6. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  7. [hibernate]基本值类型映射之日期类型

    hibernate基本值类型映射中日期类型支持date,time,timestamp这三个选项,其中 date:对应数据库中的date类型,表示只显示日期 time:对应数据库中的time类型,表示只 ...

  8. phpmyadmin数据库导入出错

    SQL 查询: -- phpMyAdmin SQL Dump-- version 3.5.1-- http://www.phpmyadmin.net---- 主机: localhost-- 生成日期: ...

  9. linux命令(9)设定固定ip

    一.使用命令设置ubuntu的ip地址 1.修改配置文件blacklist.conf禁用IPV6: sudo vi /etc/modprobe.d/blacklist.conf 2.在文档最后添加 b ...

  10. Hololens开发笔记之使用Unity开发一个简单的应用

    一.Hololens概述 Hololens有以下特性 1.空间映射借助微软特殊定制的全息处理单元(HPU),HoloLens 实现了对周边环境的快速扫描和空间匹配.这保证了 HoloLens能够准确地 ...