生放送とかでコメントを読ませるのに使うらしい。いろいろなアプリがあるようで、眺めてみると、どうもウィンドウを捕まえてそこからテキストボックスにメッセージを書き込んで再生ボタンを押す、ってなことをやってるようです。久しくこの手のアプリを作ってないので、リハビリを兼ねて真似っこして見る事にしました。関連のページで公開しました。書き始めアプリのウィンドウハンドルを捕まえる手元には「VOICEROID+民安ともえ」がありますので、まずこれをプログラムから捕まえる事をやってみます。参照してウィンドウ一覧を出せるか試してみました。}}VS2010でコンソールアプリケーションを選んだ際の雛形にそのまま書き込んでます。民安さんを起動してから実行します。64bitのWindows7で実行してますが、32bitアプリのウインドウも捕まえられる模様です。民安ともえ”でアプリ特定する事にします。ウインドウタイトルが同じ別アプリも引っ掛けてしまうのでもう少し絞らないといけないのですが後で対応しましょう。無事ウインドウハンドルを取れたことがわかりました。民安ともえ”のウインドウにはテキストを入力するボックスがあって、再生の為のボタンがあって、その他色々コントロールが配置されています。今回の意図では、少なくとも「テキストボックス」「再生ボタン」の2コントロールをいじれるようにならなくてはいけません。このコントロールは、アプリのウインドウの子ウインドウとして存在するので、各コントロールのウインドウ(ウインドウハンドル)を捕まえる必要があります。ウインドウ検索でファインダーツールを使うと、わりあい楽に見つけられます。ファインダーツールを調べたいコントロールの上へドラグ&ドロップすれば、ウインドウハンドルが判明します。すると、2つのコントロールが存在する箇所がわかりました。親ウインドウ下の子ウインドウ下の2つ目の子ウインドウ下の5つ目の子ウインドウこの2つのウインドウハンドルを捕まえればいいわけです。取得できない模様です。呼び出しせねばなりません。みて呼び出しを試みます。}}EnumChildWindows()を使ってウインドウハンドルを列挙してみました。あって実行時に適宜選択されるそうです。今回はうまい具合にSpy++の表示と同じ並びで取り出せてるみたいですが、何かUIに変更があるとこの並びも変わるでしょうし、そもそも毎回この並びになる保証もありません。見つかったのであとはWindosSDKのマニュアルを見てコードを書き換えます。これで後はメッセージを送るのみとなりました。民安さんにしゃべくりしてもらう再生ボタンを押してみる以下はボタンが押せましたよ版。実行前に民安さんを起動してテキストボックスにテキストを入力して置いてください。!だと思ってたんですがねぇ。しながらテキストボックスにメッセージを入れてSpy++で監視していたところ、そもそもBM_CLICKが再生ボタンに送られてきていない。SetFocus()したらBM_CLICKが来たけどそもそも処理してない模様。なんとなくだけど、親コントロールがマウスカーソルの位置とボタンクリックを検出して処理をしているっぽい。「あきらめたら以下省略」という事でグーグル先生をこき使う。「WM_NULLだけでいけるみたい」のコメントが。k896951ページ用ツール文書の先頭へ。