#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模拟键盘操作的更多相关文章

  1. SendInput模拟键盘输入的问题

    SendInput模拟键盘输入的问题  http://www.cnblogs.com/yedaoq/archive/2010/12/30/1922305.html 最近接触到这个函数,因此了解了一下, ...

  2. wshShell.SendKeys模拟键盘操作

    Dim wshShellSet wshShell = CreateObject("Wscript.Shell")wshShell.SendKeys "{ENTER}&qu ...

  3. firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作

    由于近期一直被firefox的保存文件弹出框困扰,摸索尝试过几种方法,已有的方法可以跑通但是对对效果不太满意,因此一直在寻找合适的解决办法. 最近发现了也可以通过VBS来处理弹出框,速度也不错,其原理 ...

  4. Python+Selenium自动化-模拟键盘操作

    Python+Selenium自动化-模拟键盘操作   0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...

  5. 【java+selenium3】模拟键盘操作 (十二)

    一.键盘操作 用代码来模拟键盘的Enter或一系列的组合键,前面使用sendkeys()方法模拟键盘的输入,除此之外还可以模拟键盘组合键输入如下: 整理一些比较常用的键盘操作如下: sendKeys( ...

  6. C# 模拟键盘操作--SendKey(),SendKeys()

    模拟键盘输入就是使用以下2个语法实现的.SendKeys.Send(string keys);  //模拟汉字(文本)输入SendKeys.SendWait(string keys); //模拟按键输 ...

  7. C# 模拟键盘操作SendKey(),SendKeys()

    模拟键盘输入就是使用以下2个语法实现的. SendKeys.Send(string keys);  //模拟汉字(文本)输入SendKeys.SendWait(string keys); //模拟按键 ...

  8. selenium模拟键盘操作

    单键 /** * 模拟键盘回车事件 * @throws AWTException */ public void KeyEventEnter() throws AWTException { Robot ...

  9. Selenium WebDriver-actionchain模拟键盘操作

    #encoding=utf-8 import unittest import time import chardet from selenium import webdriver from selen ...

随机推荐

  1. 1064 朋友数 (20 分)C语言

    如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 ...

  2. 从0开发3D引擎(五):函数式编程及其在引擎中的应用

    目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 ...

  3. Arrays.asList() 导致的java.lang.UnsupportedOperationException异常

    Arrays.asList() 只支持遍历和取值 不支持增删改 继承至AbstractList内部类

  4. SSM三大框架整合思路

    1.Dao层: Mybatis的配置文件:SqlMapConfig.xml 不需要配置任何内容,需要有文件头.文件必须存在. applicationContext-dao.xml: mybatis整合 ...

  5. ZooKeeper Java Example

    A Simple Watch Client Requirements Program Design The Executor Class The DataMonitor Class Complete ...

  6. 使用Java实现简单的Http服务器

    在Java中可以使用HttpServer类来实现Http服务器,该类位于com.sun.net包下(rt.jar).实现代码如下: 主程序类 package bg.httpserver; import ...

  7. java接入钉钉机器人(带源码)

    前言 登录钉钉网页: https://im.dingtalk.com 登录说明文档地址,以备随时查询: https://ding-doc.dingtalk.com/doc#/serverapi2/qf ...

  8. Ambari下安装oozieUI界面无法访问问题

    前言: 其他集群管理工具安装oozie和手动编译安装oozie,关于oozie的UI界面无法访问的问题,大致和该方法类似. 找到下面4步骤里的视图显示的目录,有一个ext-2.2软链指向的路径 lrw ...

  9. vue实现checked 全选功能

    记录一下 module.data = {  result: {}, items: [] //初始化全选按钮, 默认不选 ,isCheckedAll: false};module.vue = new V ...

  10. minikube 设置CPU和内存

    安装minikube之后,第一次sudo minikube start 时,设置参数--cpus int  --memory int . 如果需要更改设置,需要将缓存文件$HOME/.minikube ...