使用程序模拟键盘输入(VC/MFC)

Eddy 发布于2010-8-20 11:13:15 分类: 程序设计 已浏览loading 网友评论1条 我要评论

在按钮的消息响应函数中,实现设置或取消定时器,并设置按钮标题。代码如下:

void CDlgmfcDlg::OnInput()
{
 // TODO: Add your control notification handler code here
 static BOOL bChangeFlag=TRUE;
 if (bChangeFlag)
 {
  SetTimer(1,500,NULL);;//设置定时器
  bChangeFlag=bChangeFlag?FALSE:TRUE;
  GetDlgItem(1001)->SetWindowText("停止输入");//设置按钮标题
 }
 else
 {
  GetDlgItem(1001)->SetWindowText("模拟输入");;//设置按钮标题
  KillTimer(1);//取消定时器
  bChangeFlag=bChangeFlag?FALSE:TRUE;
 }
}

WM_TIMER消息响应函数,在函数中实现模拟按键操作。代码如下:

void CDlgmfcDlg::OnTimer(UINT nIDEvent)
{
 // TODO: Add your message handler code here and/or call default
 static int count=0;
 BYTE keyname[11]={72,69,76,76,79,32,87,79,82,76,68};
 if (nIDEvent==1)
 {
  m_ctlEdit.SetFocus();
  keybd_event(keyname[count],0,0,0);
  keybd_event(keyname[count],0,KEYEVENTF_KEYUP,0);
  count++;
  if (count==12)
  {
   m_ctlEdit.SetWindowText("");
   UpdateData(FALSE);
   count=0;
  }
 }
 CDialog::OnTimer(nIDEvent);
}

keybd_event函数:
The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.

Windows NT: This function has been superseded. Use SendInput instead.

VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // flags specifying various function options
DWORD dwExtraInfo // additional data associated with keystroke
);

已经有(1)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/527.html     欢迎订阅Eddy Blog

  1. 发表于2010-8-20 16:06:04

    纯属支持博主!VC MFC全部不懂

    Eddy 于 2010-8-20 18:27:05 回复
    Misdoubt

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言