怎样模拟键盘向别的程序发送alt+tab消息切换选项卡?

时间:2022-06-11 14:44:23
怎样模拟键盘向别的程序发送alt+tab消息切换选项卡?
最好有一些简单的代码说明。

10 个解决方案

#1


这么写试下。。模拟键盘消息。。

keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);

#2


keybd_event/SendInput();模拟按键

#3


引用 1 楼 hbxstone99 的回复:
这么写试下。。模拟键盘消息。。

C/C++ code
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), KEYEVENTF_KEYU……


写错了,应该是Ctrl+Tab,keydb_event这个是什么呢?它是怎么实现向别的程序发送消息的?

#4


Ctrl+Tab的话,把其中的VK_MENU改为VK_CONTROL就可以了。。

#5


引用 2 楼 visualeleven 的回复:
keybd_event/SendInput();模拟按键


这个函数好像只能实现模拟按键,但是不能向别的程序发送啊?

#6


引用 4 楼 hbxstone99 的回复:
Ctrl+Tab的话,把其中的VK_MENU改为VK_CONTROL就可以了。。


这个倒是能产生消息,但它怎么向别的程序发送这个消息啊?
用CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)这样子好像没啥用啊?我试了好像没反应,选项卡还是没变。

#7


可以试下发自定义消息,然后在接收端再调用这个好了。。

#8


引用 6 楼 masterluo 的回复:
用CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)这样子好像没啥用啊?我试了好像没反应,选项卡还是没变。

这么做,消息只能发给本进程,也就是本程序。
要发给其他程序必须先FindWindow(),找到目标程序的主窗口,在PostMessage。

#9


最主要是改建背后的动作,不是简单的按键动作了,呵呵。

#10


引用 8 楼 ronghaoyue 的回复:
引用 6 楼 masterluo 的回复:

用CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)这样子好像没啥用啊?我试了好像没反应,选项卡还是没变。

这么做,消息只能发给本进程,也就是本程序。
要发给其他程序必须先FindWindow(),找到目标程序的主窗口,在PostMessage。


CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)
我这么做发送消息后没有反应啊?高手能讲解怎么做么?
hwnd什么的都找到了,能给个PostMessage里怎么写么?

#1


这么写试下。。模拟键盘消息。。

keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);

#2


keybd_event/SendInput();模拟按键

#3


引用 1 楼 hbxstone99 的回复:
这么写试下。。模拟键盘消息。。

C/C++ code
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), KEYEVENTF_KEYU……


写错了,应该是Ctrl+Tab,keydb_event这个是什么呢?它是怎么实现向别的程序发送消息的?

#4


Ctrl+Tab的话,把其中的VK_MENU改为VK_CONTROL就可以了。。

#5


引用 2 楼 visualeleven 的回复:
keybd_event/SendInput();模拟按键


这个函数好像只能实现模拟按键,但是不能向别的程序发送啊?

#6


引用 4 楼 hbxstone99 的回复:
Ctrl+Tab的话,把其中的VK_MENU改为VK_CONTROL就可以了。。


这个倒是能产生消息,但它怎么向别的程序发送这个消息啊?
用CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)这样子好像没啥用啊?我试了好像没反应,选项卡还是没变。

#7


可以试下发自定义消息,然后在接收端再调用这个好了。。

#8


引用 6 楼 masterluo 的回复:
用CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)这样子好像没啥用啊?我试了好像没反应,选项卡还是没变。

这么做,消息只能发给本进程,也就是本程序。
要发给其他程序必须先FindWindow(),找到目标程序的主窗口,在PostMessage。

#9


最主要是改建背后的动作,不是简单的按键动作了,呵呵。

#10


引用 8 楼 ronghaoyue 的回复:
引用 6 楼 masterluo 的回复:

用CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)这样子好像没啥用啊?我试了好像没反应,选项卡还是没变。

这么做,消息只能发给本进程,也就是本程序。
要发给其他程序必须先FindWindow(),找到目标程序的主窗口,在PostMessage。


CWnd::FromHandle(hWnd)->PostMessage(WM_KEYUP, VK_TAB, 0)
我这么做发送消息后没有反应啊?高手能讲解怎么做么?
hwnd什么的都找到了,能给个PostMessage里怎么写么?