' /** ' --------------------------------------------- ' [- (A) Contenido -] ' --------------------------------------------- ' [- Versión -] = 23.10.22.1459. ' [- Nombre Clase -] = LanzarLinkProcessStartCommand. ' ------------- ' [- Descripción -] = ' Esta clase esta diseñada para lanzar una dirección Url en el ' navegador por defecto instalado en el sistema operativo. ' ------------- ' [- Observaciones -] = ' ' --------------------------------------------------- ' Hereda de la clase [DelegateCommand] ' Es heredada por la clase hija (derivada) [LanzarLinkProcessStartCqs] ' ' --------------------------------------------------- ' Con la actualización de Net 7.0 algunas instrucciones no funcionan ' como lo hacían antes de la actualización, una de ellas es [Process.Start] ' He tenido problemas con la clase “vieja” que usaba [Process.Start] para lanzar una Url. ' ' Un ejemplo: En Net 7.0 No funciona una instrucción del tipo: ' Process.Start("https://www.youtube.com/watch?v=P5tW-_TeC9c") ' A pesar de que la documentación de Microsoft sigue mostrando es sus ejemplos que si que funciona. ' ' Después de mirar muchas web, al final he encontrado el problema, que consiste ' en que Microsoft ha cambiado el comportamiento de [Process.Start]. ' Parece ser que el objetivo es que se comporte igual en Net.7.0 y en Net.Core. ' Y también he dado con la solución, que consiste en usar la ' propiedad [UseShellExecute = True] y en usar la propiedad [FileName] ' en lugar de la propiedad [Arguments]. ' ' --------------------------------------------------- ' A modo de historia de las clases anteriores ' Esta clase hay que COPIARLA en el ensamblado en la que se usa ' ' Desde [23/02/2007] hasta [23/11/2012] he tenido una clase llamada [LanzarLink] ' que contenía juntas varias funcionalidades que he separado en clases diferentes ' Tienen el prefijo Wpf porque se pueden usare en proyectos dll, Forms y Wpf ' Concretamente las nuevas clases son: ' - [WpfLanzarCalculadora] ' - [WpfLanzarNotepad] ' - [LanzarLinkProcessStartCommand] ' - [LanzarLinkProcessStartCqs] ' - [WpfLanzarNavegador] ' ' Mi clase [WpfMenuMisHerramientas] utiliza las anteriores porque ' habitualmente las incluyo en mis menus Herramientas ' --------------------------------------------------- ' ' ------------- ' [- Bibliografía -] = ' ProcessStartInfo.UseShellExecute Property ' https://learn.microsoft.com/en-au/dotnet/api/system.diagnostics.processstartinfo.useshellexecute?view=net-7.0. ' ------------- ' [- CodigoEjemplo -] = ' --------------------------------------------- ' El código básico es el siguiente: ' Using proceso As New System.Diagnostics.Process ' With proceso ' ' ------------ ' ' OJO - NO USAR - DA PROBLEMAS ' '.StartInfo.Arguments = "www.northwindtraders.com" ' ' ------------ ' .StartInfo.FileName = "http://www.microsoft.es" ' .StartInfo.UseShellExecute = True ' OJO debe ser [True] ' .StartInfo.CreateNoWindow = True ' .Start() ' End With ' End Using. ' --------------------------------------------- ' Forma de uso ' ---- ' Código en el código XMAL de la ventana ' ' ---- ' 1) En la definición de la ventana hay que incluir el namespace de la clase ' xmlns:localUtil="clr-namespace:WpfPruebaStarPorcess.Util.Command" ' ---- ' 2) Hay que declarar en {Resources} el comando que se va a usar {LanzarLinkProcessStartCommand} ' También hay que darle un nombre que sera el que referencia en todo el código xaml, ' en este ejemplo es el indicado por {x:Key} es decir {WpfLanzarLinkCommando} ' ' ' ' Observación: también puede declararse en ' ---- ' ' 3) Código en el botón que lanza la url ' - El {Command}.......... Referencia a el comando ( esta clase) ' - El {CommandParameter}. Es el parámetro que se pasa al command, concretamente la direccion url '