如何为Windows编写新的Alt + Tab任务切换器?

时间:2012-12-02 11:42:33

标签: windows winapi windows-7 msdn

我被告知,处理ALT + TAB输入的程序称为任务切换器。但我对库存提供的任务切换器不满意。

任何人都可以向我推动正确的方向,以便我知道如何自己编写一个并用新的替换旧的吗?

这不是我没有编程经验,我只是不知道从哪个开始这个特殊的。 :d

谢谢!

2 个答案:

答案 0 :(得分:1)

在Windows中编写替换切换器有三个基本要素(这些已在Windows 7下测试):

  1. 捕获Alt +标签:为此,我会使用SetWindowsHookExlow-level keyboard hookWH_KEYBOARD_LL)。

  2. 枚举您可以切换的窗口:两个选项是EnumWindows或UI自动化框架(托管代码可以使用System.Windows.Automation)。

  3. 执行切换:您可以使用SwitchToThisWindowSetForegroundWindow,但在任何一种情况下,您都需要在清单中设置uiAccess=true。这还需要您签署可执行文件并将其安装在Program Files中。 需要致电AttachThreadInput或执行其他此类诡计。

  4. 有关更全面的讨论,请参阅this blog post

答案 1 :(得分:0)

我们在此链接中回答了您的问题: How to focus on last activated program? 通过使用此代码代替那个代码,您可以拥有打开的窗口列表,

string name = GetWindowTextRaw((IntPtr)hwnd);
if (name.Length > 0)
{
     windowArray.Add(hwnd);
}

现在您可以使用以下代码在Windows之间切换:

SetForegroundWindow((IntPtr)windowArray.sth);