Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema se organiza de la siguiente manera:
- Procedimientos recomendados
- Procedimientos recomendados para varios verbos de selección
- Temas relacionados
Procedimientos recomendados
Los verbos estáticos son los verbos más sencillos de implementar y proporcionan una funcionalidad rica. Le recomendamos encarecidamente que implemente un verbo mediante uno de los métodos de verbo estáticos.
Procedimientos recomendados para implementaciones de verbos
La lista siguiente representa los procedimientos recomendados para las implementaciones de verbos:
- Siempre elija el método verbal más sencillo que satisfaga sus necesidades.
- Use un método de verbo estático, si es posible.
- No realice operaciones de uso intensivo de recursos ni E/S en el subproceso de la interfaz de usuario. Tanto IShellExtInit::Initialize como IContextMenu::QueryContextMenu deben ser muy conservadores en el trabajo que realizan. IContextMenu::InvokeCommand debe realizarse en otro proceso o debe crear un nuevo hilo para evitar el bloqueo de la llamada.
- Prefijar los verbos con el nombre del proveedor de software independiente (ISV) como se indica a continuación,
ISVName.verb. El uso de nombres no calificados puede dar lugar a colisiones con varios ISV que eligieron el mismo nombre de verbo. - Use siempre un ProgID específico de la aplicación. Dado que algunos tipos de elementos no usan esta asignación, hay una necesidad de nombres específicos para cada proveedor.
- Posicione la interfaz de usuario en relación con el método de invocación, pero no se ejecute en el hilo del invocador.
- No acepte el valor devuelto S_OK para verbos canónicos pasados al método IContextMenu::InvokeCommand. Si lo hace, se producirá un fallo al intentar invocar la implementación real del verbo, y se devolverá un código de error para los verbos canónicos. Si no admite verbos canónicos, devuelve un error cuando se encuentra un valor HIWORD(lpVerb) distinto de cero.
- Evite el uso de rundll32.exe como host para su comando.
- Al implementar IContextMenu::QueryContextMenu , asegúrese de devolver el número de verbos que se han agregado al menú mediante el valor HRESULT mediante la macro ResultFromShort.
- Si se registra en una de las siguientes entradas de claves del Registro, tenga cuidado y asegúrese de registrar su controlador en el tipo más específico para reducir las posibles consecuencias no deseadas.
- HKEY_CLASSES_ROOT\*
- HKEY_CLASSES_ROOT\AllFileSystemObjects
- HKEY_CLASSES_ROOT\Folder
- HKEY_CLASSES_ROOT\Directory
- Establezca la tecla MayChangeDefaultMenu solo si prevé que es posible que tenga que cambiar el verbo predeterminado en el menú contextual. Si el controlador no cambia el verbo predeterminado, no debe establecer esta clave porque, al hacerlo, el sistema carga el archivo DLL innecesariamente.
- Minimice el trabajo que realice en IShellExtInit::Initialize. Para los controladores de menú contextual, capture el objeto de datos pasado a IShellExtInit::Initialize y, a continuación, procesándolo en IContextMenu::QueryContextMenu o IContextMenu::InvokeCommand.
Mejores prácticas para verbos de selección múltiple
Dado que el número de elementos en un escenario de selección múltiple de verbos puede ser grande, es importante tener en cuenta las implicaciones de rendimiento de las implementaciones de los verbos. Por ejemplo, cuando un usuario busca "*" en un ámbito que incluye un gran número de elementos y, a continuación, hace clic en Seleccionar todo y hace clic con el botón derecho, el verbo se presenta con una selección que puede tener miles de elementos en él. Como consecuencia, los verbos solo deben considerar el primer elemento de la selección y la cantidad total de elementos. El primer elemento se define como el elemento de la parte superior de la vista o el elemento en el que el usuario ha clic con el botón derecho por primera vez.
En Windows 7 y versiones posteriores, el número de elementos pasados a un verbo se limita a 16 cuando se consulta un menú contextual. A continuación, el verbo se vuelve a crear y se vuelve a inicializar con la selección completa cuando se invoca ese verbo.
Es adecuado en algunos casos tener en cuenta un pequeño número de elementos fijos. Por ejemplo, es adecuado que un verbo "diff" tenga en cuenta solo los dos primeros elementos. Por lo general, no es necesario probar todos los elementos de la selección para ver si es un tipo determinado o consultar todos los elementos de la selección para sus propiedades. Fíjese más bien en el primer elemento y decida si es apropiado agregar el verbo.
Selecciones heterogéneas
Los verbos optimistas se agregan automáticamente en el caso de selección múltiple, suponiendo que los elementos no inspeccionados puedan ser manejados por el verbo. Por el contrario, los verbos pesimistas no se agregan cuando la selección contiene elementos no especificados y solo se agregan en los casos en los que el número de elementos es pequeño.
Los verbos relacionados con el estilo del jugador deben ser optimistas y omitir silenciosamente los elementos que no son manejados. Si un error al actuar en los elementos puede causar pérdida de datos o confusión, el verbo debe advertir a los usuarios sobre los elementos que no se pueden procesar. Por ejemplo, un verbo "backup" debe indicar que no se pudo realizar una copia de seguridad de algunos elementos.
Temas relacionados
-
Personalización de un menú contextual mediante verbos dinámicos
-
Menús de acceso directo (contextuales) y controladores de menús de acceso directo