以前,我问过这个关于将用户返回到他们正在使用的上一个窗口的问题,但我找到了解决方案,但这又产生了另一个问题。确定前一个窗口的函数有时会起作用(如果发生了一组我无法随意重新创建的事件,而是随机发生)。在某些时候,它会退回 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 是否彼此接近而不是相等。