GetWinTx

最終更新日 2022 11/25
【概要】
他の Window の持っている通常はコピー出来ないテキストを取得してクリップボードに代入します。

【動作環境】
日本語 Win XP / Vista / 7 / 8 / 10 / 11 ランタイムは特に必要有りません。

【インストール/アンインストール方法】
適当なところに置いて下さい。そこから ショートカットを張って使用して下さい。( 直でも良いですが ) アンインストールは単にファイルと 作成したショートカット等を削除して下さい。 他には何も残しません。

【使用方法】
立ち上げると何も出ませんが 欲しいテキストのあるWindow 上に マウスカーソルを合わせて Shift キー を押して下さい。押した時点でマウスカーソル 直下のWindow の持つテキストが 取得出来れば テキストクリップボードに代入します。
予め場所を指定して置きたい時には その場所をマウスカーソルで指定してCtrl を押しておいて下さい。 Shift キー を押した時の マウスカーソル とは関係なく予め指定した場所のテキストを取得します。 マウスカーソルの場所によってテキストが変わってしまう様なステータスバー等に使用して下さい。
取得できた時には 一般の Beep 音が鳴ります。取得出来ない時には警告音が 鳴ります。 ( UAC 関連で取得出来なかった時には システムの警告音になります。)
Shift キー が押されるまで 約 20 秒程待って押されなければ何もしないで終了します。
Ver 2.200 から メニューの上でも メニューの文言を取得出来る様にしました。 Escape キーを押すとその時点で何もしないで終わります。20 秒程も待てない時に押して下さい。 ( 忘れてしまっても 約 20 秒で消えるので特に問題は有りません。)
立ち上げる時に Shift キーを 押していると 最初に出た ツールチップを取得してクリップボードに 代入します。20 秒 ツールチップ が出なければ何もしないで終了します。
立ち上げる時に無変換キーを押していれば待たずに現在のカーソル位置のテキストを即取得します。

【コマンドライン】
【注意事項】
一部のセキュリティーソフトには GetWinTx は マルウェアー ( ビールス ) に見えてしまうかも知れません。 そんな時には GetWinTx を除外リストに入れて 使用して下さい。
此の辺りの事は 他のウィンドウのテキストの取得 に書いてありますから興味の有る方は読んでみて下さい。
ここに有る バージョン 2.200 からは 共有メモリーを使用しないので 上記の注意事項は有りません。

【制限事項】】
相手とのやり取りに内部メモリーを使用する物については一コラムで取得できるのは 110〜254 文字まで 連続しては Total で 388 〜 500 文字の制限が有ります。( コントロールの種類によって文字数の返し方が 違うのでばらつきが出てしまいます。) 内部メモリーを使用しない物については原理的に無制限です。 当然の事ですがプログラムで想定していない Control や クラスを返す物に関しては無力です。
取得する相手が 管理者権限で立ち上がっている物については GetWinTx も管理者権限で立ち上がらないと 取得出来るテキストに制限が出ます。
ここに有る バージョンでは 共有メモリーを使用しませんので 32bit 環境での ListView TreeView 等の コント ロールテキスト取得は出来ません。

【使用に関して】
此の プログラムは バグ 動作不良などが無い事を期待されて作られてはいますが 違う環境での 正常動作 又 誤動作から来る損害など についての 保証はいたしかねます。 ただし ご意見 提案 動作不具合報告等は歓迎いたします。

【履歴】
2002/03/18 Ver 1.030
ClipSaver.dll からテキスト取得機能を抽出して公開しました。
2002/03/29 Ver 1.121
最新の ClipSaver.DLL のコードにして安全性の向上共通化コードを見直しサイズの減少 取得テキストのオーバーフローのチェックも厳しくしています。又Window を探す方式を変えてテキスト取得範囲 も広げています。
2002/07/20 Ver 1.122
テキスト取得のタイミングをShift キーが離されるまで待つ事にして余裕を持たせました。 又 最新の ClipSaver.DLL のコードにして僅かですがサイズの減少をしています。
2003/04/28 Ver 1.160
最新の Version のコードに会わせて無駄を無くし又 予め取得場所を指定出来る様にもしました。
2004/04/28 Ver 1.200
最新の Version のコードに会わせてステータスバーのテキストはカーソルの有る場所だけにしました。 又 無変換 キーで何もしないで即終了を付加しました。
2005/05/14 Ver 1.210
反応のない( ハングアップしている)プログラムを相手にして自分も固まってしまう可能性を排除しました。
2005/05/15 Ver 1.220
反応のない( ハングアップしている)プログラムでも取得出来る時は取得する様にしました。
2005/05/13 Ver 1.240
ListView のコラムの数が取得できない時に同じ物を沢山取ってしまう不都合を修正しました。 又この部分での余分なコードを除きサイズダウンをしています。サイズの計算違いで子ウィンドウが 重なっている時に此を正確に特定できない事の有るのを修正しました。
2005/09/05 Ver 1.250
メニューテキストの取得方法を変えてメニューの各アイテムを取得する様にしました。 複数取得時の区切りを Tab だけでなく ',' カンマも指定できる様にしました。 50%程度長いテキストでも取得できる様にしています。リストビューでの HitTest が行を決定できずに 取得できない事が有るのを修正しました。
2005/11/12 Ver 1.260
立ち上げ時の関数を一つ減らして多少なりとも速くサイズもかなり減少させました。
2006/07/31 Ver 1.270
バッファを Local に取ることにして少しでも効率を良くしました。配列変数の取得が危ないパスを 修正しました。又 今回から NT 2000 XP 専用の実行ファイルもアップしました。 ( サイズが小さく動作も無駄がなくなっています。)
2006/08/05 Ver 1.280
直下のコントロールの種類を識別する所を関数を呼ばずにその場で直に又識別するのを 外れるのを前提に プログラムする事で 効率スピード( 此の部分だけなら 3 倍以上速くなりました) サイズ共に 改善しました。
2007/06/28 Ver 1.290
子 Window のクラス ComboLBox を認識しない不具合を修正し 直下のコントロールの 種類を識別する所の 文字種の統一をループの外に出して効率を良くしスピードアップをしました。
2007/07/23 Ver 1.300
バッファは確保してあったのに此が反映されていなかったのを修正して一つのアイテムの 文字列取得数を 112 → 208 文字まで増やしました。
2007/08/10 Ver 1.302
あり得ない文字数を返された時のバッファオーバーのガードを固めて此から起こる異常終了を無くしました。 又 一部のアイテムについては文字取得数が増えています。
2007/09/01 Ver 1.304
内部バッファを 整合性が有りより無駄が無く 安全な数に調整しました。 此に伴い一回の 文字取得数も 208 → 216 に増えました。
2008/05/26 Ver 1.305
テキストを取得する以前に取得サイズとバッファサイズとの確認を堅くしてバッファフルで エラーにならない様に しました。
2008/07/13 Ver 1.310
タスクマネージャ の様なタブの有る物についても正確に内容を取得出来る様にしました。 又 内部的には親ウィンドウが候補でない子ウィンドウについてはウィンドウの候補としての確認を省き多数の 子ウィンドウを持つウィンドウの解析スピードをアップしました。
2008/08/01 Ver 1.312
直下の親ウィンドウを探すのも内部的なループにして子ウィンドウを探すコードと共通化を 計りスピードと コード効率を若干ですが改善しました。
2009/04/22 Ver 1.400
同梱する物を Windows NT 系対応の物にしました。この為Version はこれを解り易くしました。 Windows 98 用のメモリマネージャー用の読み込み時間短縮オプションをやめ あまり意味の無かった速度優先 オプションも戻してアプリケーションのサイズ (ディスク サイズ )を縮小しました。
2009/08/20 Ver 1.410
コマンドラインに実行待ち秒数指定用のSW を新設して色々な状況を想定しての使用が 出来る様にしました。後 内部的にはキー入力判断の確実性を上げました。
2009/09/15 Ver 1.420
共有メモリーがテキスト取得に必要な時だけ此を確保する事にして少しでも相手方に 与える影響を少なく且つスピードアップしました。
又 本バージョンから 何も待たずにその場で即取得するNo Wait ( NT 専用 ) を加えました。
2009/11/30 Ver 1.422
No Wait ( NT 専用 ) に先に位置指定の出来るオプションを付けました。
2010/02/10 Ver 1.430
IE8 では影響をしてしまう事が有ったので此に対処しIE7 IE8 のタブ型のStatusbarにも きちんと対応する様にしました。又 処の所の確認をしっかりとして動作を決めるコードにし 場合によっては 文字数の制限を無くし余分な作業をしない様にしました。
2010/05/26 Ver 1.432
Shift を押しながら立ち上げてもクリップボードにテキストデータがある時には クリアーしてから代入しないと入らない事が有るのでこの時はデータをクリアーしてから代入する事にしました。
2010/10/17 Ver 1.434
子ウィンドウのクラスを認識するコードを効率の良くサイズの小さな物に換えました。
2012/10/23 Ver 1.500
ウィンドウのテキストだけでなく 立ち上げ時の Shift キー 又は コマンドラインの /TIP で ツールチップテキストも取得出来る様にしました。又 クリップボードに代入するのもより確実に 代入出来る方に変えました。
Ver 1.500 から Windows NT 系 NT 4.0 / 2000 / XP / Vista / 7 / 8 だけのサポートとさせていただきます。 Win 95 98 Me 環境の方は Ver 1.434 をご使用になって下さい。
2013/03/12 Ver 1.510
文字列検索コードをより汎用性の高い関数に換えて対応性を高めました。
テキスト取得条件を一部満足しない時でも一応テキスト取得をトライする様にしました。
2013/06/10 Ver 1.520
汎用性の高い文字列検索コードは速度も遅いので自前のコードに変え 立ち上げ時に無変換キーを押していると カーソルキーのある場所のテキストを即取得するオプションを加えました。
2014/05/05 Ver 1.530
ツールチップ だと思われるクラスの定義をよりはっきりした物に変えて出現した物の取り違えを少なく かつツールチップの適用を広げて取得可能性を広げました。又 この時の ウィンドウの列挙を自前の物から ウィンドウの本来持つ推薦方式に変えて 効率アップをしました。内部記憶バッファがオーバーしない様に確認を 取りながら代入する様にしました。
内部的なキー動作待ちのコードを効率の良い物にしました。各 ウィンドウを認識するカーソルの範囲が1ドット ずれても取得してしまう事を修正しました。
2014/07/22 Ver 1.540
コマンドライン /NOW を新設してカーソルキーのある場所のテキストを即取得するオプションを加え No Wait Version との 共通化をすると同時に 立ち上げ時の無変換キーを押している事との 排他的トグル動作として 応用範囲を広げました。 此により No Wait Version は廃止しました。
2015/08/10 Ver 1.560
DPI 仮想化 スケーリング の為にマウスカーソル位置取得が実際とずれてしまい間違った位置の テキストにならない様に スケーリング対応を宣言し DPI の仮想化 による スケーリング の影響を受ける事の無い様に 又 此を コマンドライン /DPI 又は 無変換 キーで 切り替えられる様にしました。したがって今までの無変換キーの 機能の切替が Cntrl キーに換わりました。
2015/09/30 Ver 1.570
Internet Explorer Ver 9〜11 までと共用メモリーの相性が悪い様なので IE 9〜11 までは共用メモリー無しで 取得する様にしました。共用メモリーを取得してから一廻りさせる事で相手を安定させてから取得に入る事で 余分なウィンドウリフレッシュが出る事が無い様にしました。
2016/01/05 Ver 1.580
UAC の関連でテキストが取得出来なかった時には 警告音( ビープ )をシステムエラー音に変えました。 又 ローカル変数の初期化位置をより影響を受けない位置に変えて確実性を上げました。
2016/10/05 Ver 2.000
テキスト取得を UNICODE テキストを 直に取得する様にして Windows との親和性 効率を高め ANSI に無い文字でも 文字化をしない様にしました。
多数アイテム取得時の区切り記号を Tab から カンマに変える コマンドライン /CMM を加えました。
内部的なバッファが見込みでオーバーしないのではなく 実際にオーバーしない確実なコードに変えました。
2018/06/15 Ver 2.040
マウスカーソルの位置を予め確認してから 分岐をする様にして無駄な処理が出ない様にしました。同時に UAC の 関連で最初から処理が出来ない時は 余分なバッファーを取得しない様にして無駄な事はしない様にしました。 ( 此の処理で Defender には マルウェアー と間違えられる事がなくなりました。)
メニュー取得は API の戻り値と連携を取って処理する様にして余分な 文字数カウントコードを無くしました。
2019/01/05 Ver 2.100
相手のプログラムが 32bit 64bit で動いているか判断して メモリーを取得する様にして 相手に 悪さを及ぼす事が 無い様にしました。
メモリーを取得しなくても良い時に取得するパスが有ったので此を修正して効率を良くしました。
条件分岐の判断をなるべく早い時期にする事にして必要の無い余分な紆余曲折を出来るだけしない様にしました。
2019/02/05 Ver 2.140
取得した文字列の中にに UTF-16で アサインされていないコードが有った時に 此を除くオプション /RMU を 新設しました。
2021/03/10 Ver 2.160
Windows 10 でデスクトップに新設されて取得テキストとは関係ない見えないウィンドウが テキスト取得に 影響をしない様に最初から此等を避けるコードを入れました。
2021/03/12 Ver 2.170
TipText 部分にも デスクトップに新設されて取得テキストとは関係ない見えない ウィンドウ 排除を入れました。 これによって アンチビールスソフトに係りにくくなりました。
2022/11/25 Ver 2.200
Windows 11 で デスクトップに取得テキストとは関係ない見えないウィンドウ の状況が 変わったので此の 排除フィルターを変えました。
Windows 11 でファイルエクスプローラーがタブになったのでこれに対応しました。
相手とのやり取りに共有メモリーを使用して取得出来る Control は 32Bit 仕様の物だけで現実的には 取得出来る物が殆ど無くなっていて共有メモリーを使用する弊害 ( 他から ビールスソフト等に見えて しまうとか ) の方が多くなったので此はやめました。
メニュー上で Shift を押す事でメニューの文字列も取得出来る機能を付けました。
UTF-16で アサインされていないコードが有った時に 此を除く コマンドラインの /RMU は 常に取り除く 事にして廃止しました。

最新版 11/25 2022 Ver 2.200 Size 10 kb 最新版 11/25 2022 Ver 2.200 Size 10 kb GetWinTx のダウンロード
共有メモリーを使用して 32bit コントロールのテキストも取得出来る GetWinTx のダウンロード ( 同梱の GetWinTx.exe は Win NT 専用 です。)

プログラムティップスの 他のウィンドウのテキストの取得 にも書いた様に Vector からの GetWinTx.exe は ビールスガードソフトや ある種のブラウザーの セキュリティー機能に 引っかかり易く 何らかの 警告メッセージを出される事がありますが 害は 有りませんから安心してご使用になって下さい。( 此の為にソースコードも公開しています。)


−戻る−