Fasie7 Ver.1.15リリース
ツイートいくつかの修正と仕様変更
1.特定アプリケーション(MS-Access)が動かなくなる問題を修正
2.ファイルのプロパティの「以前のバージョン」タブでFasie7ツールバーが出る問題を修正
3.ツールバー上のファイル削除コマンド内の「シュレッダ削除」または「完全削除」を行うと、クラッシュする問題を修正(ファイル選択をしているとクラッシュする)
4.ツールバー上のコピー(移動)コマンドの「同名ファイル処理タブ」内のデフォルトの操作である「上書きする」を「問い合わせる」に変更。
fse7115setup.exe 846 KB (866,338 バイト) 2013年1月16日、16:45:18
右側のリンクからダウンロードしてください
1番目の問題は、今日まで悩まされ続けたやっかいなもので、結局これもCOMの作法に間違いがあったと言うことです。問題のコードはApplicationVerifierではエラー報告が出ないしこれを書いている数時間前までは何が何だが全くわかりませんでした。
この問題の原因は終了処理においての問題で、UIオートメーションのイベントインターフェイスのデストラクタの中にイベント関連の設定を解除するAPIを使用すると、なぜかMS-Accessが止まってしまうのです。
UIオートメーションを動かしているスレッドは、フック関数に直接関係ないコードで、MS-Accessの各種ウィンドウメッセージがFaise7が取り込んでしまったからという問題ではないのは明らかでした。
なのに、このスレッドを動かすとMS-Accessがフリーズしてしまう。何度かうまくいったと思ってもちょっと書き換えると又おかしくなる。本当に訳がわからない問題でしたし、今でも直接的原因は不明です。ただ、前述の通り、終了処理をイベントインターフェイスのデストラクタ内でやるのを、呼び出し側のクラスで行うと問題が回避できることが判明したので今回リリースしました。
COMの作法は本当に参ります。サンプルコード通りにやらないとすぐにおかしくなる。内部がどうなっているかどうか不明なので何でおかしいのか推測がつかない。動的確保したポインタ変数をやりとりするのでバグが起きやすい。
私は可読性向上とバグの未然の防止のために特に動的確保したポインタ変数を晒したコードはクラスにくるんで見せないようにするのですが、それが仇になったようです。とにかくCOMはバグが起きやすい仕様だ。
2番目はエクスプローラもしくはファイルダイアログの認識方法をより厳しくしました。
3番目の問題はフォルダ選択の場合問題ありませんが、ファイル選択の場合はクラッシュします。ファイル選択だけしてテストしていなかったのが原因です。
4番目はデフォルトの同名ファイル処理をエクスプローラのコピー(または移動)のときと同じにしたと言うことです。以前の問答無用の上書きは使っていて問題があると思いましたので。問い合わせダイアログが出ても、ご存じのとおり、その後の同名ファイル処理の処理方法を一度指定すれば後は何も操作しなくて済みますので、ほとんどデフォルトのままで問題ない場合がほとんどでしょう。
Posted: 2013 年 1月 16 日, カテゴリー Fasie7.