3

アプリを起動し、GetForegroundWindow() の呼び出しによってアプリが起動されたことを確認するテストがあります。テストは、通常はリモート デスクトップ経由でアクセスするリモート マシンで実行されます。マシンに対して rdp セッションを開くと、テストは完了し、すべて問題ありません。ただし、リモート デスクトップを閉じると、GetForegroundWindow が常に Null を返すため、テストは失敗します。切断後のアクティブなデスクトップがまだ「デフォルト」であることを確認したので、この問題が発生していないことは確かです。これを引き起こしている可能性のあるアイデアはありますか?

前もって感謝します

4

2 に答える 2

0

GetForegroundWindow が返されると仮定しています。返された HWND が対象のアプリからのものであり、他のウィンドウからのものではないことを検証する方法があります。

いずれにせよ、EnumWindows を使用して画面上のすべてのウィンドウを取得します。探しているアプリに一致する HWND を見つけます。

HWND を検証する方法がない場合は、アプリを起動する前に EnumWindows を呼び出して、画面上のウィンドウの総数を取得します。次に、自動化スクリプトを介してアプリを起動します。カウントが 1 増加するまで、EnumWindows を介してウィンドウ カウントをポーリングします。

于 2009-09-20T03:28:14.650 に答える
0

リモート デスクトップが仮想マシンの場合は、tscon コマンドを使用できます。

tscon 1 /dest:consoleここで、「1」はアクティブなセッションの ID です。

このコマンドは RDP を切断しますが、セッションをコンソールに送信します。ウィンドウをキャッチしたり、スクリーンショットを撮ったりすることができます...

于 2015-03-25T13:22:50.223 に答える