正如标题所述,我试图检测另一个应用程序的标题何时更改并仅在标题与上次检查时不同时执行特定操作。我不确定它是否有帮助,但这是我用来获取其他应用程序标题的代码。
function GetWinCaption: string;
var
Handle: THandle;
Len: LongInt;
Title: string;
begin
Result := '';
Handle := FindWindow('Classname_Goes_Here', nil);
if Handle <> 0 then
begin
Len := GetWindowTextLength(Handle) + 1;
SetLength(Title, Len);
GetWindowText(Handle, PChar(Title), Len);
GetWinCaption := TrimRight(Title);
end;
end;
上面的代码可以正常工作以获取标题,但是我很难绕过我需要编写的代码来实际执行检查以查看标题是否已更改。
这是我一直在进行检查的代码,但我不确定这是做这个的最好方法,并且可以使用在这方面有更多经验的人的建议。
var
CurrCaption, PrevCaption : string;
...
...
if (CurrCaption = '') or (CurrCaption = PrevCaption) then
begin
CurrCaption := GetWinCaption;
end
else
begin
PrevCaption := CurrCaption ;
end;
// and then later on I do the comparison like this.
if CurrCaption = PrevCaption then
begin
ShowMessage('not changed');
end
else
begin
ShowMessage('changed');
end;