查找TaskBar的IntPtr

时间:2013-04-17 01:10:12

标签: c# intptr taskbar

以前,我问this question关于将用户返回到他们正在使用的上一个窗口,但我找到了解决方案,但它又造成了另一个问题。确定前一个窗口的函数有时会起作用(如果发生某些事件,我无法随意重新创建,但会随机发生)。在某些时候它会回到2个窗口,有时候会有1个窗口。这样做是因为任务栏首先处于阻塞状态,然后是窗口。

所以,为了解决这个问题,我已经确定我应该继续浏览以前的窗口,直到我到达一个不是任务栏的窗口,但是,我不知道如何确定任务栏的IntPtr。

我试过了:

IntPtr taskBarWnd = FindWindow("Shell_TrayWnd", null);

但它似乎不起作用。如果我拨打MessageBox.Show(taskBarWnd.ToInt64().ToString()),我会收到131258,但是当我这样做时:

IntPtr thisWnd = GetForegroundWindow();
IntPtr lastWnd = GetWindow(thisWnd, 2);

它正在引用任务栏,但是当我调用上面相同的MessageBox函数时,它会返回131260(如果图标位于隐藏图标区域内,则返回65774)。

有没有人知道我还能做些什么来确定我计算的lastWnd是否为任务栏?我宁愿不要检查IntPtr是否彼此接近而不是相等。

1 个答案:

答案 0 :(得分:0)

我现在无法检查,因为这是我的iPad,但我非常确定任务栏窗口都使用自定义窗口类,因此您应该可以调用GetClassName并从中找出你的句柄所指的结果。