从零开始学编程

 找回密码
 立即注册

QQ登录

只需一步,快速开始

界面工厂编程视频教程广告联系qq1031180668广告位
查看: 204|回复: 1

[技术文章] C语言模拟按键

[复制链接]
  • ta_mind
    擦汗
    2016-3-2 13:17
  • classn_01: 5 classn_02

    [LV.2]偶尔看看I

    603

    主题

    613

    帖子

    682

    积分

    高级会员

    Rank: 4

    积分
    682
    发表于 2016-10-31 09:15:44 | 显示全部楼层 |阅读模式
    其实 keybd_event 这个API的模拟按键需要按键码,如果用户输入一个字符,怎么用这个API打印出来呢?
    其实很简单。这个我是在易语言中发现的
    易语言中的一个 #R键 的值和R的ASCII码是一样的。也就是说,用户输入一个字符,用keybd_event这个API打印出来是很简单的。我们可以全部读取,取出一个字符的ASCII码,然后打出来,再取出另一个,以此类推。。。。。。
    全部读取的话用动态数组是很好实现的。

    拼音必须是大写的,否则打的可能都是数字
    [C] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(int argc,char *argv[])
    {
            char *a;
            char b[100];
            int size;
            FILE *TEXTFILE;
            SetConsoleTitleA("自动打字工具");
            printf("文本路径:");
            scanf("%s",b);
            TEXTFILE=fopen(b,"rb+");
            if(!TEXTFILE)
            {
                    printf("打开文件失败\n");
                    system("pause");
                    return 0;
            }
            if(!feof(TEXTFILE))
            {
                    fseek(TEXTFILE,0L,SEEK_END);
                    size=ftell(TEXTFILE);
                    a=(char*)malloc(size*sizeof(char));
                    if(!a)
                    {
                            printf("内存申请失败\n");
                            fclose(TEXTFILE);
                            return 0;
                    }
                    fseek(TEXTFILE,0,SEEK_SET);
                    fread(a,1,size,TEXTFILE);
                    printf("5秒后程序就开始工作\n");
                    Sleep(5000);
                    printf("开始工作\n");
                    for(int i=0;i<size;i++)
                    {
                            keybd_event((int)a[i],0,0,0);
                            keybd_event((int)a[i],0,2,0);
                            keybd_event((int)a[i],0,2,0);
                            Sleep(100);
                    }
            }
            fclose(TEXTFILE);
            free(a);
            system("cls");
            system(argv[0]);
            exit(0);
            return 0;
    }




    上一篇:如何在C语言中巧用正则表达式
    下一篇:【转载】有关C语言编译器的选择的问题
  • ta_mind
    慵懒
    2016-7-26 11:59
  • classn_01: 3 classn_02

    [LV.2]偶尔看看I

    1

    主题

    16

    帖子

    45

    积分

    版主

    做人还是要低调

    Rank: 7Rank: 7Rank: 7

    积分
    45
    发表于 2016-12-4 15:38:32 | 显示全部楼层
    加油!(滑稽
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Archiver|小黑屋|sitemap|从零开始学编程 ( 豫ICP备15032706号-2 )

    GMT+8, 2017-4-30 03:24 , Processed in 1.109411 second(s), 34 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表