0

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

4

1 回答 1

0

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

于 2013-04-17T05:32:12.023 回答