精华内容
下载资源
问答
  • linux c语言 模拟键盘输入

    千次阅读 2017-04-13 19:28:29
    我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体 方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。 linux/...

    1.查看/dev/input/eventX是什么类型的事件

    root@NanoPi2:~# cat /proc/bus/input/devices 
    I: Bus=0003 Vendor=062a Product=4182 Version=0110
    N: Name="MOSART Semi. 2.4G Keyboard Mouse"
    P: Phys=usb-nxp-ehci-1.2.2/input0
    S: Sysfs=/devices/platform/nxp-ehci/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.0/input/input3
    U: Uniq=
    H: Handlers=sysrq kbd event3 
    B: PROP=0
    B: EV=120013
    B: KEY=10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe
    B: MSC=10
    B: LED=7
    I: Bus=0003 Vendor=062a Product=4182 Version=0110
    N: Name="MOSART Semi. 2.4G Keyboard Mouse"
    P: Phys=usb-nxp-ehci-1.2.2/input1
    S: Sysfs=/devices/platform/nxp-ehci/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.1/input/input4
    U: Uniq=
    H: Handlers=kbd mouse1 event4 
    B: PROP=0
    B: EV=1f
    B: KEY=4837fff 72ff32d bf544446 0 0 1f0001 20f90 8b17c000 677bfa d941dfed 9ed680 4400 0 10000002
    B: REL=1c3
    B: ABS=1f01 0
    B: MSC=10
    

    查询结果是键盘句柄:kbd event3 鼠标句柄:kbd mouse1 event4
    设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体 方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。
    linux/input.h中有定义,这个文件还定义了标准按键的编码等

    struct input_event {  
    
    struct timeval time; //按键时间  
    __u16 type; //类型,在下面有定义  
    __u16 code; //要模拟成什么按键  
    __s32 value;//是按下还是释放  
    
    }; 

    code:
    事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.代码植0~127为键盘上的按键代码,0x110~0x116 为鼠标上按键代码,其中0x110(BTN_ LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_ MIDDLE)为鼠标中键.其它代码含义请参看include/linux/input.h文件. 如果事件的类型代码是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码 为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).
    type:
    EV_KEY,键盘
    EV_REL,相对坐标
    EV_ABS,绝对坐标
    value:
    事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_ REL,value的正数值和负数值分别代表两个不同方向的值.

    /* 
    * Event types 
    */  
    #define EV_SYN 0x00  
    #define EV_KEY 0x01 //按键  
    #define EV_REL 0x02 //相对坐标(轨迹球)  
    #define EV_ABS 0x03 //绝对坐标  
    #define EV_MSC 0x04 //其他  
    #define EV_SW 0x05  
    #define EV_LED 0x11 //LED  
    #define EV_SND 0x12//声音  
    #define EV_REP 0x14//repeat  
    #define EV_FF 0x15   
    #define EV_PWR 0x16  
    #define EV_FF_STATUS 0x17  
    #define EV_MAX 0x1f  
    #define EV_CNT (EV_MAX+1) 

    2.模拟按键输入
    //其中0表示释放,1按键按下,2表示一直按下
    //0 for EV_KEY for release, 1 for keypress and 2 for autorepeat.

    void simulate_key(int fd,int value)  
    {  
        struct input_event event;  
        event.type = EV_KEY;  
        //event.code = KEY_0;//要模拟成什么按键  
        event.value = value;//是按下还是释放按键或者重复  
        gettimeofday(&event.time,0);  
        if(write(fd,&event,sizeof(event)) < 0)
        {  
            dprintk("simulate key error~~~\n");  
            return ;  
        }  
    }  

    3.模拟鼠标输入(轨迹球)

    void simulate_mouse(int fd,char buf[4])  
    {  
    int rel_x,rel_y;  
    static struct input_event event,ev;  
    //buf[0],buf[2],小于0则为左移,大于0则为右移  
    //buf[1],buf[3],小于0则为下移,大于0则为上移  
    dprintk("MOUSE TOUCH: x1=%d,y1=%d,x2=%d,y2=%d\n",buf[0],buf[1],buf[2],buf[3]);  
    rel_x = (buf[0] + buf[2]) /2;  
    rel_y = -(buf[1] + buf[3]) /2; //和我们的鼠标是相反的方向,所以取反  
    event.type = EV_REL;  
    event.code = REL_X;  
    event.value = rel_x;  
    gettimeofday(&event.time,0);  
    if( write(fd,&event,sizeof(event))!=sizeof(event))  
    dprintk("rel_x error~~~:%s\n",strerror(errno));  
    event.code = REL_Y;  
    event.value = rel_y;  
    gettimeofday(&event.time,0);  
    if( write(fd,&event,sizeof(event))!=sizeof(event))  
    dprintk("rel_y error~~~:%s\n",strerror(errno));  
    //一定要刷新空的  
    write(fd,&ev,sizeof(ev));  
    }  

    4.鼠标和键盘文件打开方法:

    int fd_kbd; // /dev/input/event1  
    int fd_mouse; //dev/input/mouse2  
    fd_kbd = open("/dev/input/event1",O_RDWR);  
    if(fd_kbd<=0){  
    printf("error open keyboard:%s\n",strerror(errno));  
    return -1;  
    }  
    fd_mouse = open("/dev/input/event3",O_RDWR); //如果不行的话,那试试/dev/input/mice  
    if(fd_mouse<=0){  
    printf("error open mouse:%s\n",strerror(errno));  
    return -2;  
    }  
    } 

    5.例子

    #include <string.h>  
    #include <stdio.h>  
    #include <sys/types.h>  
    #include <sys/stat.h>  
    #include <fcntl.h>  
    #include <linux/input.h>  
    #include <linux/uinput.h>  
    #include <stdio.h>  
    #include <sys/time.h>  
    #include <sys/types.h>  
    #include <unistd.h>  
    
    void simulate_key(int fd,int kval)  
    {  
        struct input_event event;  
        event.type = EV_KEY;  
        event.value = 1;  
        event.code = kval;  
    
        gettimeofday(&event.time,0);  
        write(fd,&event,sizeof(event)) ;  
    
            event.type = EV_SYN;  
            event.code = SYN_REPORT;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    
            memset(&event, 0, sizeof(event));  
            gettimeofday(&event.time, NULL);  
            event.type = EV_KEY;  
            event.code = kval;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
            event.type = EV_SYN;  
            event.code = SYN_REPORT;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    }  
    void simulate_mouse(int fd)  
    {  
        struct input_event event;  
            memset(&event, 0, sizeof(event));  
            gettimeofday(&event.time, NULL);  
            event.type = EV_REL;  
            event.code = REL_X;  
            event.value = 10;  
            write(fd, &event, sizeof(event));  
    
            event.type = EV_REL;  
            event.code = REL_Y;  
            event.value = 10;  
            write(fd, &event, sizeof(event));  
    
            event.type = EV_SYN;  
            event.code = SYN_REPORT;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    }  
    int main()  
    {  
        int fd_kbd;   
        int fd_mouse;   
        fd_kbd = open("/dev/input/event1",O_RDWR);  
        if(fd_kbd<=0){  
            printf("error open keyboard:\n");  
            return -1;  
        }  
        fd_mouse = open("/dev/input/event2",O_RDWR);   
        if(fd_mouse<=0){  
            printf("error open mouse\n");  
            return -2;  
        }  
        int i = 0;  
        for(i=0; i< 10; i++)  
        {  
            simulate_key(fd_kbd, KEY_A + i);  
            simulate_mouse(fd_mouse);  
            sleep(1);  
        }  
        close(fd_kbd);  
    }  

    6.模拟多个按键

    void simulate_ctrl_space(int fd)  
    {  
            struct input_event event;  
    
         //先发送一个 CTRL 按下去的事件。  
            event.type = EV_KEY;  
            event.value = 1;  
            event.code = KEY_LEFTCTRL;  
            gettimeofday(&event.time,0);  
            write(fd,&event,sizeof(event)) ;  
    
            event.type = EV_SYN;  
            event.code = SYN_REPORT;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    
         //先发送一个 SPACE 按下去的事件。  
            event.type = EV_KEY;  
            event.value = 1;  
            event.code = KEY_SPACE;  
            gettimeofday(&event.time,0);  
            write(fd,&event,sizeof(event)) ;  
    
         //发送一个 释放 SPACE 的事件  
            memset(&event, 0, sizeof(event));  
            gettimeofday(&event.time, NULL);  
            event.type = EV_KEY;  
            event.code = KEY_SPACE;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    
            event.type = EV_SYN;  
            event.code = SYN_REPORT;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    
         //发送一个 释放 CTRL 的事件  
            memset(&event, 0, sizeof(event));  
            gettimeofday(&event.time, NULL);  
            event.type = EV_KEY;  
            event.code = KEY_LEFTCTRL;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    
            event.type = EV_SYN;  
            event.code = SYN_REPORT;  
            event.value = 0;  
            write(fd, &event, sizeof(event));  
    }  

    6.附input.h中key定义

    213 #define KEY_RESERVED            0
    214 #define KEY_ESC                 1
    215 #define KEY_1                   2
    216 #define KEY_2                   3
    217 #define KEY_3                   4
    218 #define KEY_4                   5
    219 #define KEY_5                   6
    220 #define KEY_6                   7
    221 #define KEY_7                   8
    222 #define KEY_8                   9
    223 #define KEY_9                   10
    224 #define KEY_0                   11
    225 #define KEY_MINUS               12
    226 #define KEY_EQUAL               13
    227 #define KEY_BACKSPACE           14
    228 #define KEY_TAB                 15
    229 #define KEY_Q                   16
    230 #define KEY_W                   17
    231 #define KEY_E                   18
    232 #define KEY_R                   19
    233 #define KEY_T                   20
    234 #define KEY_Y                   21
    235 #define KEY_U                   22
    236 #define KEY_I                   23
    237 #define KEY_O                   24
    238 #define KEY_P                   25
    239 #define KEY_LEFTBRACE           26
    240 #define KEY_RIGHTBRACE          27
    241 #define KEY_ENTER               28
    242 #define KEY_LEFTCTRL            29
    243 #define KEY_A                   30
    244 #define KEY_S                   31
    245 #define KEY_D                   32
    246 #define KEY_F                   33
    247 #define KEY_G                   34
    248 #define KEY_H                   35
    249 #define KEY_J                   36
    250 #define KEY_K                   37
    251 #define KEY_L                   38
    252 #define KEY_SEMICOLON           39
    253 #define KEY_APOSTROPHE          40
    254 #define KEY_GRAVE               41
    255 #define KEY_LEFTSHIFT           42
    256 #define KEY_BACKSLASH           43
    257 #define KEY_Z                   44
    258 #define KEY_X                   45
    259 #define KEY_C                   46
    260 #define KEY_V                   47
    261 #define KEY_B                   48
    262 #define KEY_N                   49
    263 #define KEY_M                   50
    264 #define KEY_COMMA               51
    265 #define KEY_DOT                 52
    266 #define KEY_SLASH               53
    267 #define KEY_RIGHTSHIFT          54
    268 #define KEY_KPASTERISK          55
    269 #define KEY_LEFTALT             56
    270 #define KEY_SPACE               57
    271 #define KEY_CAPSLOCK            58
    272 #define KEY_F1                  59
    273 #define KEY_F2                  60
    274 #define KEY_F3                  61
    275 #define KEY_F4                  62
    276 #define KEY_F5                  63
    277 #define KEY_F6                  64
    278 #define KEY_F7                  65
    279 #define KEY_F8                  66
    280 #define KEY_F9                  67
    281 #define KEY_F10                 68
    282 #define KEY_NUMLOCK             69
    283 #define KEY_SCROLLLOCK          70
    284 #define KEY_KP7                 71
    285 #define KEY_KP8                 72
    286 #define KEY_KP9                 73
    287 #define KEY_KPMINUS             74
    288 #define KEY_KP4                 75
    289 #define KEY_KP5                 76
    290 #define KEY_KP6                 77
    291 #define KEY_KPPLUS              78
    292 #define KEY_KP1                 79
    293 #define KEY_KP2                 80
    294 #define KEY_KP3                 81
    295 #define KEY_KP0                 82
    296 #define KEY_KPDOT               83
    297 
    298 #define KEY_ZENKAKUHANKAKU      85
    299 #define KEY_102ND               86
    300 #define KEY_F11                 87
    301 #define KEY_F12                 88
    302 #define KEY_RO                  89
    303 #define KEY_KATAKANA            90
    304 #define KEY_HIRAGANA            91
    305 #define KEY_HENKAN              92
    306 #define KEY_KATAKANAHIRAGANA    93
    307 #define KEY_MUHENKAN            94
    308 #define KEY_KPJPCOMMA           95
    309 #define KEY_KPENTER             96
    310 #define KEY_RIGHTCTRL           97
    311 #define KEY_KPSLASH             98
    312 #define KEY_SYSRQ               99
    313 #define KEY_RIGHTALT            100
    314 #define KEY_LINEFEED            101
    315 #define KEY_HOME                102
    316 #define KEY_UP                  103
    317 #define KEY_PAGEUP              104
    318 #define KEY_LEFT                105
    319 #define KEY_RIGHT               106
    320 #define KEY_END                 107
    321 #define KEY_DOWN                108
    322 #define KEY_PAGEDOWN            109
    323 #define KEY_INSERT              110
    324 #define KEY_DELETE              111
    325 #define KEY_MACRO               112
    326 #define KEY_MUTE                113
    327 #define KEY_VOLUMEDOWN          114
    328 #define KEY_VOLUMEUP            115
    329 #define KEY_POWER               116     /* SC System Power Down */
    330 #define KEY_KPEQUAL             117
    331 #define KEY_KPPLUSMINUS         118
    332 #define KEY_PAUSE               119
    333 #define KEY_SCALE               120     /* AL Compiz Scale (Expose) */
    334 
    335 #define KEY_KPCOMMA             121
    336 #define KEY_HANGEUL             122
    337 #define KEY_HANGUEL             KEY_HANGEUL
    338 #define KEY_HANJA               123
    339 #define KEY_YEN                 124
    340 #define KEY_LEFTMETA            125
    341 #define KEY_RIGHTMETA           126
    342 #define KEY_COMPOSE             127
    343 
    344 #define KEY_STOP                128     /* AC Stop */
    345 #define KEY_AGAIN               129
    346 #define KEY_PROPS               130     /* AC Properties */
    347 #define KEY_UNDO                131     /* AC Undo */
    348 #define KEY_FRONT               132
    349 #define KEY_COPY                133     /* AC Copy */
    350 #define KEY_OPEN                134     /* AC Open */
    351 #define KEY_PASTE               135     /* AC Paste */
    352 #define KEY_FIND                136     /* AC Search */
    353 #define KEY_CUT                 137     /* AC Cut */
    354 #define KEY_HELP                138     /* AL Integrated Help Center */
    355 #define KEY_MENU                139     /* Menu (show menu) */
    356 #define KEY_CALC                140     /* AL Calculator */
    357 #define KEY_SETUP               141
    358 #define KEY_SLEEP               142     /* SC System Sleep */
    359 #define KEY_WAKEUP              143     /* System Wake Up */
    360 #define KEY_FILE                144     /* AL Local Machine Browser */
    361 #define KEY_SENDFILE            145
    362 #define KEY_DELETEFILE          146
    363 #define KEY_XFER                147
    364 #define KEY_PROG1               148
    365 #define KEY_PROG2               149
    366 #define KEY_WWW                 150     /* AL Internet Browser */
    367 #define KEY_MSDOS               151
    368 #define KEY_COFFEE              152     /* AL Terminal Lock/Screensaver */
    369 #define KEY_SCREENLOCK          KEY_COFFEE
    370 #define KEY_DIRECTION           153
    371 #define KEY_CYCLEWINDOWS        154
    372 #define KEY_MAIL                155
    373 #define KEY_BOOKMARKS           156     /* AC Bookmarks */
    374 #define KEY_COMPUTER            157
    375 #define KEY_BACK                158     /* AC Back */
    376 #define KEY_FORWARD             159     /* AC Forward */
    377 #define KEY_CLOSECD             160
    378 #define KEY_EJECTCD             161
    379 #define KEY_EJECTCLOSECD        162
    380 #define KEY_NEXTSONG            163
    381 #define KEY_PLAYPAUSE           164
    382 #define KEY_PREVIOUSSONG        165
    383 #define KEY_STOPCD              166
    384 #define KEY_RECORD              167
    385 #define KEY_REWIND              168
    386 #define KEY_PHONE               169     /* Media Select Telephone */
    387 #define KEY_ISO                 170
    388 #define KEY_CONFIG              171     /* AL Consumer Control Configuration */
    389 #define KEY_HOMEPAGE            172     /* AC Home */
    390 #define KEY_REFRESH             173     /* AC Refresh */
    391 #define KEY_EXIT                174     /* AC Exit */
    392 #define KEY_MOVE                175
    393 #define KEY_EDIT                176
    394 #define KEY_SCROLLUP            177
    395 #define KEY_SCROLLDOWN          178
    396 #define KEY_KPLEFTPAREN         179
    397 #define KEY_KPRIGHTPAREN        180
    398 #define KEY_NEW                 181     /* AC New */
    399 #define KEY_REDO                182     /* AC Redo/Repeat */
    400 
    401 #define KEY_F13                 183
    402 #define KEY_F14                 184
    403 #define KEY_F15                 185
    404 #define KEY_F16                 186
    405 #define KEY_F17                 187
    406 #define KEY_F18                 188
    407 #define KEY_F19                 189
    408 #define KEY_F20                 190
    409 #define KEY_F21                 191
    410 #define KEY_F22                 192
    411 #define KEY_F23                 193
    412 #define KEY_F24                 194
    413 
    414 #define KEY_PLAYCD              200
    415 #define KEY_PAUSECD             201
    416 #define KEY_PROG3               202
    417 #define KEY_PROG4               203
    418 #define KEY_DASHBOARD           204     /* AL Dashboard */
    419 #define KEY_SUSPEND             205
    420 #define KEY_CLOSE               206     /* AC Close */
    421 #define KEY_PLAY                207
    422 #define KEY_FASTFORWARD         208
    423 #define KEY_BASSBOOST           209
    424 #define KEY_PRINT               210     /* AC Print */
    425 #define KEY_HP                  211
    426 #define KEY_CAMERA              212
    427 #define KEY_SOUND               213
    428 #define KEY_QUESTION            214
    429 #define KEY_EMAIL               215
    430 #define KEY_CHAT                216
    431 #define KEY_SEARCH              217
    432 #define KEY_CONNECT             218
    433 #define KEY_FINANCE             219     /* AL Checkbook/Finance */
    434 #define KEY_SPORT               220
    435 #define KEY_SHOP                221
    436 #define KEY_ALTERASE            222
    437 #define KEY_CANCEL              223     /* AC Cancel */
    438 #define KEY_BRIGHTNESSDOWN      224
    439 #define KEY_BRIGHTNESSUP        225
    440 #define KEY_MEDIA               226
    441 
    442 #define KEY_SWITCHVIDEOMODE     227     /* Cycle between available video
    443                                            outputs (Monitor/LCD/TV-out/etc) */
    444 #define KEY_KBDILLUMTOGGLE      228
    445 #define KEY_KBDILLUMDOWN        229
    446 #define KEY_KBDILLUMUP          230
    447 
    448 #define KEY_SEND                231     /* AC Send */
    449 #define KEY_REPLY               232     /* AC Reply */
    450 #define KEY_FORWARDMAIL         233     /* AC Forward Msg */
    451 #define KEY_SAVE                234     /* AC Save */
    452 #define KEY_DOCUMENTS           235
    453 
    454 #define KEY_BATTERY             236
    455 
    456 #define KEY_BLUETOOTH           237
    457 #define KEY_WLAN                238
    458 #define KEY_UWB                 239
    459 
    460 #define KEY_UNKNOWN             240
    461 
    462 #define KEY_VIDEO_NEXT          241     /* drive next video source */
    463 #define KEY_VIDEO_PREV          242     /* drive previous video source */
    464 #define KEY_BRIGHTNESS_CYCLE    243     /* brightness up, after max is min */
    465 #define KEY_BRIGHTNESS_AUTO     244     /* Set Auto Brightness: manual
    466                                           brightness control is off,
    467                                           rely on ambient */
    468 #define KEY_BRIGHTNESS_ZERO     KEY_BRIGHTNESS_AUTO
    #define KEY_DISPLAY_OFF         245     /* display device to off state */
    #define KEY_WWAN                246     /* Wireless WAN (LTE, UMTS, GSM, etc.) */
    #define KEY_WIMAX               KEY_WWAN
    #define KEY_RFKILL              247     /* Key that controls all radios */
    #define KEY_MICMUTE             248     /* Mute / unmute the microphone */
    展开全文
  • C语言 模拟键盘、鼠标事例

    万次阅读 2016-02-15 13:48:34
    本程序实现自动搜索功能,首先是使用 ShellExecuteA() 打开浏览器,然后用键盘输入 (调用search())keybd_event()进行输入,最后一个 keybd_event(0x0d, 0, 0, 0); 回车进行查询。 然后使用:clik()函数,先把鼠标...
    
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<Windows.h>
    /*
    本程序实现自动搜索功能,首先是使用 ShellExecuteA() 打开浏览器,然后用键盘输入 
    (调用search())keybd_event()进行输入,最后一个 keybd_event(0x0d, 0, 0, 0); 回车进行查询。
    然后使用:clik()函数,先把鼠标定位到(SetCursorPos(200,200);) 要查询的位置,
    再使用:mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0,0); 左键按下(即单击)完成查询工作。
    */
    void openIE()
    {	//异步打开浏览器
    	//参数1:指定父窗口、参数2:操作动作 譬如: open、runas、print、edit、explore、find
    	//参数3:指定要打开的文件或程序路径、 参数4:给要打开的程序的参数,如果要打开的是文件这里可以是NULL
    	//参数5:缺省目录、 参数6:打开选项(0:隐藏。1:用最近的大小和位置,激活。2:最小化。3:最大化,激活。4:用最近的大小、位置,但不激活。6:最小化,不激活。
    	ShellExecuteA(0, "open", "http://www.baidu.com", 0, 0, 1);
    }
    
    //鼠标点击
    void click()
    {
    	//该函数把光标移到屏幕的指定位置
    	SetCursorPos(200,250);
    	//鼠标单击
    	mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0,0); //左键按下
    	mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);  //左键松开
    }
    //使用键盘输入要查询的关键词。
    void search()
    {
    	//键盘输入
    	keybd_event('J', 0, 0, 0); //按下
    	keybd_event('J', 0, 2, 0); //松开
    	Sleep(500);
    	keybd_event('A', 0, 0, 0); //按下
    	keybd_event('A', 0, 2, 0); //松开
    	Sleep(500);
    	keybd_event('V', 0, 0, 0); //按下
    	keybd_event('V', 0, 2, 0); //松开
    	Sleep(500);
    	keybd_event('A', 0, 0, 0); //按下
    	keybd_event('A', 0, 2, 0); //松开
    	Sleep(500);
    
    	//回车
    	keybd_event(0x0d, 0, 0, 0);
    	keybd_event(0x0d, 0, 2, 0);
    	Sleep(500);
    }
    
    void main()
    {
    	//打开IE浏览器
    	openIE();
    	Sleep(3000);
    	//输入要查询的关键字
    	search();
    	Sleep(1000);
    	//设置位置点击查询
    	click();
    	Sleep(2000);
    
    	system("pause");
    }


    以上代码来源自尹成老师的视频。

    展开全文
  • C语言模拟笔记本.rar

    2020-04-22 09:16:49
    博主所发所有资源均为博主原创,载请注明出处。 C语言模拟xp系统的笔记本,实现了界面模拟,键盘模拟,能开机,能输入密码,能玩小游戏,还模拟了蓝屏,哈哈,
  • 首先来看一段代码先:int main(void)...当用户按下Enter键程序才可以使用用户输入的字符,用户输入的字符被收集并储存在一个被称为缓冲区的临时储存区。我们可以把它解释成为一个缓冲输入【缓冲分为两类】①完全缓冲I/

    首先来看一段代码先:

    int main(void)
    
    char ch;
    
    while((ch=getchar())!='#')
    putchar(ch);
    return 0;

    代码表示了当用户输入不是#这个字符时,程序将一直打印出来你写的字符。


    当用户按下Enter键程序才可以使用用户输入的字符,用户输入的字符被收集并储存在一个被称为缓冲区的临时储存区。


    我们可以把它解释成为一个缓冲输入【缓冲分为两类】①完全缓冲I/O;②行缓冲I/O;
    【二者的区别】①前者当缓冲区被填满时才刷新缓冲区,通常出现在文件输入中;
    ②后者指的是出现换行符刷新缓冲区,例如键盘输入通常是行缓冲输入,so在用户按下Enter键后才刷新缓冲区。


    注释:I/O 指的是输入输出函数!!!所有系统通用的标准的输入输出函数,移植性高。


    反之:无缓冲输入指的是当用户按下一个键就执行相应的指令,无论是不是有无缓冲输入都有其用武之地!


    上面的代码说道了,用户输入#字符将终止程序运行,结束键盘的输入,但它也是一个普通的字符,有时不可避免会使用到。


    【C的输入函数内置了文件结尾的检测器】

    现代的系统一般通过输入CTRL+Z来标记文件结尾/在C语言中,getchar()读取文件监测到文件结尾时将返回一个特殊的值,即EOF。scanf函数亦如此,EOF通常定义在stdio.h文件中【#define EOF (-1)】
    /注意这里的-1,不对应任何字符,它用来标记文件结尾/
    /这里关键理解EOF 是一个值,标记着检测到文件结尾/


    int ch;
    
    while((ch=getchar())!=EOF)
    
    putchar(ch);
    
    return 0;

    /getchar()函数实际返回值的类型是int,可以读取EOF字符,虽然可以返回赋给char类型变量,最好还是使用通用的形式,防止数据丢失!/

    /这段程序在我们按下 CTRL+Z 时才能终止…./
    /不用定义EOF,因为在stdio.h中已经定义过了/
    /而且EOF在stdio.h中用define预处理指令定义,可直接使用,不必假定EOF的值为多少/
    /在进行键盘输入时必须找出当前系统的要求,许多微型计算机把CTRL+Z识别为文件结尾信号/

    展开全文
  • 此外,需在结尾的下一行(就是要换行后再输入)才有效,否则程序无反应。 还有,程序会读取最后一个换行符(即为了使输入有效而键入的最后一个换行符)。 1.此为无效模拟 2.此为有效模拟

    Windows,DOS系统:使用 Ctrl + Z

    Unix,Linux系统: 使用Ctrl + D

    此外,需在结尾的下一行(就是要换行后再输入)才有效,否则程序无反应。

    还有,程序会读取最后一个换行符(即为了使输入有效而键入的最后一个换行符)。


    以下程序计算输入字符的个数


    1.此为无效模拟




    2.此为有效模拟





    展开全文
  • C语言 在程序中打开网页,模拟鼠标点击、键盘输入 一、简述  记--使用C语言 打开指定网页,并模拟鼠标点击、键盘输入。实现半自动填写账号密码,并登录网站(当然现在的大部分网站都有验证码,或有检测"非人...
  • C语言模拟

    2020-03-27 15:52:50
    C语言考纲模拟题 一维数组定义格式(在主函数(main())) 定义的同时初始化(第一种考察方式) int arr[5] = {1, 2, 3, 4, 5}; 从键盘读入(不用指针) int arr[10]; //定义长度为10的数组 for(int i = 0; i < 10; i++){...
  • c语言模拟实现的多级反馈队列算法,固定进程数,可以自己改写通过键盘输入创建进程数
  • C语言模拟试题6

    千次阅读 2014-12-30 15:20:17
    一、单项选择题(本题共10小题,每小题2分,满分20分) 1. 下列运算符中,结合方向为“自...2. 用以下语句从键盘接收两个整型值并赋值给整型变量a,b:scanf(“%d,%d”,&a,&b),则以下输入正确的是: A. 5,6(回车)
  • program:猜数字游戏、有序数组中查找数字、模拟密码输入键盘字符大小写转换 compiler:Visual Studio 2013 */ #define _CRT_SECURE_NO_WARNINGS 1 #include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;...
  • 利用C语言模拟简单的计算器,用户从键盘输入算术表达式,程序在屏幕上输出答案
  • C语言模拟实现职工信息管理系统

    千次阅读 2016-09-22 15:06:32
    代码实现如下:#include <stdio.h>//输入、输出指令 #include <malloc.h>//在内存中动态的分配size字节的存储区 #include <string.h>//字符串相关操作指令 #include <stdlib.h>//五种类型、一些宏和通用工具函数 #...
  • 2.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。 3.编写一个程序,可以一直接收键盘字符, 如果是小写...
  • 一在指定的文件内编写程序程序的功能是从键盘输入10个同学的成绩按降序输出成绩输入输出数据格式均为整型 按指定格式输入输出 例如: 输入63?72?56?98?66?83?68?40?95?78 输出排序结果为98?95?83?78?72?68?66?63?56?...
  • 在Windows上有的游戏,用模拟键盘会无效,但是真实键盘可以,难道游戏还能判断你是用的真键盘还是用代码模拟的键盘消息?
  • 3.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。 #define _CRT_SECURE_NO_WARNINGS 1 #include #...
  • C语言习题:(编译环境为:VS2013) 1.完成猜数字游戏。 2.写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找) 3.编写代码模拟三次密码输入的场景。最多能输入三次密码,密码...
  • 能够实现简谐振动的模拟;  简谐振动的振幅、频率以及相位由键盘输入; 能够实现动画效果。</p>
  • 1.设计一个密码锁,配置一个3x3的键盘矩阵模拟数字九宫格,额外还需设置一个功能按钮,还需配置4位数码管和一个led灯。 2.按下数字键可以让数码管依次显示数字,没有输入的数码管全部显示中间那一横(编号G),输入...
  • C语言程序设计模拟试卷二 一填空题每空 2 分共 30 分 设有变量说明语句 int x=1,y=2; 则执行下述 printf 语句的输出结果是 _1.000000_ _ printf%f\n,1.0+x/y; 2. 执行下述程序 #include <stdio.h> ... } 若从键盘输入 1

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 210
精华内容 84
关键字:

c语言模拟键盘输入

c语言 订阅