質問
があり、いくつかの勝利OSのAPI呼び出しであるか、そのためには、1が画面からテキストを取得聞かせ
ではないスナップショットを取得し、それにOCRをやってますが、APIビア
アイデアは、上のクリックしたユーザーのポイントに、マウスの下にあるテキストを取得することです。
これはどのようにバビロンのようなツール( http://www.babylon.com の)と1クリック回答( http://www.answers.com/main/download_answers_win.jspする)そして他の多くは動作します。
誰かがこの機能を取得するために右方向に私を指すことができますか?
解決
テキストを取得する直接的な方法はありません。それがレンダリングされます後にアプリケーションが膨大な数の異なる方法でテキストを(WindowsのAPIはそれらの1つである)レンダリング、および可能性が - 。それは、画素のちょうど束だ。
あなたはしかし、試みることができる方法は、直接マウスの下で、そこからテキストを取得しようとしているウィンドウを見つけることです。これは、しかし、インターネットブラウザ上で動作しないほとんどの標準的なWindowsのコントロール(ラベル、テキストボックスなど)上で正常に動作します。
私はあなたができる最善のことは、上記のように、できるだけ多くの異なった(共通)コントロールをサポートしているアプリケーションは、このような作りだと思います。
他のヒント
あなたはGetWindowText APIを使用して、すべてのウィンドウのテキストを取得することができます。マウスの位置は、GetCursorPosのAPIを見つけることができます。
は、Delphiでこの機能を使用することができます(以下はピーターに賛辞)
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;
よろしく、
リーフェン
Windowsは、視覚障害者のためのスクリーンリーダーなどのアクセシビリティツールのためのAPIを持っています。 (新しいバージョンはまた、UIオートメーションやテストなどの他の目的のために使用されます。)これは、多くのアプリケーションで、Windows標準のコントロールを使用せず、独自のコンテンツをレンダリングしても、ほとんどのブラウザで動作します。これは、すべてのアプリケーションでは動作しませんが、ほとんどの場合、マウスの下にテキストを把握するために使用することができます。
現在のAPIは、<のhref = "https://msdn.microsoft.com/en-us/library/windows/desktop/ff486375(v=vs.85).aspx" のrel = "nofollowをnoreferrerと呼ばれています「> WindowsのオートメーションAPI に。一般的にこれを行う方法を記述することは、スタックオーバーフローの答えの範囲を超えているので、私は単にドキュメントへのリンクを提供してきました。
この質問は最初に掲載された際に広く利用可能であった古いAPIは、<のhref = "https://msdn.microsoft.com/en-us/library/windows/desktop/dd373592(v=vsと呼ばれています。 85)」のrel = "nofollowをnoreferrer">のMicrosoft ActiveアクセシビリティAPI を.aspxの。現代のAPIと同じように、ここでの範囲は、ここでは詳細に広すぎるます。
両方のAPIのためにそのドキュメントが両方の開発者が(スクリーンリーダーなど)アクセシビリティツールを構築するだけでなく、開発者は、これらのアクセシビリティツールと互換性を持つようにしたいアプリケーションを書くための両方に書かれている注意します。
基本的な考え方は、アクセシビリティツールは、ターゲットアプリケーションのウィンドウ(複数可)が提供するCOMインターフェイスを取得していることであり、それはコントロールとそのテキストとそれらがどのように両方の論理的かつ空間的に関連しているを把握するために、これらのインタフェースを使用することができます。標準のWindowsのコントロールで構成されたアプリケーションは、ほとんどが自動的にサポートされています。カスタムUIの実装を使用するアプリケーションは、これらのインタフェースを提供するために、仕事をしなければなりません。幸いなことに、重要なものは、主流のブラウザのように、これらのインタフェースをサポートするために仕事をしています。
私は、そのクリップボードと呼ばれると思います。私はこれらのプログラムは、クリック、ダブルクリック&キーボードイベント、その後、検査のためにそこに項目をコピー注入賭けるつもりです。あるいは、それらは、Windowsのテキストコントロールとジギーをgettinの、そしてそのようにコンテンツをつかんでいます。私はこれらのツールはまた、Vistaで実行されている問題を抱えている、セキュリティ上の問題に起因する疑います。