Вниз
Скачать: CL | DM;

Уважаемые Мастера! Как   Найти похожие ветки 

← →
Outlier   (2002-10-03 18:41) [0]

Откройте секрет :-) ПЛЗ(!), ну никак не выходит ->

Есть Эксплорер (или Нетскп,Опера), в нем страница, в странице -
выделен некий ТЕКСТ, как этот текст извлечь???

Разметка, стиль и пр. не интерисует, только содержание...

Всем зарание сенкс ;-)

П.С. Любителей OCR - просьба не беспокоится...
ищется решение на уровне WinAPI,Hooks,Msg(s),etc...


← →
int64 ©   (2002-10-03 23:47) [1]

Из VCL здесь только кнопка и Мемо (для наглядности).

uses ..., MSHTML;

type
TObjectFromLResult = function(LRESULT: lResult; const IID: TGUID; WPARAM: wParam; out pObject): HRESULT; stdcall;

function GetSelTextFromHWND_IE(WHandle: HWND; var Text: string): HRESULT;
var
hInst, Wnd: HWND;
lRes: Cardinal;
MSG: Integer;
ObjectFromLresult: TObjectFromLresult;
Doc: IHTMLDocument2;
begin
hInst := LoadLibrary("Oleacc.dll");
@ObjectFromLresult := GetProcAddress(hInst, "ObjectFromLresult");
if @ObjectFromLresult <> nil then begin
try
Wnd := FindWindowEX(WHandle, 0, "Shell DocObject View", nil);
Wnd := FindWindowEX(Wnd, 0, "Internet Explorer_Server", nil);
MSG := RegisterWindowMessage("WM_HTML_GETOBJECT");
SendMessageTimeOut(Wnd, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, Doc);
if assigned(Doc) then
Text:= (Doc.selection.createRange as IHTMLTxtRange).text;
finally
FreeLibrary(hInst);
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: HWND;
Text: string;
begin
Wnd := FindWindow("IEFrame", nil);
if Wnd = 0 then
begin
showmessage("No Running instance of Internet Explorer");
exit;
end;
if GetSelTextFromHWND_IE(Wnd, Text)=S_OK then
Memo1.Text:= Text;
end;


Данный пример получает выделенный текст из IE.
Для других браузеров, имхо достаточно будет вызовов нескольких API функций (типа GetWindowText). Во всяком случае, универсального решения для всех сразу браузеров не существует.


← →
Outlier   (2002-10-06 11:04) [2]

Спасибо!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
3-45782
Hlor
2002-10-26 19:17
2002.11.14
Есть вопрос


6-46023
snowman
2002-09-13 16:02
2002.11.14
Как узнать имя под которым расшарена директория?


1-45902
^Sanya
2002-11-05 15:31
2002.11.14
Как в приведённом коде...


3-45676
Serginio
2002-10-27 14:08
2002.11.14
Ктонибудь сравнивал ado и dbexpress при работе с MS SQL


1-45919
NONAME00
2002-11-02 23:53
2002.11.14
HLP




   Наверх