以下、覚書。
・Radikoで「爆笑問題の日曜サンデー」を録音したくなった。ここはエリア外のはずだが、会社のPCだとなぜか聴取可能(自宅は不可)。日曜に会社に出てくるのはわびしいので、なんとかタイマー録音したい。
・いろんな都合で、定時に「午後のこ~だ」を起動し、「録音開始ボタン」を押すのが一番安全で簡単ということになった。それくらいのプログラムなら、と甘く見て無料開発環境のactive basicをダウンロード。最新版はなぜかエラーが起きるので、V4.24を使う。
・やることは、以下の5つ
①TBSを流しているradikoのサイトを起動
②午後のこ~だを起動
③午後のこ~だの「ライン入力録音MP3録音」タブを開く
④指定の時間になったら午後のこーだの「録音開始」ボタンをクリック
⑤3時間後、同じボタンをクリック
・①、②はShellExecuteを使う。
・③は、まず午後のこ~だのメインウィンドウのハンドルをFindWindowで調べて、そのハンドルに対してSendMessage([ハンドル], WM_KEYDOWN, VK_RIGHT, 1)してみるが、うんともすんとも言わない。
・そこでメインウィンドウの子ウィンドウ(?)である別のハンドルをFindWindowExで探して、SendMessageしたらうまくいった。
・FindWindowExはActiveBasicのV4にはないので、MainWnd.sbpにDeclare文を書き加えて使用可能にした。
・④は「録音開始」ボタンの位置を調べてmouse_eventでクリックしようと考えたのだが、どうもうまくいかないので、ボタンのハンドルを調べてSendMessage([ハンドル],BM_CLICK,0,0)することに。ところが、これもうまくいかない。③で使ったFindWindowExを使ってみたが、ボタンのハンドルがわからなかった。
・そこで指定されたウィンドウの子ウィンドウを列挙するEnumChildWindowsProcを使うことに。これもActiveBasicのV4にはないので、この開発環境に関するホームページの記述を参考にDeclare文を書き加えた。
・EnumChildWindowsProcから呼び出される関数のなかで、テキストが「録 音 開 始」があれば、そのハンドルを記録しておく。このさいにWM_GETTEXをSendMessageしてもうまくいかず、はまった。ほかのアプリのウィンドウのテキストを調べる場合には、GetWindowTextが正解だそうな。
・なんやかんやでうまくボタンを自動的に押せるようになった。
・ActiveBasicのサイトが落ちているらしく、所蔵されているであろう大量の情報が読めない。グーグルのキャッシュから「テキストのみのバージョン」をクリックすると情報が得られることもある。
・Enumとはエニュマエル夫人の略ではない。
・Radikoで「爆笑問題の日曜サンデー」を録音したくなった。ここはエリア外のはずだが、会社のPCだとなぜか聴取可能(自宅は不可)。日曜に会社に出てくるのはわびしいので、なんとかタイマー録音したい。
・いろんな都合で、定時に「午後のこ~だ」を起動し、「録音開始ボタン」を押すのが一番安全で簡単ということになった。それくらいのプログラムなら、と甘く見て無料開発環境のactive basicをダウンロード。最新版はなぜかエラーが起きるので、V4.24を使う。
・やることは、以下の5つ
①TBSを流しているradikoのサイトを起動
②午後のこ~だを起動
③午後のこ~だの「ライン入力録音MP3録音」タブを開く
④指定の時間になったら午後のこーだの「録音開始」ボタンをクリック
⑤3時間後、同じボタンをクリック
・①、②はShellExecuteを使う。
・③は、まず午後のこ~だのメインウィンドウのハンドルをFindWindowで調べて、そのハンドルに対してSendMessage([ハンドル], WM_KEYDOWN, VK_RIGHT, 1)してみるが、うんともすんとも言わない。
・そこでメインウィンドウの子ウィンドウ(?)である別のハンドルをFindWindowExで探して、SendMessageしたらうまくいった。
・FindWindowExはActiveBasicのV4にはないので、MainWnd.sbpにDeclare文を書き加えて使用可能にした。
・④は「録音開始」ボタンの位置を調べてmouse_eventでクリックしようと考えたのだが、どうもうまくいかないので、ボタンのハンドルを調べてSendMessage([ハンドル],BM_CLICK,0,0)することに。ところが、これもうまくいかない。③で使ったFindWindowExを使ってみたが、ボタンのハンドルがわからなかった。
・そこで指定されたウィンドウの子ウィンドウを列挙するEnumChildWindowsProcを使うことに。これもActiveBasicのV4にはないので、この開発環境に関するホームページの記述を参考にDeclare文を書き加えた。
・EnumChildWindowsProcから呼び出される関数のなかで、テキストが「録 音 開 始」があれば、そのハンドルを記録しておく。このさいにWM_GETTEXをSendMessageしてもうまくいかず、はまった。ほかのアプリのウィンドウのテキストを調べる場合には、GetWindowTextが正解だそうな。
・なんやかんやでうまくボタンを自動的に押せるようになった。
・ActiveBasicのサイトが落ちているらしく、所蔵されているであろう大量の情報が読めない。グーグルのキャッシュから「テキストのみのバージョン」をクリックすると情報が得られることもある。
・Enumとはエニュマエル夫人の略ではない。