> そのテキストの中に「互換パック」と「ダウンロード」という文字列が存在したら,
> 問題のダイアログと決定します.
このテキストの取得ですが,
当サイトのサンプルでは,ほとんど次のコードを使用しています.
これは,主に,ウィンドウのタイトル(キャプション) 文字列の取得としています.
function GetWindowTitleStr(hWindow: HWND): String;
var
Buffer : array[0..MAX_PATH - 1] of Char;
Len : Integer;
begin
FillChar(Buffer, SizeOf(Buffer), #0);
Len := GetWindowText(hWindow, Buffer, Length(Buffer));
if Len > 0 then Result := Buffer else Result := '';
end;
今回の場合は,これでは長い文字列の取得に失敗する可能性があります.
そこで,次のコードを使用しています.
(実際には上のコードでも十分でしたが)
function GetWindowTitleStr(hWindow: HWND): String;
var
Len : Integer;
Buffer : PChar;
begin
Result := '';
Len := GetWindowTextLength(hWindow);
Buffer := StrAlloc(Len + 1); //SetLength を使用したサンプルもある
try
Len := GetWindowText(hWindow, Buffer, StrBufSize(Buffer));
SetString(Result, Buffer, Len + 1); //実際には代入互換性がある
finally
StrDispose(Buffer);
end;
end;
こういうことも,実際にやってみると気づくわけです.
|