ShellExecute múltiples archivos

Me pregunto si es posible usar de alguna manera ShellExecute para abrir varios archivos a la vez utilizando el controlador de verbo predeterminado. Por ejemplo, si tengo varios archivos mp3 en una carpeta, puedo seleccionarlos todos, luego hacer clic derecho y seleccionar “Reproducir”. Esto mostrará una instancia de WMP (que es mi reproductor de mp3 predeterminado) y agregará todos los archivos que seleccioné a la lista de reproducción actual.

1) ¿Se logra esto usando algún comportamiento estandarizado de ShellExecute?

2) ¿O esto se hace determinando primero cuál es el progtwig predeterminado y luego suministrando la lista de archivos como argumentos para ese ejecutable?

Mi objective es poder tomar una lista de archivos y abrirlos usando el verbo predeterminado con el progtwig predeterminado (idealmente sin tener que buscar en el registro primero).

Es decir, el equivalente de esto, pero para múltiples archivos:

ShellExecute(NULL, NULL, the_file_to_open, NULL, NULL, SW_SHOWNORMAL); 

No, ShellExecute no puede hacer esto. En cambio, la forma de hacerlo es con IContextMenu .

Hablando en general:

  • Enlazar a la carpeta principal con SHBindToObject
  • Busque un menú contextual para los archivos en cuestión con IShellFolder::GetUIObjectOf
  • Inicialice el menú contextual con IContextMenu::QueryContextMenu , pasando el indicador CMF_DEFAULTONLY
  • Invoque el comando predeterminado con IContextMenu::InvokeCommand