Foros del Web » Programación para mayores de 30 ;) » .NET »

Abrir archivo en programa abierto

Estas en el tema de Abrir archivo en programa abierto en el foro de .NET en Foros del Web. Hola a todos! Tengo un pequeño sistema de reporteo, en el cual claro guardo mis reportes generados en un archivo con extension propia. Actualmente tengo ...
  #1 (permalink)  
Antiguo 13/07/2012, 13:04
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 14
Abrir archivo en programa abierto

Hola a todos!


Tengo un pequeño sistema de reporteo, en el cual claro guardo mis reportes generados en un archivo con extension propia. Actualmente tengo el sistema para que se abra el reporte y se abra el sistema y lo cargue automaticamente.

Me gustaría hacer que si el programa ya está abierto, cargue el reporte al abrirlo (no desde el sistema, sino desde la carpeta). El sistema solo puede tener 1 instancia abierta, por lo que me gustaría que al abrir el reporte, se abra en el sistema.


Sé que con la instrucción

My.Application.CommandLineArgs(0)

Obtengo la ruta del archivo... pero qué evento se presenta cuando tengo abierto el sistema y ejecuto el archivo?

Espero haberme dado a entender, Gracias!
  #2 (permalink)  
Antiguo 13/07/2012, 14:20
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Abrir archivo en programa abierto

Mira yo hice una solucion hace tiempo para esto, tu debes trabajar aqui con regedit

Pongo un ejemplo

Código Regedit:
Ver original
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\.myextension]
  4.  
  5. [HKEY_CLASSES_ROOT\.myextension\DefaultIcon]
  6. @="C:\\myicono.ico"
  7.  
  8. [HKEY_CLASSES_ROOT\.myextension\shell\Open\Command]
  9. @="C:\myprograma.exe"

debes guardar esto como un archivo de tipo .reg y ejecutarlo, puedes también hacerlo desde tu misma aplicación ya teniendo los valores del regedit
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 13/07/2012, 16:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 14
Respuesta: Abrir archivo en programa abierto

Pero esto es para asociar el tipo de archivo al programa no?

Eso ya lo tengo resuelto, mi detalle es que cuando yo abro el programa manualmente, (sin reporte, solo abierto) y abro un reporte en la carpeta... el foco se va al programa, pero no lo carga obviamente debido a que aún no sé como programar eso...


Si yo tengo el sistema cerrado, y abro el reporte en la carpeta, se abre el sistema y carga el reporte, debido a que esa parte ya la resolví...

me doy a entender con las diferencias??
Gracias por responder
  #4 (permalink)  
Antiguo 13/07/2012, 16:41
Avatar de JxDarkAngel  
Fecha de Ingreso: septiembre-2009
Mensajes: 82
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: Abrir archivo en programa abierto

mm ese archivo que tu generaras con tu propia extension. ¿Es un objeto serializado?

Ese archivo ¿tu mismo lo generaras con código? o lo genera un control propio la aplicacion que ocupas para programar

Si tu mismo generas ese archivo, tu debes de poder deserealizarlo y convertirlo a un objeto que pueda entender tu programa


Por ejemplo yo puedo generar un objeto del tipo de la clase csPersona.cs y ese mismo convertirlo en un archivo (C:\MisDatos.Jx)

Al momento de jalar ese archivo con mi programa tengo una funcion que me permite transformar ese archivo de nuevo al OBJETO del tipo csPersona.cs. Al hacer esto yo ya puedo vaciar su contenido en mi formulario.

Necesito saber si es algo similar a como tu lo estas haciendo, de ser asi poder pasarte la funcion que permite transformar Archivo y de ARCHIVO a un objeto
  #5 (permalink)  
Antiguo 13/07/2012, 16:51
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 14
Respuesta: Abrir archivo en programa abierto

básicamente me ayuda una herramienta para meterle el código al archivo, pero yo lo encripto y lo utilizo

no he manejado los objetos serializados como me lo comentas...

pero como leo ese objeto? esa es mi pregunta, cuando ya tengo abierto mi programa, como leo si un archivo quiere abrirse? veo que el programa toma foco, pero ya no hace nada debido a que no le programe eso,

es como si le hiciera click a un botón sin ponerle código en su evento Click... es decir, veo que el botón se presiona, pero no hace nada porque no le programé nada
  #6 (permalink)  
Antiguo 13/07/2012, 17:05
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: Abrir archivo en programa abierto

Para esto debes realizar una SingleInstanceApplication

Ejemplo de como debes hacerlo

Con este código no importa si tienes abierto tu programa solamente estará permitido una sola instancia de tu aplicación y podrás recibir los parámetros como lo deseas

Código C#:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Forms;
  5. using System.Threading;
  6. using Microsoft.VisualBasic.ApplicationServices;
  7.  
  8. namespace Demo
  9. {
  10.     static class Program
  11.     {
  12.         /// <summary>
  13.         /// Punto de entrada principal para la aplicación.
  14.         /// </summary>
  15.         [STAThread]
  16.         static void Main(string[] args)
  17.         {
  18.             Application.EnableVisualStyles();
  19.             Application.SetCompatibleTextRenderingDefault(false);
  20.             SingleInstanceApplication.Run(new Form1(), StartupNextInstanceEventHandler); // Aqui pones tu formulario
  21.         }
  22.  
  23.         public static void StartupNextInstanceEventHandler(object sender, StartupNextInstanceEventArgs e)
  24.         {
  25.             if (e.CommandLine.Count > 0)
  26.             {
  27.                 MessageBox.Show(e.CommandLine[1]); //No se pone indice 0 ya que corresponde al nombre de la aplicacion, a partir del 1 comienza los parametros
  28.                // Aca haces lo que quieras al tomar la ruta de tu archivo
  29.             }
  30.         }
  31.     }
  32.  
  33.     public class SingleInstanceApplication : WindowsFormsApplicationBase
  34.     {
  35.         private SingleInstanceApplication()
  36.         {
  37.             base.IsSingleInstance = true;
  38.         }
  39.  
  40.         public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
  41.         {
  42.             SingleInstanceApplication app = new SingleInstanceApplication();
  43.             app.MainForm = f;
  44.             app.StartupNextInstance += startupHandler;
  45.             app.Run(Environment.GetCommandLineArgs());
  46.         }
  47.     }
  48. }
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #7 (permalink)  
Antiguo 13/07/2012, 18:15
 
Fecha de Ingreso: octubre-2011
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 14
Respuesta: Abrir archivo en programa abierto

Muchísimas gracias Dradi7.!

Fue sencillo.! ya tenía la parte para iniciar sólo una instancia del programa, por lo que sólo agregué el procedimiento OnStartupNextInstance(que no lo conocía ni lo ví) y ahí coloqué el código que necesito para cargar mi archivo


Gracias de nuevo

Etiquetas: asociar, extension, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:23.