我对需要在触摸屏设备上运行的项目有所了解。我们的想法是在屏幕上有一个按钮,当按下按钮在打开的项目之间切换时。那么ALT + TAB键盘快捷键究竟是如何工作的。 我知道C ++中的SendKeys :: Send()事件可以模拟按键,但是当我尝试发送ALT + TAB时它似乎对我不起作用。那么有没有一种方法可以通过C ++让窗口显示所有打开的程序(就像按下ALT TAB一样)?
PS该项目是一个Windows应用程序! Windows 7即将开始,但希望以后可以与更多的Windows系统兼容。
答案 0 :(得分:3)
自从您提到SendKeys以来假设C ++ / CLI。 SendKeys无法可靠地工作,因为它释放了键,使Alt-Tab窗口消失。您想要使用SendInput(),并为Alt键发送keydown,为Tab键发送keydown + up。这段代码效果很好:
#include <windows.h>
#pragma comment(lib, "user32.lib")
...
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
INPUT input = {INPUT_KEYBOARD};
input.ki.wVk = (WORD)Keys::Menu;
UINT cnt = SendInput(1, &input, sizeof(input));
input.ki.wVk = (WORD)Keys::Tab;
if (cnt == 1) cnt = SendInput(1, &input, sizeof(input));
input.ki.dwFlags = KEYEVENTF_KEYUP;
if (cnt == 1) cnt = SendInput(1, &input, sizeof(input));
if (cnt != 1) throw gcnew System::ComponentModel::Win32Exception;
}