5

Windowsボックスのすべてのウィンドウを一覧表示するものを一緒にハッキングしていますが、(唯一の)ウィンドウの1つに対して、GetWindowRectが非常に負のy座標を持つ長方形を返しているようです。

考えられる問題:(1)複数のモニターがありますが、(1a)y座標が-24000のオーダーで非常に負であり、(1b)両方のモニターの他のウィンドウがこの効果を示していません。(2)VirtuaWin仮想デスクトップツールを使用していますが、(2a)複数の異なる仮想デスクトップと両方のモニターにある他のウィンドウではこの効果が見られません。(3)pywin32モジュールを使用して、Pythonでこれらすべてを実行しています。

問題のウィンドウはWindowsエクスプローラーウィンドウです。異常なサイズや配置ではありません(少なくとも目で見て)。現在アクティブな仮想デスクトップのエクスプローラーウィンドウにはこの動作は表示されませんが、他の仮想デスクトップにエクスプローラーウィンドウを作成すると、同じ予期しない効果が表示されます。

私はWindowsXPとバージョン4.3のVirtuaWinを実行しています。

どうしたの?

4

1 に答える 1

3

つまり、Pythonや複数のモニターとは何の関係もないことがわかります。VirtuaWinには、現在ではない仮想デスクトップでウィンドウを非表示にする2つの異なる方法があります。それらの1つは、ウィンドウを非表示にすることです。もう1つは、座標をいじって画面外に移動することです。

座標マングリング手法は、Windowsエクスプローラーウィンドウ(および、一部のバージョンのInternet Explorerのウィンドウ)にも使用されます。これらのアプリケーションでは、ウィンドウを非表示にしてから新しいウィンドウを作成すると、以前に非表示にしたウィンドウが閉じられるためです。

したがって、2.6以降のバージョンのVirtuaWinは、これらのアプリケーションに属するウィンドウを非表示にするのではなく、画面外に移動します。

その結果、これらのウィンドウのy座標は、「真の」値から25000が差し引かれます。

于 2011-02-24T16:08:05.810 に答える