[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); const uint WM_KEYDOWN = 0x0100;
const uint WM_KEYUP = 0x0101;
const uint WM_CHAR = 0x0102;
const int VK_TAB = 0x09;
const int VK_ENTER = 0x0D;
const int VK_UP = 0x26;
const int VK_DOWN = 0x28;
const int VK_RIGHT = 0x27; //According to SPY++ in IE //ENTER key is
// P KEYDOWN
// P CHAR
// S CHAR
// P KEY_UP //TAB key is
// P KEYDOWN
// P KEYUP //DOWN, UP, RIGHT, LEFT is
// P KEYDOWN
// S KEYDOWN
// P KEYUP //Letters is
// P KEYDOWN
// S KEYDOWN
// P CHAR
// S CHAR
// P KEYUP private void SendEnter()
{
PostMessage(this.Handle, WM_KEYDOWN, (IntPtr)VK_ENTER, IntPtr.Zero);
PostMessage(this.Handle, WM_CHAR, (IntPtr)VK_ENTER, IntPtr.Zero);
SendMessage(this.Handle, WM_CHAR, (IntPtr)VK_ENTER, IntPtr.Zero);
PostMessage(this.Handle, WM_KEYUP, (IntPtr)VK_ENTER, IntPtr.Zero);
} private void SendTab()
{
PostMessage(this.Handle, WM_KEYDOWN, (IntPtr)VK_TAB, IntPtr.Zero);
PostMessage(this.Handle, WM_KEYUP, (IntPtr)VK_TAB, IntPtr.Zero);
} private void SendArrowKey(int key)
{
PostMessage(this.Handle, WM_KEYDOWN, (IntPtr)key, IntPtr.Zero);
SendMessage(this.Handle, WM_KEYDOWN, (IntPtr)key, IntPtr.Zero);
PostMessage(this.Handle, WM_KEYUP, (IntPtr)key, IntPtr.Zero);
} private void SendChar(int key)
{
//Keydown wParam values are 0x020 less than WM_CHAR wParam
PostMessage(this.Handle, WM_KEYDOWN, (IntPtr)(key - 0x020), IntPtr.Zero);
SendMessage(this.Handle, WM_KEYDOWN, (IntPtr)(key - 0x020), IntPtr.Zero);
PostMessage(this.Handle, WM_CHAR, (IntPtr)key, IntPtr.Zero);
SendMessage(this.Handle, WM_CHAR, (IntPtr)key, IntPtr.Zero);
PostMessage(this.Handle, WM_KEYUP, (IntPtr)(key - 0x020), IntPtr.Zero);
}

Using PostMessage/SendMessage to send keys to c# IE WebBrowser的更多相关文章

  1. [Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?

    我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html: <div id="mailEditorDiv" style=" ...

  2. postMessage和sendMessage

    参考:http://www.cnblogs.com/giggle/p/5350288.html(浅谈webWorker) http://blog.csdn.net/zha_zi/article/det ...

  3. 实现两个窗口通信方法-postMessage

    此方案可解决跨域而且跨Iframe,而且http和https之间的交互 首先来看一下基本的语法 otherWindow.postMessage(message, targetOrigin, [tran ...

  4. AutoItLibrary之键盘操作(send)

    最近有人问到我键盘操作用什么库?用到库里面的哪个方法?我在这里总结一下,第一次写,有片面的地方还请指出,一块进步.1.首先,用到的库是AutoItLibrary,用到的方法是send:按F5可用看到 ...

  5. C#模拟按键

    try { System.Threading.Thread.Sleep(); ; i < ; i++) { SendKeys.SendWait("{ENTER}"); Sen ...

  6. delphi.thread.同步

    注意:此文只是讲线程间的同步,其它同步不涉及. 线程同步是个好话题,因为写线程经常会遇到,所以就写写自己知道的东西. D里面,同步(特指线程同步)从线程的角度来分,有几种情况: 1:主线程与工作线程的 ...

  7. C#模拟键盘按键的三种方式实现

    1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...

  8. C#实现的三种方式实现模拟键盘按键

    1.System.Windows.Forms.SendKeys 组合键:Ctrl = ^ .Shift = + .Alt = % 模拟按键:A private void button1_Click(o ...

  9. 走进windows编程的世界-----消息处理函数(1)

    Win32消息机制     过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束.     事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...

  10. Windows 消息机制浅析

    1.       Windows 的历史 中国人喜欢以史为鉴,而事实也确实是,如果你能知道一件事情的来龙去脉,往往可以更容易地理解事物为什么会表现为当前这样的现状.所以,我的介绍性开场白通常会以一段历 ...

随机推荐

  1. Unity 游戏开发、01 基础篇 | 阿发入门篇全课程学习笔记

    Unity Documentation .全课程视频 .第15,24章视频 afanihao Unity入门,全课程内容个人学习笔记,简单部分一笔带过,重点内容带 2.3 窗口布局 Unity默认窗口 ...

  2. 每日一练:无感刷新页面(附可运行的前后端源码,前端vue,后端node)

    1.前言 想象下,你正常在网页上浏览页面.突然弹出一个窗口,告诉你登录失效,跳回了登录页面,让你重新登录.你是不是很恼火.这时候无感刷新的作用就体现出来了. 2.方案 2.1 redis设置过期时间 ...

  3. k8s work节点无法使用kubectl命令

    在Kubernetes的node节点上运行命令 [ kubectl ] 命令出现了如下错误 root@calico-work01:~# kubectl get nodes The connection ...

  4. Mybatiplus通用3.5.1版本及其以上的代码生成器工具类

    Mybatiplus通用3.5.1版本及其以上的代码生成器工具类 package com.gton.util; import com.baomidou.mybatisplus.annotation.F ...

  5. ReactPortals传送门

    ReactPortals传送门 React Portals提供了一种将子节点渲染到父组件以外的DOM节点的解决方案,即允许将JSX作为children渲染至DOM的不同部分,最常见用例是子组件需要从视 ...

  6. strcpy()函数详解

    strcpy()函数是C语言中的一个复制字符串的库函数,以下将详细解释说明一下: · 函数声明以及实现代码 char *strcpy(char *dst, const char *src);char ...

  7. Python网络编程——操作系统基础、网络通信原理、.网络通信实现、DNS域名解析、 网络通信流程

    文章目录 一.操作系统基础 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 2.2 osi七层协议 2.3 tcp/ip五层模型讲解 2.3.1 物理层 2.3.2 数据链路层 2.3.3 ...

  8. CF1575I Illusions of the Desert

    prologue 还是太菜了,这个 154 行的树剖 20min 才敲完. analysis 首先,处理这个给到我们的这个式子. \[\max(| a _ u + a _ v |, | a _ u - ...

  9. 一些常见小程序的UI设计分享

    外卖优惠券小程序的UI设计 电子商城系统UI分享 A B C

  10. 报错Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一种解决方法

    问题 今天上80服务器跑mdistiller的代码时,意外发现torch.numpy都不能用了T_T 以torch为例,出现如下报错情况 以numpy为例,出现如下报错情况 我们先看看报错信息,这个报 ...