VC模拟输入中文

用C#程序实现键盘和鼠标的模拟 using System;using System.Runtime.InteropServices;using System.Text;namespace ConsoleApplication8{class Class1{[STAThread]static void Main(string[] args){// Display current status of keys.Console.Wr 阅读详情

#include <winable.h>
#include <atlconv.h>

前者是SendInput函数要用到,后者是字符串转换的时候要用到。


void SendAscii(wchar_t data, BOOL shift)
{
  INPUT input[2];
  memset(input, 0, 2 * sizeof(INPUT));

  if (shift)
  {
    input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = VK_SHIFT;
    SendInput(1, input, sizeof(INPUT));
  }

  input[0].type = INPUT_KEYBOARD;
  input[0].ki.wVk = data;

  input[1].type = INPUT_KEYBOARD;
  input[1].ki.wVk = data;
  input[1].ki.dwFlags = KEYEVENTF_KEYUP;

  SendInput(2, input, sizeof(INPUT));

  if (shift)
  {
    input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = VK_SHIFT;
    input[0].ki.dwFlags = KEYEVENTF_KEYUP;
    SendInput(1, input, sizeof(INPUT));  
  }
}


void SendUnicode(wchar_t data)
{
  INPUT input[2];
  memset(input, 0, 2 * sizeof(INPUT));

  input[0].type = INPUT_KEYBOARD;
  input[0].ki.wVk = 0;
  input[0].ki.wScan = data;
  input[0].ki.dwFlags = 0x4;//KEYEVENTF_UNICODE;

  input[1].type = INPUT_KEYBOARD;
  input[1].ki.wVk = 0;
  input[1].ki.wScan = data;
  input[1].ki.dwFlags = KEYEVENTF_KEYUP | 0x4;//KEYEVENTF_UNICODE;

  SendInput(2, input, sizeof(INPUT));
}


//为方便使用,下面这个函数包装了前两个函数。

void SendKeys(CString msg)
{
  short vk;
  BOOL shift;

  USES_CONVERSION;
  wchar_t* data = T2W(msg.GetBuffer(0));
  int len = wcslen(data);

  for(int i=0;i<len;i++)
  {
    if (data[i]>=0 && data[i]<256) //ascii字符
    {
      vk = VkKeyScanW(data[i]);

      if (vk == -1)
      {
        SendUnicode(data[i]);
      }
      else
      {
        if (vk < 0)
        {
          vk = ~vk + 0x1;
        }
       
        shift = vk >> 8 & 0x1;
       
        if (GetKeyState(VK_CAPITAL) & 0x1)
        {
          if (data[i]>='a' && data[i]<='z' || data[i]>='A' && data[i]<='Z')
          {
            shift = !shift;
          }
        }

        SendAscii(vk & 0xFF, shift);
      }
    }
    else //unicode字符
    {
      SendUnicode(data[i]);
    }
  }
}


直接调用SendKeys函数就可以在当前光标的位置自动输入指定的字符串,下面的例子演示了如何自动打开记事本程序并输入一段话:
void CSendInputDlg::OnTest()
{
  ShellExecute(NULL, NULL, "notepad.exe", NULL, NULL, SW_SHOWNORMAL);

  Sleep(500); //为了确保记事本程序打开完毕,稍等片刻

  CWnd *pWnd = FindWindow(NULL, "无标题 - 记事本");
  if (pWnd)
  {
    pWnd->SetForegroundWindow();
    SendKeys("我是sway,我爱中国!\nI love China!\nEmail: xmujava@163.com\t\n2010-05-21  \b\b");
  }
}

AD9208的4通道 14-bit、2.4GSPS采样率之中文版资料 4通道 高速采集 14-bit 2.4GSPS采样率 阅读详情

相关推荐

【FMC136】AD9467之4通道 250MSPS 采样率16位AD 采集子卡模块得设计原理图中文资料

AD9467之4通道 250MSPS 采样率16位AD 采集子卡模块得设计原理图中文资料

beijingqingyikeji的博客 1854

SendInput 备份一

首先是,头文件必须包含以下两个: #include #include 前者是SendInput函数要用到,后者是字符串转换的时候要用到。 void SendAscii(wchar_t data, BOOL shift) {  INPUT input[2];  memset(input, 0, 2 * sizeof(INPUT));    if (shift)

jodan179的专栏 624

VC++ MFC软键盘开发:从原理到实践,实现自定义输入解决方案

在Windows桌面应用开发中,输入处理是核心基础技术之一,涉及消息机制、窗口管理与用户交互。其原理在于应用程序通过接收系统派发的键盘消息来响应用户输入,这构成了人机交互的底层通道。对于需要高度定制化输入界面的场景,如工业控制、触摸屏一体机或安全受限环境,系统自带输入法往往无法满足特定需求,这时开发自定义软键盘的技术价值便凸显出来。通过模拟键盘输入、管理焦点窗口和自定义绘制界面,开发者可以构建完全可控的输入解决方案。本文将深入解析使用Visual C++和MFC框架从零构建软键盘的关键技术,涵盖SendIn

weixin_33860553的博客 457

模拟键盘按键 自动输入文字

模拟键盘按键 自动输入文字  键盘对于每个操作电脑的人员来说是最熟悉不过的了。键盘上的按键可分为两类: 按下后会在电脑的输入窗口上出现对应字符的按键,如字母键和数字键等,我们称之为字符键;按下后虽然看不到字符但会产生控制作用的按键,如回车键、光标键等,我们称之为控制键。  对于程序员来说,键盘上的每个按键都一样,无非是不同按键产生的键盘扫描码不同。在不同的操作系统下,键盘扫描码常常被转换为不同

Danisの一棵树的软件历程 4617

用VC++开发PLC梯形图编辑器与仿真工具的核心实现

PLC编程软件的核心能力可拆解为图形编辑、代码转化与执行仿真,其中梯形图到指令表(IL)的转化以及基于指令解释器的模拟运行,是理解PLC扫描机制和指令栈运作的关键。将梯形图作为有向图处理,通过网格化布局和分支点识别,生成结构化指令序列,再配合定时器、计数器的上升沿检测与变量表映射,即可在本地实现完整的软PLC环境。这种自研编译器与解释器的做法,不仅适用于课程设计、毕业设计或上位机工具扩展,也能为工业自动化中的软件在环测试提供基础,例如将仿真器封装为Modbus TCP从站供LabVIEW等组态软件联动。VC

weixin_34166847的博客 346

C# 模拟键盘输入效果

C# 模拟键盘输入效果

VC+API模拟键盘按键(详解篇)

模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前就想过如何模拟键盘按键向其他程序发送控制命令,但总是无功而返,这次也不例外。 模拟按键的方法很多,如PostMessage(不能用SendMessage),SendInput,keybd_event。 但最要命的是以上方法基本上都要窗口获取焦点时才有效。也就是想后台模拟键盘按键难度 是很高的。 当然有些特殊

我是guyue,guyue就是我O(∩_∩)O 4万+

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8027

VC 模拟鼠标和键盘输入

模拟鼠标点击: 1、这里是鼠标左键按下和松开两个事件的组合即一次单击: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 2、模拟鼠标右键单击事件: mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 ) 3、两次连...

移动开发记录 354

WSL2+Docker实战:在Windows上部署MinerU 2.5.3,解锁媲美Demo的VLM PDF解析能力

本文详细介绍了如何在Windows系统上通过WSL2+Docker部署MinerU 2.5.3,实现媲美Demo的VLM PDF解析能力。文章涵盖环境准备、Docker部署实战技巧及高级使用技巧,特别针对PDF识别中的复杂排版、公式和图表处理提供了优化方案,帮助用户高效处理学术论文和技术文档。

weixin_29291573的博客 482

XIAO ESP32S3 Sense摄像头与麦克风实战:从硬件连接到AI语音视觉项目

本文详细介绍了如何使用Seeed Studio XIAO ESP32S3 Sense开发板进行AI语音视觉项目开发。从硬件连接到Arduino环境搭建,再到摄像头拍照、视频流传输、麦克风录音等实战操作,最后引导读者探索基于TensorFlow Lite Micro的语音唤醒和SenseCraft AI的图像识别等AI应用,为物联网和边缘AI项目提供了完整的入门指南。

xray4的博客 1024

鼠标键盘模拟 【转】

(1)SendMessage or PostMessage 指定hwnd后可以后台发送,这是相比后面2种方式的优势之一。 例如: 以当前程序的某个输入框为例: HWND tw2 = GetDlgItem(IDC_EDIT1)->m_hWnd; ::SendMessage(tw2,WM_CHAR,s[i],0); 单击按钮: HWND tw3 = GetDlgItem(IDOK)->

Alsmile的专栏 5412

RS-485调试踩坑实录:MAX13487数据回环问题排查与修复(附电路图)

本文深入解析了RS-485通信中MAX13487芯片的数据回环问题,提供了详细的排查过程和解决方案。通过分析芯片特性和自动换向机制,揭示了RO引脚配置不当是导致问题的关键原因,并给出硬件(添加上拉电阻)和软件(调整MCU配置)两种修复方案,附有优化设计建议和实际调试技巧。

play7的博客 1299

在VC中使用SendInput函数实现中文的自动输入

首先是,头文件必须包含以下两个:#include <winable.h>#include <atlconv.h> 前者是SendInput函数要用到,后者是字符串转换的时候要用到。 void SendAscii(wchar_t data, BOOL shift){ INPUT input[2]; memset(input, 0, 2 * sizeof(I...

afumz68826的专栏 452

基于Plecs的LLC谐振变换器闭环设计:从PI参数整定到动态响应优化

本文详细介绍了在Plecs仿真环境中,如何为半桥LLC谐振变换器设计并优化闭环控制系统。从开环模型搭建与特性分析入手,重点阐述了基于频域法的PI控制器参数整定流程,并通过负载阶跃、输入电压突变等测试优化动态响应。文章还分享了从仿真模型过渡到实际硬件时的关键注意事项,帮助工程师实现稳定、高效的电源设计。

e4f5g6h的博客 624

【LLC快速上手系列】LLC轻载时:开关频率 + 死区时间 联合优化!

轻载优化,频率别飞天,死区要有耐心。两手一起抓,效率高到笑。😎。

weixin_43199439的博客 1187

QQ自动登录/QQ登录器/程序源代码/VS2010/VS2012/VC/MFC

学习豪迪,研究了一下QQ自动登录怎么写。 以前QQ登录的介面先用SPY++来找到QQ登陆框,然后再把密码copy进去,就可以了。 现在的QQ登录介面这招不行,用SPY++是找不到任何ID的。 怎办呢? 只能采用全鼠标模拟输入的动作。 找到QQ安装程式->启动QQ->点击账号输入框->模拟键盘输入->点击密码输入框->模拟键盘输入->点击登录按钮

日显辉扬 2620

C#实战:从零搭建Vosk离线语音转文字系统

本文手把手教你用C#构建离线语音转文字系统,基于NAudio和Vosk实现全流程开发。首先介绍环境搭建,包括NuGet包安装和中文模型配置,强调16kHz单声道音频格式的关键性。接着详细解析音频预处理转换、Vosk模型初始化及识别过程的核心代码,提供多线程优化建议和实时识别扩展思路。文章包含80%以上代码注释,从常见问题排查到性能优化技巧,完整覆盖从"Hello World"到工业级部署的关键技术点,特别适合需要开发本地化语音识别应用的C#开发者。

墨夶的博客 753

TVS与ESD保护器件选型详解:从零理解静电、浪涌、参数计算与接口保护

面向刚入门的电子爱好者与硬件工程师。本文从电压、电流和回流路径讲起,逐步解释 TVS/ESD 的参数、接线、计算、接口实例和采购筛选。图示均为原创教学图;标注“假设”的参数用于演算,不代表某个真实器件的保证值。很多电路在桌面上能正常工作,插拔一次线缆却突然重启;有些设备冬天一摸外壳就失灵;还有一些板子已经加了 TVS,做浪涌测试时,TVS 没坏,后面的电源芯片却坏了。这些现象的共同点是:电路不仅要处理正常信号,还要承受从外部进入的瞬态电压和电流。

qq_39803549的博客 211

PCL 最小生成树用于法向量定向【2025最新版】

PCL 最小代价生成树用于点云法向量的定向。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2068

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【FMC155】2 路14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合ADC 同步采集FMC 子卡模块(AD9680)中文资料

2 路14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合ADC 同步采集FMC 子卡

beijingqingyikeji的博客 1486

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

需要简体中文语言支持包方可正确显示本页面_包老师的机器人技术等级考试四级课程试卷资料20181208...

20181208全国青少年机器人技术等级考试试卷(四级)试卷编号:865209试卷录入者:机器人包老师(玩得趣科教中心)试卷总分:100出卷时间:2018-12-24 12:05答题时间:30分钟分数:100 题数:45一、单选题(共30题,每题2分,共60分)1.超声波传感器,有四个引脚,超声波传感器从哪个引脚接受触发信号,开始工作?[2分]A.VCCB.TrigC.EchoD.GND2.关于P...

weixin_39633113的博客 1456

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【FMC137】基于 VITA57.4 标准的4 路2GSPS/2.6GSPS/3GSPS 14 位AD 采集子卡模块--AD9208得多通道中文资料

AD9208得多通道中文资料4 路2GSPS/2.6GSPS/3GSPS 14 位AD 采集子卡模块

beijingqingyikeji的博客 614

NI USB-6009 数据采集入门:LabVIEW DAQmx 编程与传感器信号调理实战

数据采集系统通常由传感器、信号调理、采集硬件和软件四层构成,其核心原理是将物理量转换为电信号,再经数字化处理供分析。在工业监测、实验室教学和低速过程控制等场景中,稳定可靠的低成本方案往往比高速性能更重要。NI USB-6009 作为经典的 USB 多功能数据采集卡,配合 LabVIEW 与 DAQmx 驱动,能够高效完成模拟输入输出、数字 I/O 及计数器操作。针对传感器课程设计和入门级监测项目,掌握信号调理、接线规范与 DAQmx 编程框架,即可快速搭建从传感器到屏幕的完整采集链路,并为后续多传感器融合与

weixin_34252090的博客 396
上一篇: DOM应用---遍历网页中的元素
下一篇: C++解析JSON
曾是土木人
博客等级 码龄15年 67粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值