wnd_strについて

モチベーション

mayuでウインドウの指定に使われる文字列があります。クラス名, タイトル名, モジュール名の3つから構成され、クラスとタイトルはウインドウの親子構造を表します。

ウインドウの指定に使って便利なら、ウインドウハンドルの取得にこれを使うのもまた便利なのでは、という考えから、find_wnd_strを作ってみました。

親子関係の入り組んだウインドウのハンドルを得るには、普通、何度もGetWindow等を繰り返すことになり、非常に面倒です。しかし、wnd_strを使えば、例えばWordWebの入力窓を得る場合、

find_wnd_str(Window.Find('TTHeDi' 'WordWeb') ':TTHeDi:TPanel:TWWComboBox.UnicodeClass:Edit')

これで済みます。

第一引数の親ウインドウの指定を0にすることで、全てのウインドウを対象にできますが、ウインドウの数が多かったり、CPUが遅かったりすると非常に時間がかかります。

補足

文字列を得るには、得たいウインドウにフォーカスを合わせ、

include('wnd_str')
set-cb& make_wnd_str(Window.GetFocus)

をホットキーで実行するといいでしょう。3つの文字列が改行区切りでクリップボードにコピーされます。

仕様

find_wnd_str(hParent, class, title = Nil, module = Nil)

hParentが保持する子ウインドウからclass, title, moduleと初めに一致するウインドウハンドルを返す。hParentが0の場合は全てのウインドウが対象になる。class, title, moduleは文字列か正規表現Nilの場合は無視される。

make_wnd_str(hWnd)

hWndのmayuウインドウ文字列を取得する。戻り値は{class, title, module}の配列。