JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Detectar la existencia de una instancia previa de nuestra aplicación

En Visual Basic "clásico" existía una propiedad del objeto App llamada PrevInstance que permitía averiguar de manera sencilla si ya se estaba ejecutando la aplicación actual, de forma que era inmediato evitar que se ejecutase dos veces el mismo programa. En .NET no existe nada similar pero es muy fácil simularlo gracias a la clase Process del espacio de nombres System.Diagnostics. El siguiente código permite conseguirlo:  private static bool PrevInstance() {      Process[] procesos = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);      return (procesos.Length > 1); } Lo que hace es buscar los procesos existentes que tengan el mismo nombre que el proceso actual. Si hay más de uno es que ya se está ejecutando la aplicación y por lo tanto podemos decidir no continuar. Existen otras técnicas para conseguir el mismo efecto (por ejemplo usando Mutexes o marcadores globales de este estilo que son mucho más seguros), pero este es sin duda el más sencillo y la mayo... [Más]

Cómo lanzar un proceso y recoger los resultados de su ejecución

Hay ocasiones en las que es necesario poder lanzar un programa de línea de comandos (o no) de modo silencioso para realizar una tarea y luego recoger de algún modo el resultado de su ejecución. Un caso típico es el envíod e archivos por FTP. FTP.exe es un ejecutable muy útil que viene con Windows y que permite enviar órdenes a un servidor de archivos meidante un archivo de comandos que se le pasa como parámetro. La siguiente función sirve para ejecutar cualquier programa con su ventana (de haberla) oculta, devolviendo el resultado de la ejecución (normalmente lo que aparecería en la línea de comandos) en una cadena. Si se produce un error se lanza una excepció que recoge los detalles enviados por el programa a la línea de comandos. Puede resultar muy útil. Es necesario incluir System.Diagnostics.  //Lanza un proceso con su ventana oculta y devuelve el resultado private static string lanzaProceso(string Proceso, string Parametros) {  ProcessStartInfo startInfo = new ProcessStartInfo... [Más]

Desarrollo con Mono más fácil que nunca

Mono es una implementación Open Source de la plataforma .NET qeu funciones en diversos sistemas operativos como Windows, Linux o MacOS. Monoppix es una distribución Linux basada en Knoppix que está especialmente pensada para facilitar el desarrollo con Mono. Lo bueno que tiene es que se trata de un LiveCD, es decir, que para usar Linux y Mono no tendrás que instalar absolutamente nada. Basta con grabar un CD y podrás arrancar el sistema sin afectar a lo que tengas instalado en el equipo. Muy interesante para aprender. La versión 1.0.6 que acaban de liberar incluye "de serie": Monodoc, mcs, Mono, libgdiplus, gtk-sharp 1.06 Xsp 1.0.8 Monodevelop 0.51 Cairo 0.2 Soporte de MySQL 4.1.7 El libro.Net in Samples en formato HTML Mejoras en los accesos directos que hay en el escritorio Los últimos parches de Monodevelop (por ejemplo ejecución directa de aplicaciones desde MonoDevelop) La página del proyecto es http://www.monoppix.com aunque curiosamente la de descarga está en... [Más]

Cómo averiguar en qué ensamblado se está ejecutando nuestro código

Hay ocasiones en las que creamos una biblioteca de funciones interesante y la compilamos como una DLL de .NET para su uso desde una o varias aplicaciones propias. Si, por el motivo que sea, no deseamos que este ensamblado se pueda utilizar desde aplicaciones ajena tenemos varias formas de hacerlo. La más sencilla tal vez sea la que nos permite averiguar cuál es el ensamblado (normalmente un ejecutable '.exe') que está haciendo uso de nuestro código y comprobar alguna propiedad del mismo para verificar que se trata de uno permitido. El código que nos permite averiguar el ensamblado actual desde el que se ejecuta un método es el siguiente: System.Reflection.Assembly.GetEntryAssembly() Con esto ya podemos comprobar las diversas propiedades del ensamblado para ver si cumple lo que nosotros deseamos, utilizando para ello las diferentes propiedades del objeto Assembly.  Por ejemplo, para aeriguar el nombre del ensamblado que está utilizando nuestro código basta con escribir: System... [Más]

campusMVP: la mejor formación sobre tecnología Microsoft

Mañana, en el transcurso del evento DeveloperDay 2005 de Microsoft en Madrid, presentamos oficialmente nuestro nuevo proyecto de formación continua on-line: campusMVP. campusMVP es una iniciativa de Krasis que aglutina a los mejores profesionales de habla hispana en un proyecto de formación. Todos los autores de los cursos son MVP de Microsoft (Most Valuable Professional). Se trata de un reconocimiento de ámbito mundial que el gigante del software concede cada año a los profesionales más destacados de entre 63 países y 70 tecnologías. Ofrecemos cursos cortos, especializados y asequibles que son la alternativa a la formación existente en el mercado. Están pensados para la auto-formación continua. Con ellos podrás mantenerte actualizado en las últimas tecnologías de la mano de los mejores. Y todo sin desplazarte de tu casa o de tu puesto de trabajo. Ahora, para el arranque, disponemos de los siguientes cursos, aunque iremos añadiendo más a lo largo de los meses: · Programación ASÍN... [Más]

Cómo averiguar la versión de la plataforma .NET

Las diferentes versiones de la plataforma .NET tienen diversas funcionalidades por lo que, cuando usemos algo específico de una determinada, resultaría de mucha utilidad comprobar al comienzo del programa la versión de .NET que esá ejecutando nuestro código. Una primera idea para conseguirlo podría ser cargar el ensamblado MSCorlib.dll y averiguar su versión al igual que se puede hacer con cualquier otro ensamblado propio. Posible pero complicado. La solución es mucho más fácil que todo eso y consiste simplemente en usar el objeto Environment así: Version v = System.Environment.Version; Con esto obtendremos la versión actual de la plataforma dentro de una clase Version. Podemos acceder a cada uno de los números de la versión usando las propiedades Major, Minor, Build y Revision de este objeto (por ejemplo, para ver si estamos usando la versión 1.1 de la plataforma deberemos comprobar que Major y Minor son 1), o la cadena completa con ToString(). La clase Environment tiene alguno... [Más]

Microsoft se quiere comer con patatas al PDF :-)

Microsoft anunció "Metro", un nuevo formato interplataforma para creación, visualización e impresión de documentos, que se asemeja en funcionalidad y características al popular PDF de Adobe. Durante la conferencia WinHEC 2005, Microsoft precisó que Metro consiste en una serie de tecnologías diseñadas para crear, visualizar y escribir documentos. El núcleo de Metro es el formato Metro Reach, basado en XML, que según Microsoft puede ser usado con todos los programas y en todas las plataformas. Se trata de una gran diferencia con el PDF, que sólo puede ser leído por los programas Reader y Acrobat. Además de XML, Metro utiliza estándares abiertos como XAML y ZIP de modo que pueda utilizarse con una amplia gama de dispositivos y aplicaciones. Metro incluirá una herramienta denominada “Reader” que permitirá visualizar y escribir archivos. También se incluirá un plug-in que permitirá crear documentos Metro desde todos los programas Windows, y un conector que acelerará el proceso de impre... [Más]