Shell Extension のデバッグ
ここ 1ヶ月位,共通のコードを分割したり,古いままの部分を改良したりしていた.
ある程度区切りがついたので,ツール関係のプロジェクトからビルドして exe はできる様になった.
それぞれの動作チェックはこれから.
昨日新しいコードでビルドしたものに,「シェルエクステンション」のものがある.
新しいものに置き換えて PC を操作していると,エクスプローラがうまく動作しない.ダウンする.
他の exe で実行しても同様で,イベントビューアを見ると次の様になっている.
障害が発生しているアプリケーション名: DImg.exe、バージョン: 1.0.0.1、タイム スタンプ: 0x4b5822a3
障害が発生しているモジュール名: iShelExt.dll、バージョン: 1.55.2024.8、タイム スタンプ: 0x6751c1dc
例外コード: 0xc000041d
障害オフセット: 0x0004aadc
障害が発生しているプロセス ID: 0x5054
障害が発生しているアプリケーションの開始時刻: 0x01db477a20d02f17
障害が発生しているアプリケーション パス: L:\Document\Develop\Debug\ShellExt\DImg\Release\DImg.exe
障害が発生しているモジュール パス: C:\Users\Public\Documents\Tools\i_Tools\Test\iShelExt.dll
レポート ID: c898b214-2c4e-4701-8c17-27d414c106fb
障害が発生しているパッケージの完全な名前:
障害が発生しているパッケージに関連するアプリケーション ID:
シェルエクステンションでの表示データを求める部分を直接呼出している単体テスト用 exe では問題ない.
これは予想通り.
「開く」ダイアログでシェルエクステンションのテストができるのでコンソール AP を作成.
https://itl.mish.work/i_Tools/Doc/blog/vc/c_sxt.zip
VC 2022 の「デバッグ」-「コマンドライン」で …\c_sxt.exe を指定.
__targv がうまくなかった.DLL の場合は NULL になる?
次の様に修正.
#ifdef _MSC_VER
{
if (G_arg.size() == 0) {
// ::reg_argv(__argc,__targv) ;
if (__targv != NULL) {
for (int index=0 ; index<__argc ; index++) {
tstring av = __targv[index] ;
G_arg.push_back(av) ;
}
}
}
}
#endif