2011-05-12 10 views
5

Estoy desarrollando una aplicación en Windows usando vs2005 C++ y quiero asociar una extensión de archivo a la aplicación que puedo hacer en la configuración del registro. Sin embargo, cuando hago clic en el archivo, quiero asociarlo con una instancia en ejecución de mi aplicación y no iniciar una nueva. ¿Cómo puedo lograr este comportamiento?Asociar un tipo de archivo a una aplicación en ejecución

+0

+1. Buena pregunta. – Nawaz

Respuesta

1

No puedo darle una implementación en la parte superior de mi cabeza, pero mire algo que se llama "comunicación entre procesos" (generalmente usando COM si está en Windows). Lo que puede hacer es, cuando se inicia el programa, buscar otras copias de sí mismo, si encuentra uno, le dice a uno qué archivo quiere abrir y luego se cierra.

me encontré con una aplicación para usted:

http://www.flounder.com/nomultiples.htm

1

Esto solía hacerse con un parámetro de WinMain sino de msdn

un identificador de la instancia anterior de la aplicación. Este parámetro siempre es NULL. Si necesita detectar si ya existe otra instancia, cree un mutex con nombre único utilizando la función CreateMutex. CreateMutex tendrá éxito incluso si el mutex ya existe, pero la función devolverá ERROR_ALREADY_EXISTS. Esto indica que existe otra instancia de su aplicación, porque primero creó el mutex. Sin embargo, un usuario malintencionado puede crear este mutex antes de hacerlo e impedir que se inicie su aplicación. Para evitar esta situación, cree un mutex con nombre aleatorio y almacene el nombre de modo que solo pueda obtenerlo un usuario autorizado. Alternativamente, puede usar un archivo para este propósito. Para limitar su aplicación a una instancia por usuario, cree un archivo bloqueado en el directorio de perfil del usuario.

Cuestiones relacionadas