Information

 

Home > Archives > 2008年12月18日

2008年12月18日

WM 複数のブラウザを使い分ける

i780があまりにも安定していて普通の道具になっています。
やることないので、人の書いたネタをなぞって無理やりエントリー。


WindowsMobileでデフォルトのブラウザを変えるにはレジストリをいくつか修正する必要がある。

[HKEY_CLASSES_ROOT\http\Shell\Open\Command]
[HKEY_CLASSES_ROOT\https\Shell\Open\Command]
[HKEY_CLASSES_ROOT\ftp\Shell\Open\Command]
のDefaultの値。

[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Rai\:DEFBROWSER]
の0と1の値。

これらを任意にものに変えると希望したブラウザで表示させることができる。
複数のブラウザを使い分けたい場合は、ももたろさんのExecSelectを使うのが定番。
ExecSelect.exeのあるパスを上記のレジストリに設定してやる。
方法については、「ExecSelectでブラウザを使い分ける」が詳しい。
すごく便利に使わせてもらっている。
作者様、ありがとうございます。

これだけだとちょっと物足りないのでExecSelectで便利だなと感じるところを2点ほど。
1つめは、使用する際にExecSelect.exeをリネームしても問題ないところ。
exeとiniが対になっていればちゃんと動作する。
これによって、ExecSelectフォルダにブラウザ用のBSelect.exe、BSelect.ini、テキストファイル用のTSelect.exe、TSelect.ini、画像用のGSelect.exe、GSelect.iniみたいなのを同居させられる。
(フォルダを分けてやればexeをリネームしなくても良いのだろうけど、フォルダを増やすのがあまり好きじゃないので。)

2つめは、アクセスキーを自分で指定できるところ。
ExecSelect
デフォルトだとスクリーンショットの左のようにOSによって勝手にアクセスキーが割り振られてしまう。
今回のケースはうまい具合に最初の文字が割り振られていて直感的に操作できるけど、いつもそうとは限らない。
それに、場合によっては、指の移動量もけっこう大きくなってしまう。

右の方は、自分で任意のアクセスキーを割り振ったもの。
画面例では、指の移動量が少なくなるようにX、C、Vを割り振ってみた。
これは、iniファイルで

# NetFront3.5
[1]
title=NetFront (&X)
exec=\Program Files\NetFront Browser v3.5\NFBrowser.exe

のようにtitleの部分に「(&X)」(全部半角)のような文字列を追加してやる。
プログラミングでメニュー項目にアクセスキーを設定するのと同じ感じ。

ExecSelectの用途を考えると、項目が10も20も並ぶとは思えないので、ナビゲーションキーで操作しても良いんだけどね。
以上、小ネタでした。


アクセスキーの関連で、テキストベースの設定ファイルからメニューを作るアプリならもしかしたら自由にアクセスキーを割り振ることができるかもしれない、と思った。
ということで、良く使うSimpleMenuでも試してみた。
SimpleMenuはアプリ自体がShortcutCharsというパラメータで同様のことをサポートしているので、あまり意味がないかもしれないけど、結論としてはできた。
自分で割り振る場合は、-ShortcutChars= (何も指定しない)とSimpleMenuのアクセスキー(SimpleMenuではキーボードショートカットと呼んでいる)の機能を無効にした上で、定義ファイルでタイトルの部分を上記と同様にしてやる。

Movable Type PHP化とシステムテンプレート

ブログが少しでも軽くなるようにPHP化をしていったら、システムテンプレートのところで思ったとおりの表示にならなかった。
どうやらPHPのincludeの部分が読み込めていないよう。

調べてみると、どうやらシステムテンプレートはPHP化することができないようだ。
そのため、他の手段を使う。
簡単に言うと、PHP化によって切り離されたファイルを読み込めれば良いので、PHPのincludeの代わりにMTタグを使って対処すれば良いらしい。

ファイルを読み込むためには、<$MTInclude$>でファイルを指定すれば良いが、検索を実行している場所と読み込みたいファイルの場所は違っている。
フルパスでそのまま書き込んでも良いが、そうすると汎用性がなくなってしまうので、変数を定義してパスとして渡してやる。

<$MTBlogSitePath cat="header.php" setvar="header_path"$>
<$MTInclude file="$header_path"$>

これはPHP化したヘッダー用のファイルを読み込むためのサンプルだけど、これにより

  1. <$MTBlogSitePath$>でブログのメインページのあるパスを取得する
  2. catで読み込みたいファイルの場所を上記のパスに結合し、
  3. 得られたフルパスをsetvarでheader_pathという変数に入れる
  4. 最後に<$MTInclude$>のfileでheader_pathで指定されたファイルを読み込む

という流れで処理されるようだ。