インターネットラジオ「らじるれ郎」開発記録 (04)

まいどあり「らじるれ郎」です (^_^)
1
戸田プロダクション @TodaProduction

らじるれ郎 改善計画(その4) ついに「レジストリ」を操作する 趣味と仕事で Windows プログラムを作り続けて20年以上、ついに「らじるれ郎」でレジストリを弄ることにした。今までずっと「レジストリには手を触れない」ことを自作ソフトの信条としてきたが、ここへ来て止むを得ぬ方針変更だ。

2018-03-18 23:46:19
戸田プロダクション @TodaProduction

らじるれ郎に限らず、WebBrowser を使っているプログラムは、そのブラウザが動作する時は標準では「IE7」相当で動くらしい。最近のWebサイトは古いブラウザだと正しく表示されないものも多く、それらサイトを正しく表示するためにはブラウザの動作モードをレジストリに登録してやる必要がある。

2018-03-18 23:47:18
戸田プロダクション @TodaProduction

具体的には、レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION」に実行ファイル名と同じ名前で DWORD(32bit) 値のキーを作り、その値を (10進で)「IE11エッジ」モードを表す「11001」に設定する。

2018-03-18 23:47:54
戸田プロダクション @TodaProduction

このレジストリ操作はブラウザを使用するソフトを作る人々の間では半ば常識?らしいが、自分はらじるれ郎を作り始めるまで全然知らなかった。らじるれ郎のブラウザがラジコのページを上手く表示できず、色々調べていたらこの「Browser Emulation」という単語に行き着いた ↓。 docs.microsoft.com/en-us/previous…

2018-03-18 23:48:47
戸田プロダクション @TodaProduction

現在公開中のらじるれ郎 (ver0.90) でも、パソコン側にこのレジストリさえ設定すれば、ラジコのページを正しく開くことができる。事情を説明してこの設定をユーザー自身にやってもらう手もあるが、それだとやっぱり不親切なので、苦渋の決断?として、らじるれ郎にレジストリ操作をさせることとした。

2018-03-18 23:49:20
戸田プロダクション @TodaProduction

ただし、これまでのらじるれ郎は「レジストリには手を触れていません」それゆえ「アンインストール時はフォルダごと削除でOKです」を謳い文句としてきたので、たとえレジストリ操作をすることになっても、ユーザーさまのレジストリを「汚しっぱなしにする」ことだけは 何としてでも避けたいところ。

2018-03-18 23:50:05
戸田プロダクション @TodaProduction

そこで色々と考えて、らじるれ郎は毎回プログラム起動時に自身の動作に必要な先述のレジストリキーを新規設定し、プログラム終了時にはこれまた毎回、自身が設定したキーを綺麗に消去して「掃除」することにした。具体的なコードは添付画像の通り。Windows 7 及び Windows 10 にて正常動作を確認済み。 pic.twitter.com/xd38v4QQv7

2018-03-18 23:51:57
拡大
戸田プロダクション @TodaProduction

しつこく長々とツイートしてきたが、フリーソフトウェア作者の信条として「ユーザーのレジストリには手を触れない」と固く誓ってきただけに、その禁を破るにあたり「止むを得ぬ事情」を詳しく説明したつもり。今後のらじるれ郎は「レジストリは汚しません」を謳い文句?とさせていただきたい (^_^;)。

2018-03-18 23:58:04
戸田プロダクション @TodaProduction

らじるれ郎、キーボード長押しによる「カッ飛びチャンネル切替」テスト pic.twitter.com/nRATpyfrei

2018-03-20 16:27:00
戸田プロダクション @TodaProduction

なんでツイッターだと音が鳴らねぇんだよ? (^_^;)

2018-03-20 16:28:24
戸田プロダクション @TodaProduction

らじるれ郎 改善計画(その5) キーボードで「チャンネル切替」を可能にする レトロな使い勝手をウリにしている「らじるれ郎」だが、丸い選局ボタンをクリックするのではなく、キーボード上の上矢印キーと下矢印キーでチャンネル切替できたら良いなぁと思いついたので、ちょっと改造することにした。

2018-03-20 18:42:35
戸田プロダクション @TodaProduction

フォームの KeyPreview は TRUE にしてあるから、矢印キーは OnKeyDown で簡単に取れるだろうと思ったらこれが大間違い。なぜか取れない。正確には取れたり取れなかったりする。どうもフォーム上のコントロールのフォーカス移動の方に先に ↑↓ キー入力が取られるみたいで、かなりハマってしまった。

2018-03-20 18:43:43
戸田プロダクション @TodaProduction

仕方ないから Application.OnMessage をフックして、↑↓ キーはその中で取得することにした。具体的には Msg.wParam が VK_UP なら前選局ボタンをクリック、VK_DOWN なら次選局ボタンをクリック。これでキーボードによるチャンネル切替処理は完璧なはず。

2018-03-20 18:45:22
戸田プロダクション @TodaProduction

ところが、この「選局ボタンのクリック」処理の中身は チューナーを停止 新チャンネルに切替 チューナーを開始 となっているから、Application.OnMessage の中でキーリピートがかかると、チューナー種類 (ブラウザ、WMP、VLC) の違いによってチャンネル切替速度に結構なバラつきが出てしまう。

2018-03-20 18:46:56
戸田プロダクション @TodaProduction

これも仕方ないから、Application.OnMessage の中では キーダウンで、チャンネル切替 キーアップで、チューナー停止と開始 という具合に処理を切り分けることにした。これでチューナー種類が何であろうと ↑↓ キーを長押しさえすれば、同じ「カッ飛びスピード」でチャンネル切替が可能となった。

2018-03-20 18:47:28
戸田プロダクション @TodaProduction

これで終わりと思ったら、TTrackBar が左右矢印キーだけでなく上下矢印キーまで処理することにも気づいてしまった。TTrackBar の Position 変更が左右矢印キーで可能なことは承知していたが、まさか上下矢印キーでも変更可能だったとはな。このままだとチャンネル切替で音量まで変わっちゃう (^_^;)。

2018-03-20 18:54:41
戸田プロダクション @TodaProduction

結局これも仕方ないから、TTrackBar の OnKeyDown で VK_UP と VK_DOWN だけ横取りしてチャンネル切替、入ってきた Key には $0 入れて殺すことにした。あー疲れた。ようやくこれで、らじるれ郎のキーボード長押しによる「カッ飛びチャンネル切替」機能が実装できた。この機能は ver 0.95 で公開予定。

2018-03-20 18:57:36
戸田プロダクション @TodaProduction

椅子に座るとついついプログラミングがしたくなり、プログラミングを始めるとあっちゅう間に時間が過ぎ去っていく。他のことが何ひとつできない。…ここんとこ、ずっとそう orz。

2018-03-21 14:44:10
戸田プロダクション @TodaProduction

本日の成果。すべての機能がキーボード操作だけで使えるようになった。 pic.twitter.com/4WGX8ZCf4H

2018-03-21 20:10:47
拡大
拡大
戸田プロダクション @TodaProduction

環境ファイルに Application.ShowHint が保存できず、30分くらいハマった。

2018-03-22 13:50:28
戸田プロダクション @TodaProduction

今までずっと環境ファイルはフォームの OnDestroy で出力すべきと思っていたけど、Application.ShowHint はここで WriteBool しても期待した値が書き込めない。これは盲点だった (^_^;)。この場合 OnDestroy より前で環境ファイルを出力するか、あるいは別の Opt.ShowHint とか使う必要があるみたい。

2018-03-22 14:04:55
戸田プロダクション @TodaProduction

20年前に書いたデカルクのソース読み直してみたら、まったく同じところでハマってコメントまで書き込んでいた…というオチ (^_^;)。

2018-03-22 14:24:40
戸田プロダクション @TodaProduction

NHKラジオの radiko.jp 配信、4月12日正午から全国へ拡大 av.watch.impress.co.jp/docs/news/1112… 平成29年度の実験が終わったら、次は平成30年度の実験か? ホント「実験」が好きだなぁ? らじる★らじるがあって、わざわざラジコで流す理由がイマイチ判らない。まだ過渡期ということか?

2018-03-22 21:32:31
戸田プロダクション @TodaProduction

一応らじるれ郎は ver 0.95 からラジコが聴けるようになるが、技術的にはまだまだ「暫定対応」できたに過ぎない段階だ。このNHKチャンネルを含めてチャンネル登録すべきか否か?少し迷う。

2018-03-22 21:37:17
戸田プロダクション @TodaProduction

新しい環境設定パネルの実装が概ね終わった。メイリオを使う時はフォントサイズをちょっと小さくした方が表示がうるさくなくて良さそう。 pic.twitter.com/XtYt6e0Lw1

2018-03-23 17:09:41
拡大
拡大
1 ・・ 5 次へ