1

我有一个需要在触摸屏设备上运行的项目的想法。这个想法是在屏幕上有一个按钮,当按下它时在打开的项目之间切换。那么 ALT + TAB 键盘快捷键是如何工作的。我知道 C++ 中的 SendKeys::Send() 事件可以模拟按键,但是当我尝试发送 ALT + TAB 时它似乎对我不起作用。那么有没有一种方法可以让窗口通过 C++ 显示所有打开的程序(就像按下 ALT TAB 时一样)?

PS该项目是一个Windows应用程序!Windows 7 开始,但希望以后它可以与更多的 Windows 系统兼容。

4

1 回答 1

3

假设 C++/CLI,因为您提到了 SendKeys。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;
    }
于 2011-11-14T17:37:05.523 回答