2012/07/17(火)Thunderbirdの文字化け対処法

2012/07/17 10:24 PC(全般)
Thunderbird(13.0.1)のメール本文で文字化けする問題。

前提として、ThunderbirdではOutlook Expressよりもcharset申告を厳密解釈する。
なので、申告がおかしいメールを判定失敗するのは仕様。これはRight Encodingなどのアドオンで快適に対処、のはずだった。

しかし、charset=UTF-8のメールがISO-2022-JP判定されて文字化けしている。これはちょっと困る。

2カ所チェックすること。

・該当メールのフォルダのプロパティ
一般情報タブ->規定の文字エンコーディング→"この設定をフォルダ内の全てのメッセージに適用する(各メッセージの文字エンコーディング指定や自動判別結果を無視する)"
のチェックを外す。

・ツール->オプション->詳細->設定エディタ
mailnews.force_charset_override
をfalseに設定

自分の場合は以上2カ所で直った。

参考)UTF-8のメールが文字化けする【備忘録】 - Bacchus.gif

2012/07/10(火)春M(SpringM)の関連づけ周り

2012/07/10 11:05 PC(全般)
春MでeXecute周り触ってたら、期待と違う動作になったのでまとめておく。

春MはeXecuteで外部アプリケーションを起動できる。この時に「システムの関連づけ」を参照して起動アプリケーションを決める場合、オプションを引き渡さない。

たとえば、eXecuteで
massigra.exe a.bmp /blank
は"/blank"オプションが反映されるが、massigra.exeがシステムで.bmpに関連づけられているときに、
a.bmp /blank
は"/blnak"オプションが反映されない。コマンドプロンプトの仕様とずれているので、春M側のバグと見ていいように思う。

回避方法は一応ある。とりあえずこの例で言えば、春M自体で.bmpにmassigra.exeを関連づけした後、eXecuteで
\"massigra.exe a.bmp /blank\"
とすれば回避可能ではある。けど、拡張子ごとにやるのはちょっと不毛。

そして\"戦法はシステム関連づけには通用しない。

ということで、当座の手立てとしては「オプション指定したい場合は起動exeから書く」以外に無さそうである。

2012/06/16(土)XP+IE6環境にIE Collectionをインストールすると

2012/06/16 13:50 PC(全般)
Windows XP, IE6環境にUtilu IE Collectionをインストールすると、元々入っていたIE6の挙動がおかしくなる問題。

まず前提として、
・IE Collectionはインストール時にレジストリを大量にいじる(梱包している各IEインストーラの挙動次第)。
・アンインストールしてもそれを完全に元に戻さない。
・IE自体が複数バージョン同時実行することを全くケアしていない。

これだけ見ても、デフォルトで入っているIEを動かし続けたい場合、その環境に対して「導入すべきではない」。

以下のように、仮想環境にIE Collectionを導入するのが良いだろう。
Reliable Cross-Browser Testing, Part 1: Internet Explorer | Smashing Coding

しかし、導入してしまった場合どうなるか。
[発生条件]
・OS: Windows XP (SP2, SP3で確認)
・IEバージョン: IE6(IE6の複数バージョンで確認)
・Utilu IE Collection 1.7.2.1をインストール
(インストール時、オプションでIE7かIE8をチェック)

[現象]
元々入っていたIE6で、JavaScriptのwindow.open呼び出し時に、Windowが2画面開く。1枚は表示が空かつSHDocViewが無い状態で正常に動かない。アイコンも正常なIE6と異なる。その他、JS多用画面で頻繁にフリーズ・ブラクラ状態になる。

手元の環境ではIE Collectionで7or8を入れた場合に100%再現した。IE Collectionをアンインストールしても改善しない。

対処方法はかなり対処療法的手法になる。IE Collectionをアンインストールした後、レジストリエディタで以下のキーを削除。
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}	(既定)	(値の設定なし)
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\InProcServer32	(既定)	C:\\Program Files\\Internet Explorer\\ieproxy.dll
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\InProcServer32	ThreadingModel	Both
要は"C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6"キーごと消す。

キーの意味は各自で調べて欲しい(ごめんなさい、調べきれませんでした)。

これでIE6のwindow.open周りの挙動は本来の動きに戻る。他におかしいところがあるかもしれないが、一度入れてしまったら後の祭り。IEのIE6より新しいバージョンを入れるか、復元するか、OSの再インストールをするか…… 綺麗にする方法はそこらしかなさそうである。IEのアップデートに失敗して旧IEが動かなくなってしまったときと同じ感じである。

あ、でも綺麗なOSにIE Collection入れてレジストリパッチを作る方法はあるかな……

なお、レジストリの修正は当然自己責任で。バックアップを取ってからの実施をお勧めする(ERUNTとか、この部分だけエクスポートするとか)。

2012/06/16(土)AutoIt!でBTScanをちょっと改良

BTScanの記事なのかAutoIt!の記事なのか判断付かないけどとりあえず書いておこう。

AutoIt!はuwsc等で知られる、いわゆるWindows自動化ツール(マクロレコーダ)である。

uwsc(無料版)と比較すると、
[劣る]
・自動記録がちょっと弱い(いわゆる座標依存系のスクリプトを吐くことが多い)
・専用エディタが微妙に使いづらい
(一度拡張子を.au3にしないとメニューが開かないって!)
・仕様に慣れるまでに時間がかかる

[優る]
・とにかく高機能
・正規表現文字列操作もファイル操作もなんでもあり
・GUIも作れる、フォームエディタ付きで作りやすい
・exeもお手軽に作れる(uwscだとPro版のみ)

といったような感じ。どっちかというとマクロいじってると言うよりほぼ一言語を覚えるのに近い。類似のことはやろうと思えば.NET系列なりRubyなりでもできるわけで、初期学習コストが高そうなAutoIt!を使うメリットはかなり微妙なところではある。とはいえ、やっぱりお手軽感はあるか。

さて、今回BTScanにちょっと機能が欲しいってんで、AutoIt!でスクリプトを書いてみた。

目的としては、カウンタリセットボタンが欲しいのと、フォルダ名の最下位部だけ変更するような機能を追加したい。

AutoIt!で書くとこんな感じ。
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("BTScan Tool", 623, 75, 192, 114)
GUISetFont(9, 400, 0, "MS Pゴシック")
$inputFolder = GUICtrlCreateInput("", 8, 8, 489, 20)
$buttonReset = GUICtrlCreateButton("カウンタリセット", 456, 40, 161, 25)
$buttonFolderSet = GUICtrlCreateButton("フォルダ名セット", 504, 8, 113, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Run("c:\\hogehoge\\BTScan\\BTScan.exe")
WinWaitActive("[Class:#32770]")

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $buttonFolderSet
			$org = ControlGetText("BTScan 3", "", 1000)
			$newFolder = GUICtrlRead($inputFolder)
			$newPath = StringRegExpReplace($org, "^(.*?)\\([^\\]*)$", "$1\\" & $newFolder)
			ControlSetText("BTScan 3", "", 1000, $newPath)
		Case $buttonReset
			ControlSetText("BTScan 3", "", 1005, "1")
	EndSwitch
WEnd
これを実行すると、ボタン2つテキストボックス1つのフォームがBTScanと共に立ち上がる。hogehogeは適当に読み替えて欲しい。例外処理とかは全く考慮無し。

ちなみに、コメントで囲まれたGUI部分はフォームエディタをWYSIWYGにいじってそのまま貼り付けただけ。

このフォームは別のファイルで保存しておける。コピペの手間が発生するとは言え十分にありレベル。

…うーん、でもやっぱり他の言語使った方が良い?

(2012/7/12) スクリプト微修正。TWAINダイアログ出てても変更反映可に。

2012/01/05(木)tvrock起動時にwarning

2012/01/05 23:57 PC(全般)
tvrock起動時に、注意ダイアログが表示され、
「チャンネル"****"の設定がされていません。設定・チューナー欄でチャンネルを設定して下さい。」
が出る問題。

地上波チューナーに衛星の番組が割りあたっていたり、設定→チューナー→チャンネル設定が出来ていない場合などに出る。

新規にチューナーを追加した際などにチャンネル設定が半端になっていたりすると出るので注意。
OK キャンセル 確認 その他