ウィンドウ上の描画文字列の取得

このQ&Aのポイント
  • 他アプリケーション画面上の文字列を取得する方法を調べています。
  • GetWindowTextやWM_GETTEXTで取れるのは「output window」のみで、描画されている文字列は取得できません。
  • NNScanTextのスキャンモードを使用することで、画面上の文字列を取得することができました。
回答を見る
  • ベストアンサー

ウィンドウ上の描画文字列の取得

他アプリケーション画面上の文字列を取得したく、調べています。 スクロールつきテキストエリア風なのですが、「描画」されているのか GetWindowTextやWM_GETTEXTで取れるのは "output window"。 ソフトをいくつか試したところ、だいたい同様だったのですが NNScanTextのスキャンモードで画面上の文字列を取得できました。 再描画で、描画文字列&位置を取得しているとのこと・・・ ウィンドウまわりの知識がないなりに、GDIなど思いつく限り調べて みたのですが、その方法にたどりつけません。 教えていただけないでしょうか;; > NNScanText http://www.vector.co.jp/soft/winnt/util/se271444.html

  • ap_2
  • お礼率83% (5/6)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

私が思いつくのは、APIフックでDrawTextやTextOut系のAPI呼び出しを奪い取る方法です。 文字列データを取得したら元のAPIを呼び出すようにすれば、アプリの動作に支障は出ないはずです。

ap_2
質問者

お礼

なるほど、API差し替えちゃうんですね。。。 見つけられなかったのも、対応ソフトが少ないのも、納得です。 監視しよーとすると壊しちゃいそうだ(--; 知識がなく行き詰っていたので、助かりました。 ありがとうございます!

関連するQ&A

  • Windowsタスクスケジューラ同様のフリーソフト

    Windowsタスクスケジューラの同等の機能のフリーソフトはありませんか? http://www.vector.co.jp/soft/winnt/util/se439950.html こちらの「かんたんタスクスケジューラ」は有料なので気軽に試せず、二の足を踏んでいます。 また、コマンドラインものはさっぱり分かりません。。。 http://www.vector.co.jp/soft/winnt/util/se355101.html こちらなど

  • GoogleChromeで選択文字列を取得する方法を教えて下さい。

    GoogleChromeで選択文字列を取得する方法を教えて下さい。 GoogleChromeでページ内で選択した文字列を取得し、表示させるプログラムを作成しています。 いろいろ検索してみたところ、window.getSelection()+''; のようにすれば取得できるようなことが書いて あったんですが、うまくいきませんでした。 function test() { var selection = window.getSelection()+''; return selection; } もちろん window.getSelection() でも駄目でした。 わかる方いらっしゃいましたら、教えて頂けると嬉しいです。

  • Visual Web Developerで描画

    こんばんは Visual Web Developerを初めて間もない者です。 Imageに文字列を描画したいと思っています。 例えば Textboxに入力した文字列をButtonイベントで取得して Imageで表示している画像上に描画 のような感じです。 その他の制約としましては、 ・画像サイズに合わせて文字列が折り返して描画されること どなたかご教授お願いいたします。 開発環境 ・Window XP Home Edition ・VWD 2010 Express(ASP.NET Webサイト C#)

  • 画面から文字列を取得してその文字列の位置を知る方法

    こんばんは。 質問させてください。 画面から文字列を選択して、取得します。(これは出来ました。) その文字列がHTMLソースファイルの どの位置のものか取得する方法はありますでしょうか? ○番目の「こんばんは」を画面から取得した時に 同じ文字列があっても、○番目の位置が取得出来る方法なのですが・・・ ---- <HTML><HEAD></HEAD> <BODY> おはよう、こんばんは。 さようなら、ありがとう。 しつれいしました、おはよう、こんばんは。 こんばんは、さようなら。 さようなら </BODY> </HTML> ----

  • フリーソフトについて

    フリーソフトについて nonsensical http://211.13.211.3/soft/winnt/util/se308395.html MgntWnd http://www.vector.co.jp/soft/winnt/util/se175660.html ぴたすちお http://www.vector.co.jp/soft/winnt/util/se224671.html 上記のような機能をもつフリーソフトを使用していたのですがパソコンを初期化したため名前がわからず探すことができません、心当たりのある方何でもいいので情報をください。 名前に「窓」の文字を使っていたような気がします、あと便利機能として電卓やメモ帳機能がありました。 アイコンは濃い青だったと思います。

  • GDI+のDrawStringを使って文字を滑らかに描画したいのですが。。。

    GDI+のDrawStringを使って文字を滑らかに描画したいのですが。。。 環境は、VC++のWin32プロジェクトです。 WindowのデバイスコンテキストからGraphicsオブジェクトを生成し、DrawStringとすると滑らかに描画されます。 しかし、BitmapオブジェクトからGraphicsオブジェクトを生成し、DrawStringを行うとビットマップフォントのようです。 Graphics g(hdc); g.DrawString(......); -> この場合はなめらか(画像の下の方) しかし、 Bitmap bmp(w, h, PixelFormat32bppARGB); Graphics g (&bmp); g.SetSmootingMode(SmoothingModeHighQuality); g.DrawString(...); -> ジャギが目立つ。(画像の上の方) ビットマップ(メモリ)にスムーズなテキストを描画することはできないのでしょうか? ちなみにフォントはメイリオです。

  • ポイント位置の文字列取得について

     皆様、ご教授を宜しくお願い申し上げます。(自力では解決できませんでした。)  1)あるソフト画面の、例1の右端の数字 88.6(5位)から91.4(1位) の()を除いた、88.6から91.4 までの16ヶの数字を一括して、csvファイルで保存したいのですが、フリーソフトの「ポイント位置の文字列取得」では、一つづつしかできません。この縦に並んだ16ヶの数字を一括して、csvファイルで保存する方法をご教授宜しくお願い申し上げます。    (目標を達成できるのなら、「ポイント位置の文字列取得」以外のソフトでも構いません。また、有料無料は問いません。そのソフト名と一括保存方法をお教え下さい)

  • Javascriptでリンクの書き換え

    未熟ですがJavascriptを使って、リンクを書き換えるユーザースクリプトを作りたいと考えています。 例えば、Vectorへのソフトのリンクがあった時に http://www.vector.co.jp/soft/win95/util/○○○ http://www.vector.co.jp/soft/winnt/net/×× ↓ http://www.vector.co.jp/soft/dl/win95/util/○○○ http://www.vector.co.jp/soft/dl/winnt/net/×× のようにリンク全てを書きかえるスクリプトを作りたいのですが、 replaceやjoinなどを使って作ってみましたが、うまく行きませんでした。 どうすればいいか教えてください。 どうぞ宜しくお願いいたします。

  • GetGlyphOutline() 等で「文字列」を書き出す方法を・・

    ゲーム開発で、キャラクターやモンスターの名前を表示したく GetGlyphOutline() という関数を知りそれを使ってみているのですが、 文字の画像を取得した BYTE 形式のデータを vector にpush_back したまでは良かったのですが、 1つの BYTE* の受け皿にvectorから流し込んで描画していたのですが、 メモリに書き出す都合で、1ピクセル?ごとに全部の描画する文字を グルグルと何度も何度も vector から流し込んでしまっています。 BYTE *aaa = vectorAAA[i];  //vectorから流し込む xxx = aaa[b + c * d] / 2;  //xxxがメモリに書き込まれる値 //// 中の数式はテキトウです。 これをどうにかしたいのですが、 BYTE は扱うのが始めてで、配列には出来ないとだけしか判っておらず、 まだ vector も最低限の使い方(.size()等)を覚えたばかりなのですが、 vector に入った BYTE* のデータを直接扱う方法は有りますでしょうか? それとも文字数を制限して、先に BYTE* の受け皿をどっさり並べるとか、 もっと他の手段を探すべきなのでしょうか? どうか、よろしくお願いします っ_ _)っ

  • 文字のちらつきを抑えるには

    VisualStudio2005でAPIをを使ってマウスの位置を表示するソフトを作っています。WM_MOUSEMOVEメッセージがきたら位置を取得して、InvalidateRect関数を使って再描画しています。再描画する際に文字のちらつきが気になります。HPを調べたりいろいろやってみたのですが、ちらつきを起こす原因と対処法(ダブルバッファリング)の大まかな部分しか分かりませんでした。もし、参考になるサイトや詳しい方がいらっしゃったらご教授ください。※MFCは使っていません。