2010-03-12 8 views
7

Tengo una aplicación .NET ejecutándose en Windows. Quiero hacer clic en algún elemento de la página (aplicación de enlace de botón de botón, etc.) para iniciar mi aplicación con algunos parámetros especiales. (Debe ejecutarse no solo en IE, sino también en navegadores de Windows basados ​​en WebKit). Durante la instalación de la aplicación, suponemos que el usuario es Administrador y ejecuta Vista o Windows 7 o posterior.¿Cómo hacer que WebKit o IE llamen a su aplicación (.NET) desde la página HTML abierta en el navegador?

Así que mi pregunta es - ¿Dónde obtener ejemplos de dicha interacción (con fuente de curso)?

Entonces, ¿cómo hacer que el navegador basado en WebKit o IE llame a su aplicación .Net?

Respuesta

11

Register a custom URL Protocol Handler. A continuación, puede especificar el URL usando enlaces, etc.:

<a href="myapp://doSomething/>Click to run my app!</a> 


puedo confirmar que esto funciona en todas las versiones de Internet Explorer. También lo probé en las últimas versiones de Firefox (3.6) y Chrome (cuya versión se me escapa). Chrome no le permitirá ingresar un protocolo personalizado en la barra de direcciones, pero lanzará aplicaciones desde enlaces utilizando protocolos personalizados.

Si tiene Adobe Reader instalado, se registra el protocolo acrobat://. Desafortunadamente, SO no permite enlaces utilizando protocolos personalizados, por lo que no puedo agregar un ejemplo aquí, me temo.

+0

¿Su enlace funciona tanto para IE como para WebKit? –

+0

@AndyE: Por cierto, irónicamente, el enlace de arriba no se muestra en FF 3.5. Funciona en IE 8. –

+0

@ John Saunders: eso es raro. Recuerdo un artículo que detalla un exploit de seguridad (ahora corregido) basado en cómo Safari (WebKit) maneja protocolos url personalizados, pero parece que no puedo encontrarlo ahora. –

0

Teniendo en cuenta que la aplicación se ejecute, y el navegador, son a la vez se ejecuta en Windows, un registered protocol handler es el mejor camino a seguir, asumiendo todos los navegadores soportan interesantes. Teniendo en cuenta que el enlace de arriba es de la documentación de MSDN en Internet Explorer Development, me imagino que algunos navegadores pueden no querer apoyar este mecanismo.

+0

¿Cómo se carga Steam o iTunes desde la URL? –

+0

@Alastair: según http: // stackoverflow.com/questions/2429770/how-to-make-webkit-or-ie-call-your-application-net-from-html-page-opened-in-br/2429792 # 2429792, registran un manejador de protocolo. Solo sugiero que me registre como la aplicación de inicio para una extensión de archivo, que creo que sería más liviana. –

+0

Pero menos intuitivo. El usuario todavía tiene que ejecutar el archivo para iniciar su programa. –

0

Sugeriría que la única forma de hacerlo es haciendo una vuelta al servidor. La página web activa algo en el servidor. La aplicación también está conectada al servidor. Creo que es irrazonable hacerlo de otra manera. Si quiere ensuciarse mucho, es posible utilizar LocalConnection de Flash (que utiliza un archivo asignado a la memoria para la comunicación) para chatear con una aplicación .net. Darron Schall lo ha logrado (pero no se comparte).

Si requiere una aplicación, ¿para qué molestarse con una página web?

3

No puede tener un navegador basado en Webkit para abrir una aplicación directamente. Su mejor esperanza (y lo que hace Apple para abrir iTunes Store) sería que su aplicación .NET se registre para abrir ciertos tipos de URL, use un enlace que apunte a una URL de este tipo.

Por ejemplo, si su aplicación puede abrir myapp:// URL, podría utilizar el siguiente encabezado HTTP:

Location: myapp://mysettings 

o un enlace más convencional:

<a href="myapp://mysettings">Foo</a> 

Y a continuación, el navegador se encargará para abrir una aplicación que pueda manejar el esquema de URL myapp:// (en este caso, su aplicación).

0

Puede registrar un controlador de protocolo que apunte a su aplicación, luego tener un enlace que apunte a una URL con ese protocolo y los parámetros que necesite.

+0

¿Funciona esto para IE y WebKit? –

+0

Debería funcionar en cualquier navegador web compatible. Sé que funciona al menos en IE, Firefox y Chrome. –

+0

@Max: pero eso solo funcionaría en Windows, ¿verdad? Y, "conformarse" a qué? La capacidad de registrar un controlador de protocolo es específica de Windows, ¿no es así? ¿Todos los navegadores admiten esquemas de URL arbitrarios a través de manejadores de protocolo registrados? –

Cuestiones relacionadas