|
分類:[Delphi]
Delphi5
Windows2000
対象ウィンドウの再描画完了を検知する方法を教えて下さい。
画面のキャプチャツールを作成しています。
指定した文字列でEnumWindowsのウィンドウテキストをあいまい検索して、
キャプチャしたいウィンドウをアクティブにしてからBitBltしていますが、
タイミングによって、再描画が完了する前の画面をキャプチャしてしまいます。
対象ウィンドウをアクティブにするコードです。
*---
var
h:HWND; //キャプチャ対象ウィンドウハンドル
begin
h := FindWindow(nil, PChar('電卓'));
if IsIconic(h) then
begin
SendMessage(h, WM_SYSCOMMAND, WPARAM(SC_レストア and $FFF0), 0);
end else begin
SetForegroundWindow(h);
end;
Application.ProcessMessages;
WaitForInputIdle(h, INFINITE); //効果がないっぽい
Sleep(1000); //苦肉のSleep
end;
---*
今は苦肉の回避策でSleepしていますが、確実な方法がありそうな気もしています。
よろしくお願い致します。
|