右クリックのターゲットがショートカットの場合、ContextMenu の実装で選択したファイルのリストを取得するのが困難です。グローバル メモリ ハンドルは、ショートカット項目のみを含むリストを返し、選択した他の項目を認識していないようです。
Notepad++、WinRar、UltraEdit など、多くのサード パーティ製アプリでもこの動作に気付きました。
右クリックの対象がショートカットの場合、選択したファイルのリストを取得する正しい方法は何ですか? これは、エクスプローラーに組み込まれているファイル圧縮機能の問題ではありません (右クリック > 送信先 > 圧縮された zip フォルダー)。
編集:これは私の現在の方法の小さなスニペットです。pida->cidl
ターゲットがショートカットの場合は 1 になります。それ以外の場合は、選択したアイテムの正しい数です。
CStgMedium me;
pDataObj->GetData(&fe, &me);
LPIDA pida = reinterpret_cast<LPIDA>(me.hGlobal);
for(UINT i = 0; i < pida->cidl; i++) {
...
}