C语言实现模拟键盘输入字符串

部分应用或网站开启了禁止粘贴功能,该代码可以通过模拟键盘输入的方式,将英文输入至输入框中 ,具体使用说明请见如下介绍:

用户键字符串粘贴至小黑屏后按回车启动模拟输入功能,当用户切换至不能直接粘贴的输入框并出现光标后,按下ctrl+alt+v触发模拟输入功能 。

注意:

1.输入前请将输入法切换为英文并关闭大写字母锁定。

2.在输出时不支持的字符会使用:“- ”替换。

3. 最大支持单字符串1000个字符,用户可在str[]数组中修改更多或更少字符。

4.目前该代码仅支持英文大小写、数字、“,”,“.”的输入 ,用户可在代码的switch语句中自定义更多内容。

 在模拟输入完成后可按1开启新的模拟输入任务或退出:

 具体代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

void down(int vk)
{
    keybd_event(vk,0,0,0);
}
void up(int vk)
{
    keybd_event(vk,0,KEYEVENTF_KEYUP,0);
}
void press(int vk)
{
    down(vk);
    Sleep(50);
    up(vk);
}

void caps(char cha){
	
	press(VK_CAPITAL);//按下并放开大写字母锁定
	Sleep(50);
	press(cha);//按下并放开str[i]
	Sleep(50);
	press(VK_CAPITAL);//按下并放开大写字母锁定
    printf("输入:%c",cha);
} 

int main()
{
    char str[1000];
    int i,user;

    printf("请输入一个字符串:");
    fflush(stdin);
    gets(str);

    printf("您输入的字符串是:%s\n按下ctrl+alt+v触发模拟输入功能\n注意:将输入法切换为英文并关闭大写字母锁定\n在输出时不支持的字符会使用:“- ”替换\n", str);

    while (true)
    {
    	if (GetAsyncKeyState(VK_CONTROL) & 0x8000 && GetAsyncKeyState(VK_MENU) & 0x8000 && GetAsyncKeyState('V') & 0x8000)
        {
        	up(VK_CONTROL);
        	up(VK_MENU);
        	up('V');
        	printf("程序开始执行");
         	for (i = 0; str[i] != '\0'; i++)
    		{
    			if(str[i]>=97&&str[i]<=122) {//小写 
    				str[i]-=32;
    				press(str[i]);//按下并放开str[i]
				}else if((str[i]>=65&&str[i]<=90)||(str[i]>=48&&str[i]<=57)){//大写 
					caps(str[i]);
					Sleep(50);
    				
					}else {
						switch(str[i])
						{
    						case '.':press(VK_DECIMAL); Sleep(50); break;
    						case ',':press(VK_OEM_COMMA); Sleep(50); break;
							case ' ':press(VK_SPACE); Sleep(50); break;
    						/*
							case '.':press(VK_DECIMAL); Sleep(50); break;//自定义子符 
							case '.':press(VK_DECIMAL); Sleep(50); break;//自定义子符 
							case '.':press(VK_DECIMAL); Sleep(50); break;//自定义子符 
							case '.':press(VK_DECIMAL); Sleep(50); break;//自定义子符 
    						case '.':press(VK_DECIMAL); Sleep(50); break;//自定义子符 
							*/
    						default:press(VK_OEM_MINUS); Sleep(50);
						}
					}
				}
        	printf("\n程序已执行\n输入新字符请键入1,退出请键入任意键:");   
    		scanf("%d",&user);
			if(user==1) main();else break; // 跳出循环
    		}
        }
    
    return 0;
}

 注:本篇部分内容参考自 C/C++ 模拟键盘操作(一)_c 模拟键盘输入_折竹丶的博客-CSDN博客

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值