mlang.dllを使用した文字コード判別

  • 2008/01/12 VS2008用も追加。

文字コードを判別する - .NET Tips (VB.NET,C#...) を参考にやってみようと思いましたが、パスの設定などがわからなかったので調べてまとめました。


で、ワンクリックでできるようにバッチファイルにしました。

VS2005 + .NET Framework 2.0

set VS=C:\Program Files\Microsoft Visual Studio 8
call "%VS%\VC\vcvarsall.bat" x86
"%VS%\Common7\Tools\Bin\Midl.exe" "%VS%\VC\PlatformSDK\Include\MLang.Idl"
move mlang.tlb "C:\Windows\system32\"
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12.exe" "C:\Windows\system32\mlang.tlb"
del mlang.h mlang_i.c
pause

バッチの詳細は以下の通りです。


1行目: VS2005へのパスを設定 VS2005をデフォルト以外のフォルダにインストールしてある場合はここを変更して下さい。(ダブルコーテーションと末尾の\は無しで)
2行目: VSの環境設定バッチを呼び出す これが無いとmidl.exeの実行中にエラーが発生します。
3行目: mlang.idl作成。
4行目: mlang.idlをC:\Windows\system32へ移動。
5行目: mlang.idlを登録 regtlib.exeがVS2003/2005両方に無かったので.NETフレームワークのものを使用しています。
6行目: mlang.tlbと同時にできた不要なファイルを削除
7行目: 一時停止


上のバッチを実行して、
Registration of C:\Windows\system32\mlang.tlb successful.
と表示されれば成功です。
VSの参照設定->追加のCOMタブにMultiLanguage Object Modelがあるはずなので、それを追加します。

VS2008 + .NET Framework 2.0

set VS=C:\Program Files\Microsoft Visual Studio 9.0
set SDK=C:\Program Files\Microsoft SDKs\Windows\v6.0A
call "%VS%\VC\vcvarsall.bat" x86
"%SDK%\Bin\Midl.exe" "%SDK%\Include\MLang.Idl"
move mlang.tlb "C:\Windows\system32\"
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12.exe" "C:\Windows\system32\mlang.tlb"
del mlang.h mlang_i.c
pause

SDKの場所が変わってます。


#はてな記法で色々なコードに色づけできることを知りました。便利ですね。変なとこに色ついてるけど