Crear Menu Contextual Windows

Iniciado por rigorvzla, 22 Agosto 2018, 01:33 AM

0 Miembros y 2 Visitantes están viendo este tema.

rigorvzla

Hola Ray , en efecto me resulto gran parte de la respuesta que me diste, muchas gracias, logre ya asignar acciones distintas a cada extensión deacuerdo a mi programa y funciono muy bien, ahora lo que si no logro, es que por ejemplo, si existe una aplicacion que ya ha registrado .zip, mi aplicacion anque si la registra , no se muestra en el menu contextual. Es el unico problema que tengo con esto.

RayR

No sé si se esto es a lo que te refieras, pero si usas Windows 10, para que tu aplicación se muestre directamente en "Abrir con", tu ejecutable debe tener los metadatos requeridos, o de lo contrario, sólo se mostrará dentro del menú "Abrir con/Elegir otra aplicación".

Verifica que en el registro tengas estos valores:

Código (ini) [Seleccionar]
[HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache]
"ruta\\Nombre.exe.FriendlyAppName"="Mi aplicacion"
"ruta\\Nombre.exe.ApplicationCompany"="Nombre"


El primero seguramente exista, pero puede que el "ApplicationCompany" no, y si falta, eso bastaría para que no se muestre. Si es el caso, podrías agregarlo manualmente y ver. Sin embargo, sería sólo una solución temporal, ya que esos valores del registro a veces cambian entre versiones de Windows. La solución correcta es asegurarte de que el campo CompanyName se incluya en tu ejecutable, ya que de ahí, de los recursos del .exe, es de donde Windows saca esa información.

Si ése era el problema, con esto debería corregirse.

Por cierto, al modificar SystemFileAssociations, dado que estás modificando directamente las acciones del tipo de archivo, hay que ser cuidadoso con los nombres que elijas. Yo te puse sólo como ejemplo addtoplaylist, pero obviamente, con un nombre tan genérico se podría producir colisión con otras aplicaciones que escribieran ahí. En la práctica, un nombre más específico y único, tipo rigorvzlaPlayerAddtolist, sería lo recomendable.

Eleкtro

#32
Cita de: rigorvzla en  2 Diciembre 2019, 00:53 AM
Antes de crear un nuevo tema probare por aqui, quiero saludar a todos nuevamente , ya que hace ya tiempo que publique este post y me fue de mucha ayuda.

Eh comprendido un tanto el manejo del registro desde C#, pero no eh logrado comprender lo siguiente, a pesar de estar en la ruta CLASS\ROOT donde estan todas las extensiones de los archivos, algunas extensiones carecen de la carpeta "shell", apesar de crearla y agregarle el comando que quiero , no se muestra en el menu contextual y no entiendo por que, por ejemplo quiero hacerlo con la extensión .mkv y solo me muestra las carpetas (OpenWithProgIds, ShellEx) y haga lo que haga creando manualmente la carpeta "shell" no funciona.

Si hay una clave de asocicación presente, esta toma prioridad. En esos casos debes añadir tus cosas (los nuevos comandos) a dicha clave, en mi caso "HKCR\SMPlayer.MKV\Shell", ejemplo visual:



Y por encima de la clave 'HKCR\.mkv\Shell' y la clave de asociación 'HKCR\SMPlayer.MKV\Shell', la clave 'HKCR\SystemFileAssociations\.mkv\Shell' toma prioridad. Así que siempre que puedas usa esta clave para asegurar que tus comandos estarán presentes en el menú contextual del tipo de archivo en cuestión.

Un ejemplo:

(son menús en cascada, pero por supuesto puedes añadir comandos simples de la forma habitual como en la clave 'HKCR\.mkv\Shell' y la otra)

Saludos.








rigorvzla

Gracias elektro esta muy buena la explicacion, el detalle es que no encuentro en mi registro dicha clave SystemFileAssociations y no entiendo si lo busco donde me dices. hay algo q esta mal?

Eleкtro

#34
Cita de: rigorvzla en 18 Diciembre 2019, 02:14 AMhay algo q esta mal?

Ahora mismo no recuerdo ni puedo comprobar en que versión de Windows se introdujo esa clave del registro, pero debe ser eso, tu versión de Windows. En Windows 10 debes tenerla sí o si ya que hay asociaciones por defecto al instalar el sistema operativo, en Windows 8/8.1 yo juraría que también, en Windows 7, Vista o XP y anteriores ni me acuerdo ni me importa.

Saludos








rigorvzla

Uso windows 10 , buscare con detalle a ver. Gracias