Mr.XRAYさん
plContextMenuを利用させていただいておりますが、
Win10環境で、isoファイル上でContextMenuを実行すると、
エラーが発生するため、調べてみましたのでご報告いたします。
Line 548 付近ですが、InfoをクリアしないままGetMenuItemInfoを
使用しており、エラーが発生するようです。
この現象は、isoファイルの場合、画像付きの「マウント」という
メニューが最後に処理されるため、Info.fType = MFT_BITMAPになっているケースです。
通常(Info.fType = MFT_MFT_STRING)は、クリアしなくても、エラーにならないようです。
修正前
//最後が区切り文字だったら削除
ItemCount := GetMenuItemCount(Handle);
GetMenuItemInfo(Handle, ItemCount - 1, True, Info);
修正後
//最後が区切り文字だったら削除
ItemCount := GetMenuItemCount(Handle);
FillChar(VerbName, SizeOf(VerbName), #0); // ★追加
Info.cbSize := SizeOf(Info); // ★追加
Info.fMask := MIIM_SUBMENU or MIIM_TYPE; // ★追加
info.dwTypeData := VerbName; // ★追加
Info.cch := Length(VerbName); // ★追加
GetMenuItemInfo(Handle, ItemCount - 1, True, Info);
としたほうが良さそうです。
|