デスクトップにフォアグラウンド ウィンドウがあるかどうかを判断する方法はありますか?
これは機能しますが、正しくないようですか?デスクトップ ハンドルにフォアグラウンド ウィンドウがない場合、328992 が返されます。
Handle := GetForegroundWindow;
if Handle = 328992 then
begin
MessageBox(0, 'There is no active window.', 'No Active Window', MB_ICONWARNING or MB_OK);
exit;
end;
これを達成するための最良の方法は何ですか?デルファイ 2010
ファローアップ:
iDesktopWindow := GetDesktopWindow;
iShellWindow := GetShellWindow;
iForegroundWindow := GetForegroundWindow;
ShowMessage('DesktopWindow: ' + IntToStr(iDesktopWindow));
ShowMessage('ShellWindow: ' + IntToStr(iShellWindow));
ShowMessage('ForegroundWindow: ' + IntToStr(iForegroundWindow));
DesktopWindow は 65552 を返します ShellWindow は 65864 を返します ForegroundWindow は 65724 を返します
以前の編集では、アプリが実行されるたびに ForegroundWindow の異なる値が表示されましたが、値を取得する前にアプリケーションを最小化できませんでした。これで、毎回 ForegroundWindow の一貫した値 65724 を取得しています。この場合、アクティブなウィンドウはありません...デスクトップと最小化されたウィンドウだけです。