RSS 2.0 Atom 1.0 CDF  
JASoft.org - May, 2005
El blog de José Manuel Alarcón Aguín. Programación .NET y mucho más...
 

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 mayor parte de las veces no da ningún problema (a menos que haya otros programas diferentes pero con el mismo nombre ejecutándose, cosa poco común).

Por: José Manuel Alarcón Aguín | Tuesday, May 31, 2005 6:55:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Programación


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner

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(Proceso, Parametros);
  startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.UseShellExecute = false; //No utiliza RunDLL32 para lanzarlo
  //Redirige las salidas y los errores
        startInfo.RedirectStandardOutput = true;
        startInfo.RedirectStandardError = true;
        Process proc = Process.Start(startInfo); //Ejecuta el proceso
        proc.WaitForExit(); // Espera a que termine el proceso
        string error = proc.StandardError.ReadToEnd();
        if (error != null && error != "")    //Error
         throw new Exception("Se ha producido un error al ejecutar el proceso '" + Proceso + "'\n" +
             "Detalles:\n" +
                                 "Error: " + error);
          else    //Éxito
     return proc.StandardOutput.ReadToEnd(); //Devuelve el resultado
 }

La he tenido que usar recientemente en un proyecto y aprovecho la coyuntura para colocarla aquí. ¡Que la disfrutes!

Por: José Manuel Alarcón Aguín | Monday, May 30, 2005 8:27:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Programación


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner

MonoppixMono 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 la Universidad de Valladolid aquí en España. En la página encontrarás además unos interesantes tutoriales en vídeo que incluyen cómo usarlo desde VirtualPC.

Por: José Manuel Alarcón Aguín | Thursday, May 26, 2005 2:43:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Noticias Programación


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner

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.Reflection.Assembly.GetEntryAssembly().GetName().Name

 

Por: José Manuel Alarcón Aguín | Monday, May 23, 2005 6:35:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Programación


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner

campusMVPMañ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ÍNCRONA avanzada en la plataforma .NET, por Rodrigo Corral
· Desarrollo de Aplicaciones Web ASP.NET para Dispositivos Móviles, por Alejandro Mezcua 
· C# para programadores de Visual Basic 6, por Guillermo "El Guille" Som
· Planificación, implementación y mantenimiento de Directorio Activo en Windows 2003, por Iván González 
· Introducción al desarrollo de aplicaciones web con ASP.NET, por Alex Solano
· Técnicas de escritura de código seguro, por Jose Alarcón 
· Seguridad avanzada de Internet Information Server, por Jose Alarcón. ¡Este es gratuito!.
· Programación avanzada de aplicaciones empresariales distribuidas con .NET Remoting, por Rodrigo corral

Como oferta inicial de lanzamiento puedes hacer el curso "Seguridad avanzada de Internet Information Server" de manera totalmente gratuita. Y además, si te matriculas durante este mes en cualquier otro curso de campusMVP te regalamos la matrícula del curso "Técnicas de escritura de código seguro". Dos cursos por el precio de uno. Por la cara :-)

En la web del proyecto (www.campusmvp.com) podrás conocer todos los detalles, ver el catálogo, matricularte en línea y suscribirte a nuestro boletín de novedades, que te hará estar al tanto de todo lo que se cuece en el mundo técnico de Microsoft.

La puesta en marcha de este proyecto me ha tenido absorbido los últimos meses, y es también el motivo de que en las últimas semanas haya tenido un poco más abandonado que de costumbre este blog. Creo que el resultado ha merecido la pena.

Si estás en Madrid mañana quedas invitado a hacernos una visita en nuestro stand del evento Developer Day para conocer de primera mano el proyecto y, seguramente, llevarte algún regalito de recuerdo ;-)

Por: José Manuel Alarcón Aguín | Monday, May 16, 2005 8:24:00 AM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Mundo TIC | Noticias Programación


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner

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 algunos otros métodos y propiedades muy interesantes que permiten averiguar muchas cosas sobre el entorno de ejecución de nuestro programa. Por ejemplo, para saber si hay algún usuario autenticado y trabajando de forma interactiva en el ordenador basta con usar la propiedad UserInteractive. Para saber la versión del sistema operativo basta con usar la propiedad OSVersion. Échale un vistazo a su documentación.

Por: José Manuel Alarcón Aguín | Wednesday, May 04, 2005 3:55:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Programación


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner
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 impresión.

INTREGRACIÓN CON WINDOWS

Metro estará estrechamente integrado con el sistema operativo Windows cuando el sucesor del XP, Longhorn, sea lanzado el próximo año. Para los usuarios que tengan instalado Windows XP o Server 2003, Microsoft tiene planeado entregar un lector de documentos Metro, según informó el boletín BetaNews.

Metro será lanzado de manera paralela a la llegada de Longhorn al mercado. Las funciones de lectura e impresión optimizada de archivos Metro estarán disponibles en la beta del Longhorn, anunciada para mediados de este año. El anuncio de Microsoft se conoció días después que Adobe, creador del PDF, confirmara la compra de macromedia, uno de sus principales competidores.

RESPALDO DE XEROX

El fabricante de equipos de impresión Xerox anunció que está desarrollando capacidades de escaneado e impresión para sus sistemas multifunción de oficina que soportarán "Metro".

"Al combinar la pericia de Xerox en la administración más inteligente de documentos con las nuevas capacidades basadas en XML de Metro, ayudaremos a nuestros clientes a utilizar los documentos como herramientas para impulsar la productividad y el crecimiento comercial", dijo Tim Williams, presidente del Grupo de Productos de Oficina de Xerox.

En la conferencia WinHEC, Microsoft hizo demostraciones de las funciones de escaneado e impresión utilizando Metro y los dispositivos multifunción avanzados Xerox WorkCentre Pro.

TECNOLOGÍA MRC

El soporte de Xerox para "Metro" es reforzado por el uso de su tecnología MRC, que reduce el tamaño de los archivos de documentos escaneados sin comprometer la calidad de la imagen. Así se consiguen velocidades de proceso más rápidas, menor demanda de ancho de banda de las redes y menores requerimientos respecto del espacio para el almacenamiento de archivos.

En los documentos escaneados, Metro también permitirá a las personas utilizar firmas digitales y definir quien puede acceder a un documento. Además, nuevas arquitecturas de impresión y color de Microsoft permitirán que Xerox agregue a Metro varias funcionalidades para optimizar sus capacidades en general que irán desde el escaneado a la impresión.

Por: José Manuel Alarcón Aguín | Monday, May 02, 2005 4:00:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0] - Trackback
Tags: Mundo TIC


Sígueme en:

:: Twitter JM Alarcón: tecnología, marketing, este blog y frikadas varias
:: Twitter campusMVP: los mejores recursos sobre tecnología Microsoft: trucos, artículos, noticias, vídeos...
:: Facebook campusMVP: los mismos mejores recursos pero en directamente en Facebook.
:: Boletín campusMVP Nuestra publicación electrónica, una vez al mes en tu buzón de correo.
 
Banner
Copyright © 2010 José Manuel Alarcón Aguín. All rights reserved.