您的位置首页百科知识

C++怎么发送某个按钮的消息

C++怎么发送某个按钮的消息

使用WINDOW API 里的SendMessage函数。

例如:

SendMessage(hwndTargetApplication, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

hwndTargetApplication:目标程序的句柄

WM_SYSCOMMAND:消息通知码

SC_MAXIMIZE:消息附加项

上面这个API是向某个目标程序发送一个窗体最大化指令。

这个也会被限制的,操作频繁有可能被腾讯封号哦

晕,你看一下MSDN啊,里面有参数介绍的。

每个键也有其键值,比如VK_UP(方向键上) VK_F1(F1键) 'a'(相当于按键A)

sendkeys (键名)

按下组合键Alt+N

PostMessage hwnd,WM_KEYDOWN,vbKeyAlt,0 '按下Alt

PostMessage hwnd,WM_KEYDOWN,vbKeyN,0 '按下N

'抬起组合键Alt+N

PostMessage hwnd,WM_KEYUP,vbKeyAlt,0 '抬起Alt

PostMessage hwnd,WM_KEYUP,vbKeyN,0 '抬起N

'按下F3

PostMessage hwnd,WM_KEYDOWN,vbKeyF3,0 '按F3

PostMessage hwnd,WM_KEYUP,vbKeyF3,0

SendMessage Platform SDK的函数原型似乎该是这样

LRESULT SendMessage(

HWND hWnd, // handle to destination window

UINT Msg, // message

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

);

而且,发送按键值一般用 WM_CHAR 捕获后在窗口过程函数中处理

个人见解^_^

hWnd1 = FindWindow(vbNullString, 1.txt - 记事本)

hWnd2 = FindWindowEx(hWnd1, 0, Edit, vbNullString)

keybd_event VK_MENU, 0, 0, 0

PostMessage hWnd2, WM_KEYDOWN, vbKeyN, 0

keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0

PostMessage hWnd2, WM_KEYDOWN, vbKeyF3, 0 '按下F3键

这样不知道符合楼主不?

如果对普通的窗口发送就直接sendkeys,如果对高级一点的窗口发就用KEYBOARD_EVENT这个API函数,如果对高级游戏窗口发送按键消息一般就要用到驱动级WINIO模拟按键了,不知道你想用哪种我给一个keyboard_event函数模拟键盘按键的代码吧通用部分声明:Private Declare Sub keybd_event Lib user32 (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 窗体部分,也就是按键实现代码:keybd_event vbKeyUp, 0, 0, 0 '按下↑键

keybd_event vbKeyUp, 0, 2, 0 '释放↑键 这里模拟按上下方向键你自己改一下就行了