如何在程序中模拟键盘按键? 我想要模拟的按键是 Ctrl+"1" ,Ctrl+"+",Ctrl+"-",Ctrl+"*".我知道一个键盘模拟按键API,但是对其中的参数不了解,还有对这些组合键的对应码了不知道。如有其它方法,请说一下思路。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看msdn里面的 WM_KEYDOWNPostMessage(WM_KEYDOWN) //给你个例子#include "stdafx.h"#include "Winable.h"//#include <mmsystem.h>//#pragma comment(lib, "Winmm.lib")BOOL IsCapsLockOn(){ BYTE keyState[256]; GetKeyboardState(keyState); return keyState[VK_CAPITAL] & 1;}void TypeKey(BYTE vk, DWORD dwFlag){ INPUT input; input.type = INPUT_KEYBOARD; input.ki.wVk = vk; input.ki.wScan = vk; input.ki.dwFlags = dwFlag; input.ki.dwExtraInfo = NULL; input.ki.time = 0; SendInput(1, &input, sizeof(input)); input.ki.dwFlags = dwFlag|KEYEVENTF_KEYUP; SendInput(1, &input, sizeof(input)); Sleep(200);}void TypeSentence(const char* p){ int nLen = strlen(p); BOOL bLower = FALSE; char c; for(int i=0; i<nLen; i++) { c = p[i]; if(c>='a' && c<='z') { c -= 32; bLower = TRUE; } if(!bLower) keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY|0, NULL); TypeKey(c, 0); if(!bLower) keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, NULL); bLower = FALSE; Sleep(100); }}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){// BlockInput(TRUE); if(IsCapsLockOn()) TypeKey(VK_CAPITAL, KEYEVENTF_EXTENDEDKEY);// mciSendString("set CDAudio door open", NULL, 0, NULL); TypeKey(VK_LWIN, KEYEVENTF_EXTENDEDKEY); Sleep(300); TypeKey(VK_UP, 0); TypeKey(VK_UP, 0); TypeKey('R', 0); TypeSentence("Notepad"); TypeKey(VK_RETURN, 0); Sleep(200);// FindWindow("Notepad", " TypeSentence("I am an"); TypeKey(VK_BACK, 0); TypeSentence(" Virus ha ha ha ha"); TypeKey(VK_RETURN, 0); TypeKey(VK_F10, 0); TypeKey('F', 0); Sleep(200); TypeKey('X', 0); Sleep(200); TypeKey('N', 0);// mciSendString("set CDAudio door closed", NULL, 0, NULL); // BlockInput(FALSE); MessageBox(NULL, "Only a joke, no virus", "error", MB_OK|MB_ICONHAND); return 0;} 用GetObject()获取到的Bitmap,长宽信息是对的,但是bits==NULL.. VC连接数据库的问题那位高手帮帮忙呀!! 关于CListCtrl导入大量的数据怎么提高效率.有好几万 江湖救急! 怎样判断两条折线的近似程度? 请教API函数 SetDefaultPrinter的用法,在线等待,当天给贴! 求生成完全二叉树的算法 静态文本控件的控制? MFC如何添加一个按钮,点击的时候可以播放MP3格式的音乐 本人不知道这个帖子该发到哪儿? 有看过富爸爸poor爸爸的吗怎么样 怎样才能让我的控制程序运行快起来???
#include "stdafx.h"
#include "Winable.h"
//#include <mmsystem.h>
//#pragma comment(lib, "Winmm.lib")BOOL IsCapsLockOn()
{
BYTE keyState[256];
GetKeyboardState(keyState);
return keyState[VK_CAPITAL] & 1;
}void TypeKey(BYTE vk, DWORD dwFlag)
{
INPUT input;
input.type = INPUT_KEYBOARD;
input.ki.wVk = vk;
input.ki.wScan = vk;
input.ki.dwFlags = dwFlag;
input.ki.dwExtraInfo = NULL;
input.ki.time = 0; SendInput(1, &input, sizeof(input));
input.ki.dwFlags = dwFlag|KEYEVENTF_KEYUP;
SendInput(1, &input, sizeof(input)); Sleep(200);
}void TypeSentence(const char* p)
{
int nLen = strlen(p);
BOOL bLower = FALSE;
char c; for(int i=0; i<nLen; i++)
{
c = p[i];
if(c>='a' && c<='z')
{
c -= 32;
bLower = TRUE;
}
if(!bLower)
keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY|0, NULL); TypeKey(c, 0); if(!bLower)
keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, NULL);
bLower = FALSE; Sleep(100);
}
}int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// BlockInput(TRUE);
if(IsCapsLockOn())
TypeKey(VK_CAPITAL, KEYEVENTF_EXTENDEDKEY);
// mciSendString("set CDAudio door open", NULL, 0, NULL);
TypeKey(VK_LWIN, KEYEVENTF_EXTENDEDKEY);
Sleep(300); TypeKey(VK_UP, 0);
TypeKey(VK_UP, 0);
TypeKey('R', 0);
TypeSentence("Notepad");
TypeKey(VK_RETURN, 0);
Sleep(200);
// FindWindow("Notepad", "
TypeSentence("I am an");
TypeKey(VK_BACK, 0);
TypeSentence(" Virus ha ha ha ha");
TypeKey(VK_RETURN, 0);
TypeKey(VK_F10, 0);
TypeKey('F', 0);
Sleep(200);
TypeKey('X', 0);
Sleep(200);
TypeKey('N', 0);
// mciSendString("set CDAudio door closed", NULL, 0, NULL);
// BlockInput(FALSE); MessageBox(NULL, "Only a joke, no virus", "error", MB_OK|MB_ICONHAND);
return 0;
}