2007年12月15日

予定?

 う〜ん、今日も特に何もしてないです。orz

 明日こそは昨日書いた不具合の修正を済ませてバージョンアップさせたいと思います。
 今の予定では、「MP3再生君」をやるつもりです。
ランキングへ  posted by 遠雷 at 00:24 | コメント(0) | パソコン・インターネット

2007年12月14日

DDE起動のバグ

 今日は、タイトルの通りDDE起動にバグが見つかりました。バッド(下向き矢印)

 ここでDDE起動とは、特定の拡張子を特定のソフトに関連付けし、エクスプローラーなどからダブルクリックや開くなどで起動させることで、この情報はレジストリの記録されています。

 具体的にどこがおかしいのかというと、起動させるファイルのパス名に半角スペースが入っていると、その半角スペース部分でファイル名が途切れ、存在しないファイルになってしまい、そのファイルを読み込めないのです。

 結局どこが悪かったのかというと、レジストリに記録するときに、ファイルパスを「””」でくくるようにしていなかったのが原因でした。
 これは、コマンドラインのことが解る人なら知っていると思いますが、引数を複数付ける場合は間に半角スペースを入れなければならず、引数の中に半角スペースがある場合は「””」でくくらなければならない、という決まりがあるのです。

 次に、どのように間違えていたかというと、プログラム上で文字列は「””」でくくらなければならず、文字の「”」は「\"」としなければなりません。
 しかし、今回していたミスは、ソース上で「””」としていて、レジストリに記録されるのも「””」でくくられると勘違いしていたためです。
 本当は「"\"\""」としなければいけなかったのです。
 ここで、何故今まで気付かなかったのかというと、単純に半角スペースが入るファイルを扱っていなかった、ということです。

 という訳で、関連付けをするソフト全般で修正をしなければならなくなりました。
 今回の修正のついでに他のこともやろうと思うので、順次修正、公開していきたいと思います。

 次に今日の気になる検索フレーズですが、「ウィンドウ最大化で起動する」というのがありました。
 これは、MFCのメインフレームのことだと仮定すると、CXXXAppのInitInstance内で、ProcessShellCommand(cmdInfo)の前で、m_nCmdShowをSW_SHOWMAXIMIZEDにして、m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED)とすれば最初から最大化されて作成され、表示されます。
 m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED)だけだと、通常サイズで作成され、表示のときに最大化されるので少し変な感じになります。
 ユーザー側でそうしたい場合、ソフトが対応していないと難しいでしょう。

 あれ?何か以前にもこんなことを書いたような気が・・・。
ランキングへ  posted by 遠雷 at 00:54 | コメント(0) | パソコン・インターネット