プログラミングの最近のブログ記事

今さらのもの

| コメント(0) | トラックバック(0)
GadgetScrew.pngWindows Vistaのサイドバーガジェットが左にずれていくのを防止するツールを公開しました。
GadgetScrew Ver.0.7

Vistaのサポートが来年春に切れるというのに、あまりにも今さらですが。BusinessとEnterpriseはまだ使うでしょうから、有用でないこともないでしょう。

ガジェットの追加・削除にも追随できるようにしてあります。

名前の元ネタは「モンティ・パイソン」でジョールが法廷に立つシーンです。

TS Demux for D-VHS

| コメント(0) | トラックバック(0)
dvhsdemux.png何となく動作するものができました。ホームページの方で公開しています。
DVHSDemuxer Ver.0.2

Code Projectを参考に、リストビューへの進捗表示を組み込んであります。

するとカスタムドローを使うので、ついでにパス表示にPathCompactPath APIを使うことができました。

なおtsdemuxerベースなのでGPLになっています。
企むことがあってCOMの学習中。

既に廃れつつあって参考書が少ない中、いきなりアウトプロセスのサーバーに挑戦です。

32ビットしか提供されていないアンマネージドDLLを、64ビットのマネージドアプリから使う必要があり、32/64相互運用はアウトプロセスCOM経由が一つの方法だと目にしたもので。

CodeGuruにC++で記述したアウトプロセスサーバーのサンプルがありました。Windows SDKのDCOMサンプル"Simple"よりわかりやすいと思います。

またMSDNにC#クライアントの解説がありました。

IDLファイルがあればタイプライブラリのTLBファイルが作られるので、tlbimpしてアセンブリファイルを作り、参照設定から「参照の追加」してやれば良いとわかりました。

コードはこうなりました。

namespace CSClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Server.MiniDcom d = new Server.MiniDcom();
            Server.IDouble id = (Server.IDouble)d;
            int r0, r1;
            r0 = 10;
            r1 = id.Double(r0);
            Console.WriteLine(r0 + "->" + r1);
        }
    }
}

TS Demux

| コメント(0) | トラックバック(0)
ものぐさキャプチャの環境が固定化しました。
基本的にDT-DRX100だけで全てを取り込み、IEEE1394でPCへ。外部入力にSL-2100とCLD-HF9Gが接続されています。

結局ADVC-100は主役に返り咲くことなく、DVキャプチャをすることは二度となさそうです。YUV411が好みではないのと、故障気味で滅多に正常動作せず、ランプが全て点灯してしまいます。基板交換対応のようです。

DT-DRX100からSTDモードでTS出力させ、CapDVHSで取り込み。CapDVHSは何とWindows 7 x64でも動くのですよ。
それをTSDemux 0.18で分離、さらにraw2lpcmでPCMのwavを生成、TMPGEnc Authoring Works 4でオーサリング。

しかしこの変換過程に若干問題があり、TSDemuxはm2vファイルのハンドル閉じ忘れがあるようです。またraw2lpcmはそれ自体は悪くないものの、比較的時間がかかるツールを複数手動で使うのは面倒です。PCM出力までをドラッグ&ドロップで一気に連続処理したいものです。

ということで、TSDemuxにraw2lpcmを組み込もうと思ったのですが、公式サイトが消滅しており配布されていたソースコードが手に入りません。VideoHelpあたりで聞くのも手ですが、他に選択肢はないかと探したところ、tsdemuxerが代わりになりそうでした。

Visual C++ 2008で普通に再ビルドできました。ライセンスはGPL v2なので、改造した場合私の初のGPLライセンス品として公開することになるでしょう。m2v出力の冒頭がTSDemuxと異なりますが、mp2とrawは同じでした(ただしrawの拡張子がac3)。

作りたいものが貯まってきました。そして、キャプチャするのはいいけど見る時間は!?

SPTI

| コメント(0) | トラックバック(0)
関心があってISO吸い出し挑戦したのですが、HFS/HFS+とのハイブリッドのディスク(Toastで言うカスタムハイブリッド)に対してReadFile()を使うと、ISOファイルシステムに含まれる領域しか読み出せないのですね。

# 正確にはドライブをCreateFile()で開いてReadFile()

SPTI経由でREAD(10)を発行すれば全て読み出せました。

やり方が悪いのか、IOCTL_CDROM_READ_TOC_EXがDVDだと通らないので、TOC取得の段階からSPTIに手を染めざるを得なかったりしますが。

WDKのapi/ntddscsi.hやddk/scsi.hに多少の定義がありますが、単純にunsigned charで定義したCDB配列、というよりSCSI_PASS_THROUGH構造体のCdbメンバに直接代入した方が楽なようです。

さてこのREAD(10)というコマンド、SCSIの初期から存在しているのだそうで。DVD規格が策定される10年以上前のコマンドで読み出せるのは、規格の素性と実装屋の頑張りと、最初の人と当時の人が思われて感動します。

さらにREAD(10)の原型になったREAD(6)コマンドは、SASIから取り込まれたものだそうで、悠久の時を感じる物語。SASIの最大40MBなんて容量は、今ではHDDのキャッシュです。

SASIはSCSIに移行し、そのSCSIも個人向けからは姿を消しましたが、コマンド体系はATAPIに流用され、こうして今も隣にいるのです。

証明書の更新

| コメント(0) | トラックバック(0)
一度途絶えたので更新ではなく新規になりましたが、CERTUMのコード署名用証明書を取得し直しました。

そういえば証明書には秘密鍵というものがあるのでしたね。

Firefoxで手続きしたら署名でエラーが出て、何だろう何だろうと試行錯誤したところ、InternetExplorerでCERTUMウェブ上からInstallボタンを押した時に「秘密鍵がないよ」と表示されまして、FirefoxからエクスポートしてIEでインポートし、事なきを得ました。

IEがWindowsと結びついているのも善し悪しではあるのですが。

MSDNライブラリの左ペイン

| コメント(0) | トラックバック(0)
Web版MSDNライブラリを表示した状態で、Firefoxのタブを開こうとして間違ってShift+Tを押してしまいました。

するとMSDNライブラリの左ペインの幅が変わり、或いは消えました。ショートカットはTなのですね。

試しにCtrl+Tでタブを追加して元に戻ると、やはり変わっていました。修飾キーの状態は見ていないようです。

MSDNライブラリの表示状態が時々変わる謎が解けました。でもFirefox側の操作であるCtrl+Tをスクリプトに検出されるのはどうなのか。

計画昼寝 PowerSiesta Ver.0.3

| コメント(0) | トラックバック(0)
節電効果と暖かくなったことから、計画停電が基本的には終了したようです。

喜ぶべきとはいえ出遅れたことになりますが、試作していた停電回避ツールを公開します。停電を検出して、計画停電終了と同時にレジュームする、というものです。

計画昼寝 PowerSiesta Ver.0.3
PowerSiesta0.3.zip

アプリケーションのアイコンは素材屋レトロさんから拝借しました。

起動するとタスクトレイに電球アイコンが入ります。アイコンの右クリックでメニューが出るので、まずは「設定」から、Windowsのアカウントとパスワードを設定してください。

アカウント・パスワードはタスクの登録に使います。「スリープを解除」のタスクでレジュームするためです。

PowerSiesta.datファイルが計画停電のタイムテーブルです。添付は第2グループで、見てわかると思いますが、一行目が開始日、以後が時間帯。
開始日をずらせば他のグループに対応できます。

デフォルトでは1分間隔で電源状態を監視し、5回連続でバッテリー駆動となった場合にレジューム用タスクを登録します。
また計画外の停電があった場合、1時間後にレジュームします。
レジューム後にまだ停電中だった場合、計画外としての検出ロジックが再度動作するので、1時間ずつスリープすることになります。

「自前でスリープ」がONの場合、レジューム予約と同時にスリープに入ります。
OFFの場合、Windowsの電源オプションの方でスリープさせる必要があります。

レジューム予約は複数は入りません。
メニューから手動でのレジューム予約をすることもできます。ラジオの録音のために使っていたりします。

そんな感じのものです。ソースコード付き。

VC++2010のsln

| コメント(0) | トラックバック(0)
仕事でもらったVisual C++ 2010 ExpressのslnファイルをダブルクリックしてもVisual Studio 2010 Professionalから開けないので試行錯誤したところ、UTF-8のBOMがないと受け付けられないとわかりました。

Version Selectorは共通でしょうから、ExpressだからといってBOMがないとは思えないので、何かの手違いでしょうが。

VS2010と愉快な仲間たち

| コメント(0) | トラックバック(0)
入れたのは純粋にVisual C++だけ(ヘルプも無し)ですが、Visual Studio 2010 Professional (評価版)をインストールした時に入るソフト一覧を記しておきます。

Dotfuscator Software Services - Community Edition - JPN
Microsoft .NET Framework 4 Client Profile
Microsoft .NET Framework 4 Client Profile Language Pack - 日本語
Microsoft .NET Framework 4 Extended
Microsoft .NET Framework 4 Extended Language Pack - 日本語
Microsoft .NET Framework 4 Multi-Targeting Pack
Microsoft Help Viewer 1.0
Microsoft SQL Server 2008 R2 Data-Tier Application Project
Microsoft SQL Server 2008 R2 Transact-SQL Language Service
Microsoft SQL Server 2008 R2 データ層アプリケーションフレームワーク
Microsoft SQL Server 2008 R2 管理オブジェクト
Microsoft SQL Server Compact 3.5 SP2 JPN
Microsoft SQL Server Database Publishing Wizard 1.4
Microsoft SQL Server System CLR Types
Microsoft Team Foundation Server 2010 オブジェクト モデル - 日本語
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4974
Microsoft Visual C++ 2010 x86 Runtime - 10.0.30319
Microsoft Visual Studio 2010 Professional - 日本語
Microsoft Visual Studio 2010 Tools for Office Runtime (x86)
Microsoft Visual Studio 2010 Tools for Office Runtime (x86) Language Pack - 日本語
Microsoft Visual Studio Macro Tools
Microsoft Visual Studio Macro Tools - JPN Language Pack

最低でもこれだけは入ってしまいます。
<<前のページへ 12345678

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ