c++自动按键代码

2024-12-23 16:27:42
推荐回答(4个)
回答1:

说实在的除了你要求自动按键 以外 别的不知道在说啥 尤其是问题补充让我不能理解 0 0

BOOL SimKeyboardPress(UINT vkCode, UINT sCode=-1, BOOL bExtend=false) //模拟键盘按下
{
if(sCode == -1)
sCode = MapVirtualKey( vkCode, 0); //map virtual keybo to scan code
DWORD dwFlage = 0;
if(bExtend)
dwFlage |= KEYEVENTF_EXTENDEDKEY;
keybd_event( vkCode, sCode, dwFlage, 0 );// Simulate a key press
return (true);
}

BOOL SimKeyboardRelease(UINT vkCode, UINT sCode=-1, BOOL bExtend=false)//模拟键盘抬起
{
if(sCode == -1)
sCode = MapVirtualKey( vkCode, 0); //map virtual keybo to scan code
DWORD dwFlage = KEYEVENTF_KEYUP;
if(bExtend)
dwFlage |= KEYEVENTF_EXTENDEDKEY;

keybd_event( vkCode, sCode, dwFlage, 0 );// Simulate a key up
return (true);
}

BOOL SimKeyboardClick(UINT vkCode, UINT sCode=-1, BOOL bExtend=false)//模拟敲击键盘
{
return SimKeyboardPress(vkCode, sCode, bExtend)
&& SimKeyboardRelease(vkCode, sCode, bExtend);
}
void Getkey(const PBYTE str)
{
UINT showkey;
if(NULL == str )
return ;
for(int i=0;i<(int)strlen((PCHAR )str);++i)
{
if((str[i]>='a' )&&(str[i]<='z'))
{
showkey = str[i]-'a'+'A';
}
else
{
showkey =str[i];
}
SimKeyboardClick(showkey);
Sleep(70);
}

}
Getkey((PBYTE)"hello world ");//演示

回答2:

kbdEvent
mouseEvent两个函数可以触发键盘点击和鼠标点击
SendMessage可以对任意窗口传递WM_LBUTTONDOWN等鼠标键盘事件
SetCursorPos可以设置鼠标的位置
FindWindow可以找到某些特征下的窗口,包括窗口里的控件

GetWindowRect可以得到窗口及控件的位置

于是你可以用这些功能完成找到窗口-控件-位置-调整鼠标到控件-触发鼠标点击-触发键盘点击

还可以使用WindowStation调整窗口站,SetDesktop设置桌面,将程序运行在隐藏桌面

比如一键自动安装功能,就是运营人员根据操作方法写的按键脚本

回答3:

keybd_event('A', 0, 0, 0); //按下A键
keybd_event('A', 0, 2, 0); //放开A键
mouse_event(2, 0, 0, 0, 0); //按下鼠标左键
mouse_event(4, 0, 0, 0, 0); //松开鼠标左键

回答4:

使用全局钩子
===============================================
//main.cpp
#include
#include

#define _WIN32_WINNT 0x0500 //确保SetWindowsHookEx的第一个参数可用WH_KEYBOARD_LL
//或自已定义: “#define WH_KEYBOARD_LL 13”

HHOOK MyHook; //接收由SetWindowsHookEx返回的旧的钩子

//回调函数声明,为了尽早见到亲切的主函数,将回调函数的定义写在最后面
int CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);

//主函数
int main()
{
//安装钩子
MyHook = SetWindowsHookEx( WH_KEYBOARD_LL,
(HOOKPROC)&KeyboardProc, //回调函数地址
GetModuleHandle(NULL),
NULL);

MSG msg;
while (GetMessage (&msg, NULL, 0, 0)) //消息循环
{
TranslateMessage (&msg);
DispatchMessage (&msg);
};

UnhookWindowsHookEx (MyHook);
return 0;
}

//回调函数,用于处理截获的按键消息
int CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
printf("%c ", wParam); //输出按键信息,注意这里按下和弹起都会输出

return CallNextHookEx(MyHook,code,wParam,lParam); //将消息还给钩子链,不要影响别人
}
==============================================