SendInput模拟键盘操作
- #include <windows.h>
- int main()
- {
- HWND parentHwnd, childHwnd;
- INPUT input[4];
- parentHwnd = FindWindow(TEXT("Notepad"), NULL);
- if (parentHwnd)
- {
- childHwnd = FindWindowEx(parentHwnd, NULL, TEXT("Edit"), NULL);
- if (childHwnd)
- {
- for (int i = 0; i < 10; i++)
- {
- SendMessage(childHwnd, WM_CHAR, 'A', 0);
- }
- SetForegroundWindow(parentHwnd);
- //CTRL+S
- memset(input, 0, sizeof(input));
- input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
- input[0].ki.wVk = input[2].ki.wVk = VK_CONTROL;
- input[1].ki.wVk = input[3].ki.wVk = 0x53;
- input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
- SendInput(4, input, sizeof(INPUT));
- //ALT+F4
- memset(input, 0, sizeof(input));
- input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
- input[0].ki.wVk = input[2].ki.wVk = VK_MENU;
- input[1].ki.wVk = input[3].ki.wVk = VK_F4;
- input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
- SendInput(4, input, sizeof(INPUT));
- }
- }
- return 0;
- }
- /*
- 发送字符串
- TCHAR *str = TEXT("Hello World");
- SendMessage(childHwnd, WM_SETTEXT, 0, (LPARAM)str);
- 腾讯QQ
- FindWindow(TEXT("TXGuiFoundation"), TEXT("N3verL4nd"));
- */
- /*
- POINT pt;
- char *str = "Hello World";
- while (1)
- {
- Sleep(1000);
- GetCursorPos(&pt);
- //hwnd = WindowFromPoint(pt);
- hwnd = FindWindow(TEXT("Notepad"), NULL);
- SendMessage(hwnd, WM_CHAR, (WPARAM)'G', NULL);
- }
- */
实现操作:向已经打开的记事本写入数据,保存(CTRL+S),关闭(ALT+F4)。
尝试用SendMessage发送组合键,没有得到解决办法。
如果我们获取QQ窗口的HWND,那么我们就可以自动发消息了。
- int main()
- {
- HWND hwndTX, hwndConsole;
- INPUT input[4];
- hwndConsole = GetConsoleWindow();
- hwndTX = FindWindow(TEXT("TXGuiFoundation"), TEXT("N3verL4nd"));
- if (hwndTX != NULL)
- {
- for (int i = 0; i < 10; i++)
- {
- SendMessage(hwndTX, WM_CHAR, 'A', 0);
- }
- SetForegroundWindow(hwndTX);
- memset(input, 0, sizeof(input));
- input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
- input[0].ki.wVk = input[2].ki.wVk = VK_MENU;
- input[1].ki.wVk = input[3].ki.wVk = 0x53;
- input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
- SendInput(4, input, sizeof(INPUT));
- SetForegroundWindow(hwndConsole);
- }
- else
- {
- puts("not found");
- }
- return 0;
- }
SendInput模拟键盘操作的更多相关文章
- SendInput模拟键盘输入的问题
SendInput模拟键盘输入的问题 http://www.cnblogs.com/yedaoq/archive/2010/12/30/1922305.html 最近接触到这个函数,因此了解了一下, ...
- wshShell.SendKeys模拟键盘操作
Dim wshShellSet wshShell = CreateObject("Wscript.Shell")wshShell.SendKeys "{ENTER}&qu ...
- firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作
由于近期一直被firefox的保存文件弹出框困扰,摸索尝试过几种方法,已有的方法可以跑通但是对对效果不太满意,因此一直在寻找合适的解决办法. 最近发现了也可以通过VBS来处理弹出框,速度也不错,其原理 ...
- Python+Selenium自动化-模拟键盘操作
Python+Selenium自动化-模拟键盘操作 0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...
- 【java+selenium3】模拟键盘操作 (十二)
一.键盘操作 用代码来模拟键盘的Enter或一系列的组合键,前面使用sendkeys()方法模拟键盘的输入,除此之外还可以模拟键盘组合键输入如下: 整理一些比较常用的键盘操作如下: sendKeys( ...
- C# 模拟键盘操作--SendKey(),SendKeys()
模拟键盘输入就是使用以下2个语法实现的.SendKeys.Send(string keys); //模拟汉字(文本)输入SendKeys.SendWait(string keys); //模拟按键输 ...
- C# 模拟键盘操作SendKey(),SendKeys()
模拟键盘输入就是使用以下2个语法实现的. SendKeys.Send(string keys); //模拟汉字(文本)输入SendKeys.SendWait(string keys); //模拟按键 ...
- selenium模拟键盘操作
单键 /** * 模拟键盘回车事件 * @throws AWTException */ public void KeyEventEnter() throws AWTException { Robot ...
- Selenium WebDriver-actionchain模拟键盘操作
#encoding=utf-8 import unittest import time import chardet from selenium import webdriver from selen ...
随机推荐
- 让你彻底明白TCP三次握手,四次挥手
今天我们来讲一下TCP的三次握手和四次挥手,先来张思维导图. 一.TCP是什么 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流 ...
- linux入门系列3--常见的linux远程登陆管理工具
服务器一般是云服务器或者放置在机房,我们日常工作中通过远程连接工具连接到服务器进行操作,这类工具很多(如SecureCRT.XShell.Putty.FinallShell.TeamViewer以及w ...
- Bandicam(班迪录屏)高清视频录制工具
Bandicam(班迪录屏)简单好用的录屏幕,录游戏,录视频的功能强大的屏幕录像软件,比起其他软件其性能更加卓越. 与其他软件相比,用Bandicam录制的视频大小更小, 不仅保证原文件的质量.
- 使用Eureka中遇到的一些问题
1.情况 : 服务已经注册到eureka,eureka中可以看到,但是 consumer和provider这两个服务,一直报错, 错误信息:DiscoveryClient_CONSUMER-DEM ...
- Mybatis-plus 实体类继承关系 插入默认值
在实际开发中,会定义一些公共字段,而这些公共字段,一般都是在进行操作的时候由程序自动将默认值插入.而公共的字段一般会被封装到一个基础的实体类中,同时实体类中会实现相应的getter setter 方法 ...
- 【Java基础总结】泛型
泛型实现了参数化类型的概念,使代码可以应用于多种类型. 1. 泛型类 声明的泛型类型静态方法不能使用 class Tools<T>{ private T t; public void se ...
- CTPN中anchors代码
import numpy as np def generate_basic_anchors(sizes, base_size=16): #base_anchor([0,0,15,15]) base_a ...
- 大白话建造者模式(Builder Pattern)
前言 起初打算按照之前的日产系列写建造者模式.但参考了网上的很多文章,让我对建造者模式更加的困惑,也害怕自己无法已易懂的方式进行解释.最后通过Google发现了一篇英文文章Builder,使我茅塞顿开 ...
- 倍增笔记ST表
https://noip-1253948194.cos.ap-beijing.myqcloud.com/%E5%80%8D%E5%A2%9E-ST%E7%AE%97%E6%B3%95.mp4 1123 ...
- struts2 convention插件
1.struts2自2.1以后推荐使用Convention Plugin支持struts零配置支持(引入jar:struts2-convention-plugin-2.x.x.jar)①convent ...