2011-08-10 30 views
5

¿Cómo puedo cambiar el orden de las entradas en el menú contextual? (Por ejemplo, para Directorios) Necesito saber cómo determina Windows el orden al mostrarlo para poder controlarlo. Por ejemplo, quiero colocar mi acción personalizada al final de la lista del menú contextualSolicitar en el menú contextual del Explorador de Windows

¡Gracias de antemano!

+0

@Christoph Grimmer-Dietrich, ¿y qué? ¿Encontraste una respuesta en google? Ok, solo dame el enlace. – ixSci

+0

Lo siento por el juego de palabras. Pensé que el segundo enlace (http://windowsxp.mvps.org/context_folders.htm) te ayudaría. –

Respuesta

7

Mi Google-fu me llevó a this:

Así que la clasificación se basa en los siguientes elementos en orden decisión:

  1. prioridad clave (por ejemplo, txtfile, *, AFSO)
  2. Registro Orden de enumeración de shellex \ contextmenuhandlers con un caso especial para verbos estáticos siendo siempre primeros
  3. IContextMenu Orden de implementación

Por lo tanto, si hay alguna disputa por la posición, no hay una forma consistente para que una extensión garantice su posición relativa dentro del menú.

Obviamente, no se puede hacer nada respecto a la fase 1. La fase 3 solo se aplica a los verbos implementados en su controlador. Eso deja la fase 2. Lo único que puede hacer es nombrar su entrada en ContextMenuHandlers de manera que se enumere primero, pero nada impide que otra persona haga lo mismo.

1

This Q&A muestra una forma simple de CREAR (no mover) un elemento en el menú contextual. Logré duplicar un artículo existente. Luego moví mi artículo a una posición más alta y más accesible dentro del menú contextual, al cambiar el nombre de la tecla para comenzar con algo "aMyItem" o "0MyItem".

2

Esto es para Windows 7, tal vez mismo para las versiones más recientes. Fue inspirado por las otras respuestas, todo está afectando el orden.

Estoy explicando las entradas para "*" (todos los archivos), pero lo mismo aplica para las extensiones especiales.

No asumo ninguna responsabilidad por los cambios realizados en el registro.

Hay tres secciones en el menú contextual, como se dice en How to Change the Order of Options in Context Menu (de answer by @Anonymouse)

Los llaman:

2 - Default menu position (at the top). 
1 - Send to, copy to folder and move to folder menu part (in the middle). 
0 - Rename menu part (at the bottom). 

Dentro de estas secciones de la posición se decide por las reglas de answer by @Luke
La forma más fácil de cambiar el orden dentro de la "sección" es cambiar el nombre de la clave de registro en HKCR-*-shell o HKCR-*-shellex. Todo debajo de la subclave shell estará delante de ellos bajo shellex. Las claves que tienen el CLSID como nombre de clave serán como la última entrada, ya que son las últimas en el orden utilizado.

Como ejemplo, estaba siguiendo un sample from MSDN to build a Context Menu Handler. Esto es usando el CLSID como el nombre de la clave bajo shellex, y un "nombre descriptivo" como valor predeterminado. Se colocó en la parte inferior de la "sección" 2 (sección superior). Cambié el nombre de la clave a algo así como Asample y cambié el valor predeterminado para ser el CLSID en su lugar. Ahora estaba directamente después de las entradas en shell.

Existen otras maneras de cambiar el orden.

Para las claves en shell puede agregar el valor Position con los datos de cadena Top o Bottom. No es posible decidir en qué "sección".

Para claves bajo shellex el valor Position no tiene ningún efecto. En cambio, es posible decidir en qué "sección" la entrada va a estar usando flags, described in the link arriba.

  1. Utilice la CLSID para la ShellExt que desea mover. Es como
    {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}. Obténgalo del nombre de la clave o del valor predeterminado, depende de cómo se realice la entrada.
  2. Busque la entrada en HKCR-CLSID, la clave tiene el nombre CLSID.
  3. Agregue un valor con el nombre flags y los datos DWORD con el número de "sección" descrito anteriormente bajo CLSID encontrado.
Cuestiones relacionadas