Всем привет. Вопрос собственно в том чтоб в любом окне что на переднем плане, извлекать текст который под курсором.Добавлено (21 Сентября 2020, 05:58)
---------------------------------------------
procedure TForm1.Timer1Timer(Sender: TObject);
begin
RecalcText;
Label1.Caption := g_pszText;
end;
private
{ Private declarations }
g_pszText: String;
g_pt: TPoint;
procedure RecalcText;
end;
[spoiler]
uses
OleAcc;
function AccessibleObjectFromPoint(ptScreen: TPoint; out ppacc: IAccessible; out pvarChild: Variant): HRESULT; stdcall; external 'oleacc.dll';
procedure TForm1.RecalcText;
var
pt: TPoint;
pacc: IAccessible;
vtChild: Variant;
bsName, bsValue: WideString;
begin
if GetCursorPos(pt) and ((pt.x <> g_pt.x) or (pt.y <> g_pt.y)) then
begin
g_pt := pt;
if (SUCCEEDED(AccessibleObjectFromPoint(pt, pacc, vtChild))) then
try
bsName := '';
bsValue := '';
pacc.get_accName(vtChild, bsName);
pacc.get_accValue(vtChild, bsValue);
g_pszText := 'Name: ' + bsName + #13#10'Value: ' + bsValue;
finally
VarClear(vtChild);
pacc := nil;
end;
end;
end;
на подобие этого можно прикрутить к HB?