使用keybd_event模拟键盘输入

转载 2012年03月28日 10:05:09
#include <windows.h>
BOOL CALLBACK GetChild(HWND hWnd,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    HWND hWnd=::FindWindow("notepad",NULL);//获得记事本窗口句柄
    if(hWnd)//如果获得成功
    {
        ::ShowWindow(hWnd,SW_SHOW);//显示记事本窗口
        if(::SetForegroundWindow(hWnd))//窗口置顶
        {
            ::EnumChildWindows(hWnd,GetChild,0);//枚举记事本中的子窗口
        }
        return 0;
    }
    else
    {
        MessageBox(NULL,"no handle","error",MB_OK);
        return 0;
    }
}
BOOL CALLBACK GetChild(HWND hWnd,LPARAM lParam)//回调函数
{
    char temp1[256];
    ::GetClassName(hWnd,temp1,255);//获得子窗口的类名
    if(!::strcmp(temp1,"Edit"))//判断子窗口类名是否为edit
    {
        ::keybd_event(VK_CONTROL,0,0,0);//按下ctrl
        ::keybd_event('V',0,0,0);//按下c
        ::keybd_event('V',0,2,0);//放开C
        ::keybd_event(VK_CONTROL,0,2,0);//放开ctrl
        return 0;
    }
    return true;
}
程序的功能是在记事本程序中模拟按下ctrl+c,来粘贴剪贴板中的内容,程序首先将记事本窗口置顶,然后按下复制按键。
逆向了一下keybd_event函数,发现他其实是调用的user32.dll中的SendInput函数,而SendInput函数直接调用系统内核,到达系统内核以后OD便无法继续跟踪了。所以,是否keybd_event函数模拟按键足够底层了呢?如果他不能模拟就只能求助于驱动级的模拟了。

利用键盘事件keybd_event(Win32 API)模拟键盘按键

云平台第三次重置后,通过FTP传输文件的途径失效,因此需要其他方法向自己的云桌面发送代码。无论云桌面怎么设置,都必须支持接收键盘和鼠标的输入,因此如果可以模拟键盘输入,就可以实现发送代码的功能。 Wi...
  • qq_21153991
  • qq_21153991
  • 2016年07月01日 11:09
  • 6675

VC++模拟键盘输入(keybd_event() 、 PostMessage() /SendMessage()、SendInput())详解

详细介绍C++模拟键盘输入的三种方法,而且还带实例:keybd_event() 、 PostMessage() /SendMessage()、SendInput(),...
  • Entre_
  • Entre_
  • 2015年06月10日 17:24
  • 5194

模拟键盘输入 : SendMessage, keybd_event, PostKeybdMessage

转自 目的   最近项目要求在Windows CE下模拟键盘输入,上网搜索了一下,发现有3个API可以用:SendMessage,keybd_event,PostKeybdMe...
  • wdjhzw
  • wdjhzw
  • 2014年08月15日 16:01
  • 2131

keybd_event模拟键盘输入

win32api.keybd_event 模拟键盘输入
  • qq_29360495
  • qq_29360495
  • 2016年11月02日 11:10
  • 226

C# 使用keybd_event()函数模拟键盘按键

今天碰到了一个需求,在一体机上按F10关闭一个应用。但一体机上如果不带键盘的话。很难按出F10.所以我必须用软件的方式模拟按下F10.于是查阅各种资料。总结出,模拟按键操作常用的方式有俩种: 使用wi...
  • u014434080
  • u014434080
  • 2016年03月09日 19:52
  • 5037

C#模拟PrtScn实现截屏预备知识--keybd_event使用方法

Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM...
  • wangshubo1989
  • wangshubo1989
  • 2015年08月20日 09:55
  • 2304

利用Keybd_event()函数模拟键盘输入

一下来自VC++驿站:点击打开VC++驿站链接 1 代码实现: HWND hWnd=::FindWindow(_T("Notepad"),_T("新建文本文档.txt - 记事本")); ...
  • u012372584
  • u012372584
  • 2016年12月23日 13:50
  • 1410

模拟键盘、鼠标输入---玩转keybd_event

在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂的,或重复性的操作,我们能否通过编制程序来代替手工输入,...
  • shuixin536
  • shuixin536
  • 2012年09月14日 14:41
  • 1164

XP、Win7模拟发送ctrl+alt+delete组合键

转载请标明是引用于 http://blog.csdn.net/chenyujing1234  欢迎大家拍砖   在我们编写远程控制软件的时候,我们会发现要想解锁se...
  • kelsel
  • kelsel
  • 2016年10月08日 17:05
  • 968

模拟键盘操作发送【字符串】

void SendKey(CString str) { DWORD sc,shift; unsigned char vkey; char a; ...
  • tody_guo
  • tody_guo
  • 2012年10月06日 22:39
  • 1099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用keybd_event模拟键盘输入
举报原因:
原因补充:

(最多只允许输入30个字)