¿Por qué solo los archivos con mi extensión de archivo aparecen en la lista de saltos de Windows 7?

StackOverflow https://stackoverflow.com/questions/5453545

  •  12-11-2019
  •  | 
  •  

Pregunta

Estoy tratando de integrar correctamente nuestra aplicación con las listas de saltos de Windows 7. Permitimos abrir archivos dentro de la aplicación y agregué este tiempo para agregar los elementos a la lista de saltos:

var list = JumpList.CreateJumpList()
list.AddToRecent(file);
list.Refresh();

Donde Jumplist es de la windowsapicodepack

Hubo dos problemas con este enfoque.

  1. Ocasionalmente, los usuarios obtendrían una excepción COMEXception en la llamada Actualizar () (incapaz de eliminar el archivo a reemplazar. (Excepción de Hresult: 0x80070497).
  2. El jumplist solo contendría archivos con la extensión de archivo de aplicaciones.

    Permitimos importar otros archivos en nuestra aplicación a través del método abierto y quiero que estos archivos también aparezcan en la lista de saltos, pero no lo hacen.

    Retrocedioné a través de las preguntas con respecto a Jumplists aquí y encontré una forma diferente de agregar archivos utilizados recientemente en este Respuesta :

        void AddFileToRecentFilesList(string fileName)
        {
            SHAddToRecentDocs((uint)ShellAddRecentDocs.SHARD_PATHW, fileName);          
        }
    
        /// <summary>
        /// Native call to add the file to windows' recent file list
        /// </summary>
        /// <param name="uFlags">Always use (uint)ShellAddRecentDocs.SHARD_PATHW</param>
        /// <param name="pv">path to file</param>
        [DllImport("shell32.dll")]
        public static extern void SHAddToRecentDocs(UInt32 uFlags,
            [MarshalAs(UnmanagedType.LPWStr)] String pv);
    
        enum ShellAddRecentDocs
        {
            SHARD_PIDL = 0x00000001,
            SHARD_PATHA = 0x00000002,
            SHARD_PATHW = 0x00000003
        }
    

    Esto parecía más apropiado ya que también está compatible con XP, Vista: el problema es que el jumplist todavía contiene archivos con mi extensión de archivo asociada.

    Tengo dos preguntas:

    1. ¿Cuál es la mejor manera de agregar artículos a la lista de saltos?
    2. ¿Cómo obtengo algún archivo para aparecer en mi lista de saltos, independientemente de la extensión de archivo?
¿Fue útil?

Solución

de msdn :

Una aplicación debe ser registrada Handler para un tipo de archivo para un artículo de Ese tipo para aparecer en su lista de saltos. Sin embargo, no necesita ser el Handler predeterminado para ese tipo de archivo

Por lo tanto, debe agregar Registrarse con cada tipo de archivo que le interese, ya sea agregando un verbo al progid o posiblemente simplemente agregue su nombre progID o EXE a OpenWithProgids o OpenWithlist (HKCR \%. Ext% \ OpenWITHPROGIDS)

El hecho de que Windows requiera esto es un poco estúpido imho, pero supongo que necesitan saber cómo pasar la ruta del archivo a su aplicación cuando haga clic en un elemento de la lista de saltos.

shaddtorecentdocs tiene más tipos de parámetros de los que ha enumerado, los docs para ShardAppidinFolink no dice si necesita estar registrado en cualquier lugar para que funcione para que pueda intentarlo en lugar de agregar una ruta básica ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top