以前,我问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是否彼此接近而不是相等。