Program.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Windows;
4 using System.Windows.Forms;
5 using System.ComponentModel;
6 using System.Diagnostics;
7 using sage.ew.global;
8 using sage.ew.netvfp;
9 using sage.ew.ewbase;
10 using sage.ew.functions;
11 using System.Threading;
12 using System.Reflection;
13 
14 namespace sage.ew
15 {
16  static class Program
17  {
21 
22  #region Private constants
23 
24  public static char SEPARADOR = '|';
25 
26  #endregion Private constants
27 
28  [STAThread]
29  static void Main(string[] tcArgs)
30  {
31  if (tcArgs == null)
32  {
33  // No se han pasado parametros al EXE
34  }
35  else
36  {
37  // Obtenemos cadena con los parámetros
38  string lcParametros = tcArgs[0];
39 
40  // Obtenemos el identificador de VFP (primer parámetro)
41  int lnPos = lcParametros.IndexOf(SEPARADOR);
42  long lnHandle = Convert.ToInt32(lcParametros.Substring(0, lnPos));
43 
44  if (lnHandle <= 0)
45  return;
46 
47  // Definimos en el objeto global el identificador de la ventana de VFP con la que nos comunicamos
48  EW_GLOBAL._nHandleVfp = lnHandle;
49 
50 
51  // Quitamos el primer parámetro(identificador) para estandarizar la cadena de parámetros a la utilizada en los mensajes
52  lcParametros = lcParametros.Substring(lnPos + 1);
53 
54  try
55  {
56  //PE-87300 Cargamos la libreria para que no de errores al exportar a Excel (licencia SyncFucion)
57  Assembly.Load("Sage.Reporting.Engine, Version=1.0.0.5, Culture=neutral, PublicKeyToken=0a4a2ad97614f98d");
58 
59  // Cargamos los parámetros en el diccionario _Parametros
60  if (NETVFP._ObtenerParametros(lcParametros))
61  {
62  // Inicio temas visuales
63  Application.EnableVisualStyles();
64  Application.SetCompatibleTextRenderingDefault(false);
65 
66  // Definimos objeto para capturar mensajes de Windows
68  Application.AddMessageFilter(lst);
69 
70  // Obtener nombre del formulario a cargar
71  string lcLibreria = EW_GLOBAL._GetVariable("libreria").ToString().Trim();
72  string lcForm = EW_GLOBAL._GetVariable("formulario").ToString().Trim();
73  string lcOpcion = EW_GLOBAL._GetVariable("opcion").ToString().Trim();
74  string lcPropiedad = EW_GLOBAL._GetVariable("propiedad").ToString().Trim(); // PE-86711
75 
76  // PE-80961. Verificamos si queremos debugar
77  string lcPathIni = EW_GLOBAL._GetVariable("wc_pathinicio").ToString().Trim();
78  if (!string.IsNullOrWhiteSpace(lcPathIni))
79  {
80  string lcDebug = FUNCTIONS.LeerConfigIni("[DEBUG_SAGETPV]", lcPathIni).Trim().ToUpper();
81  if (lcDebug == "SI")
82  MessageBox.Show("Asocie el proceso 'sage.ew.exe' desde el depurador de Visual Studio", "Depurar", MessageBoxButtons.OK, MessageBoxIcon.Information);
83  }
84  // FI PE-80961
85 
86  // PE-93758. Obtención del formulario de net a ejecutar.
87  dynamic loForm = FUNCTIONS._Obtener_Formulario_Net(lcLibreria, lcForm, lcPropiedad, lcOpcion, null, lnHandle);
88  if (loForm != null)
89  Application.Run(loForm);
90  }
91  }
92  catch (Exception toEx)
93  {
94  MessageBox.Show(toEx.Message);
95  }
96 
97  }
98 
99  }
100  }
101 
102 }
Clase que captura y filtra mensajes de Windows (Capturar eventos).