문제

화면에서 텍스트를 얻을 수 있도록 일부 Win OS API 호출이 있습니다.

스냅 샷을 얻은 다음 OCR을 수행하는 것이 아니라 API를 통해

아이디어는 사용자가 가리키고 클릭하는 마우스 아래에있는 텍스트를 얻는 것입니다.

이것이 바빌론과 같은 도구입니다 (http://www.babylon.com) 및 1 클릭 답변 (http://www.answers.com/main/download_answers_win.jsp)) 그리고 많은 사람들이 일합니다.

누군가 나를이 기능을 얻을 수있는 올바른 방향을 가리킬 수 있습니까?

도움이 되었습니까?

해결책

텍스트를 얻는 직접적인 방법은 없습니다. 응용 프로그램은 텍스트를 Zillion 다른 방식으로 렌더링 할 수 있으며 (Windows API가 그 중 하나 일 것), 렌더링 된 후에는 픽셀의 무리 일뿐입니다.

그러나 시도 할 수있는 방법은 마우스 바로 아래에 창을 찾아서 텍스트를 얻는 것입니다. 이것은 대부분의 표준 Windows 컨트롤 (레이블, 텍스트 상자 등)에서는 인터넷 브라우저에서 작동하지 않습니다.

나는 당신이 할 수있는 최선의 방법은 당신의 응용 프로그램이 위에서 설명한 방식으로 가능한 많은 다른 (공통) 컨트롤을 지원하도록 당신의 응용 프로그램을 만드는 것입니다.

다른 팁

GetWindowText API로 모든 창의 텍스트를 얻을 수 있습니다. 마우스 위치는 GetCursorpos API에서 찾을 수 있습니다.

델파이에서는이 기능을 사용할 수 있습니다 (아래의 kudos to Peter)

Function ChildWindowUnderCursor: HWND;
Var
  hw, lasthw: HWND;
  pt, clientpt: TPoint;
Begin
  Result := 0;
  GetCursorPos( pt );
  // find top-level window under cursor
  hw := WindowFromPoint( pt );
  If hw = 0 Then Exit;

  // look for child windows in the window recursively
  // until we find no new windows
  Repeat
    lasthw := hw;
    clientpt := Pt;
    Windows.ScreenToClient( lasthw, clientpt );
    // Use ChildwindowfromPoint if app needs to run on NT 3.51!
    hw := ChildwindowFromPointEx( lasthw, clientpt, CWP_SKIPINVISIBLE );
  Until hw = lasthw;
  Result := hw;
End;

문안 인사,
Lieven

Windows에는 블라인드 용 스크린 리더와 같은 접근성 도구를위한 API가 있습니다. (최신 버전은 UI 자동화 및 테스트와 같은 다른 목적으로도 사용됩니다.) 표준 Windows 컨트롤을 사용하지 않고 자체 컨텐츠를 렌더링하는 대부분의 브라우저에서도 많은 응용 프로그램에서 작동합니다. 모든 응용 프로그램에서 작동하지는 않지만 대부분의 경우 마우스 아래의 텍스트를 파악하는 데 사용할 수 있습니다.

현재 API를 Windows Automation API. 일반적 으로이 작업을 수행하는 방법을 설명하는 것은 스택 오버 플로우 답변의 범위를 벗어나므로 문서에 대한 링크를 제공했습니다.

이 질문이 처음 게시되었을 때 널리 사용 가능한 구형 API를 Microsoft Active Accessibility API. 현대 API와 마찬가지로 여기의 범위는 여기에서 자세히 설명하기에는 너무 넓습니다.

두 API에 대한 문서는 스크린 리더와 같은 접근성 도구를 구축하는 개발자와 접근성 도구와 호환하려는 앱을 작성하는 개발자 모두에게 작성되었습니다.

기본 아이디어는 접근성 도구가 대상 응용 프로그램 창에서 제공하는 COM 인터페이스를 가져오고 해당 인터페이스를 사용하여 컨트롤과 텍스트를 파악하고 논리적 및 공간적으로 어떻게 관련되는지를 알아낼 수 있습니다. 표준 Windows 컨트롤로 구성된 응용 프로그램은 대부분 자동으로 지원됩니다. 사용자 정의 UI 구현 응용 프로그램은 이러한 인터페이스를 제공하기 위해 작동해야합니다. 다행히 주류 브라우저와 같은 중요한 것들이 이러한 인터페이스를 지원하기 위해 작업을 수행했습니다.

나는 그것이 클립 보드라고 생각합니다. 이 프로그램에 클릭 및 두 번 클릭 및 키보드 이벤트를 주입 한 다음 검사를 위해 항목을 복사 할 것입니다. 또는 Windows 텍스트 컨트롤과 함께 jiggy를 얻고 콘텐츠를 그런 식으로 잡습니다. 보안 문제로 인해 이러한 도구는 Vista에서도 실행되는 문제가 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top