
Si diseñas aplicaciones de escritorio (Windows Forms) con .NET y te limitas a colocar controles sobre los formularios, al final obtendrás ventanas aburridas y con aspecto anticuado, ya que por defecto los estilos visuales de Windows XP no están soportados en éstos.
Desde luego si la aplicación se va a ajecutar en Windows XP es una verdadera pena que no se aproveche de ese aspecto tan potente y actual que le dan los temas y estilos del sistema. Por ejemplo, la figura sigueinte muestra la diferencia abismal que existe entre una misma ventana cuando carece de los los estilos de XP o los está utilizando.
Pulsa para aumentar
En Visual Studio .NET 2002 era bastante tedioso conseguir esto ya que había que hacer, como con cualquier ejecutable, un archivo manifest que se debía copiar en la misma carpeta que el ejecutable de la aplicación. Sin embargo en Visual Studio .NET 2003 (o sea, en la versión 1.1 de la plataforma) es de lo más sencillo conseguirlo.
Lo único que hay que hacer es poner ...
[Más]
Tags: Programación
adde9ff8-8a0f-406b-802f-188f1c109bba|0|.0

En las tres anteriores entregas de esta serie sobre SOAP con herramientas clásicas hemos visto cómo crear y consumir servicios Web con Visual Basic y código de Script. Consulta el histórico del Blog para leer estos artículos.
Los componentes que hemos creado y consumido hasta ahora eran objetos sin estado. Esto es, si disponemos de una DLL escrita en VB que contiene una clase que debe mantener información entre llamadas no funcionará correctamente ya que cada llamada realziada a través de SOAP es independiente de las demás y se realiza sobre un objeto diferente en el servidor.
Por ejemplo, consideremos la siguiente clase 'PruebaSOAP2.Persona' que dispone de dos métodos: uno para anotar e nombre de una persona y el otro para saludarla:
Private mNombre As StringPublic Sub AnotaNombre(sNombre As String) mNombre = sNombreEnd SubPublic Function DimeNombre() As String DimeNombre = mNombreEnd Function
El método 'AnotaNombre' de esta clase almacena la cadena que se le pase como paráme...
[Más]
Tags: Programación
5e22717f-4521-4fb7-9b4c-487987007c29|0|.0

En las entregas anteriores de esta mini-serie vimos cómo crear un servicio Web con Visual Basic 6 sin necesidad de hacer nada especial, sólo crear una DLL normal y corriente.
Una vez suplida esta necesidad todavía nos queda otra: poder consumir servicios Web en Windows sin necesidad de programar en .NET.
Sorprendentemente se trata de un tarea muy sencilla, si bien tiene sus limitaciones al intentar usarlo con servicios Web complejos que constan de varios componentes o espacios de nombres.
La técnica consiste en el uso de la conocida función GetObject, si bien usando una sintaxis algo especial. Este función está disponible en Visual Basic, VBScript, Windows Scripting Host, etc… por lo que podemos hacer uso de ella universalmente.
Por ejemplo, el siguiente código de WSH (guárdalo con cualquier nombre y extensión ‘.vbs’ o incluso úsalo desde una página HTML), utiliza el servicio Web de información horaria que creamos en la anterior entrega para devolver la hora en el servidor:
...
[Más]
Tags: Programación
06d3bc25-beb8-402f-837f-7a677f891e2d|0|.0

Ayer, con Visual Basic 6, construimos una clase muy sencilla con un método que se encargaba de devolver la hora del servidor. Nuestra intención es convertirla en un servicio Web para que pueda servir la hora a cualquier cliente SOAP. Y todo ello sin programar nada especial para conseguirlo.
Ahora es en donde entra en juego la magia de COM+ y de .NET Remoting. Recuerda que debes tener instalado IIS sobre Windows XP o Windows 2003 Server.
En las herramientas administrativas ejecuta la consola de administración de Servicios de componentes (o sea, COM+). Crea una nueva aplicación COM+ y agrégale la DLL que acabas de compilar. En las propiedades de la aplicación COM+ vete a la pestaña Activación y marca la opción Usa SOAP. En el campo de texto inferior escribe el nombre que quieras darle al directorio de IIS en el que se publicará tu servicio Web, por ejemplo, HoraWS, como en la figura.
Pulsa para ampliar
Ya está. A partir de ahora tienes disponible un servicio Web en ese directo...
[Más]
Tags: Programación
796f5ced-9336-446a-8d6c-132ca02fa8de|0|.0

Parece que hoy en día no hay nada que esté más de moda que los servicios Web ¿verdad?
Crear un servicio Web con la plataforma .NET es algo sencillo si no nos metemos en profundidades.Puedes leer al respecto una introducción a los servicios Web y un ejemplo de cómo crearlos en Visual Studio en mis artículos de los números 185 (¿Qué son los servicios Web?) y 186 (Implementación sencilla de servicios Web con Visual Studio .NET) de PC World (por desgracia no tengo enlaces a los que se pueda acceder gratuitamente).
Los programadores de otros lenguajes más antiguos, como por ejemplo Visual Basic 6, parece que están fuera de onda automáticamente. En realidad se pueden crear servicios Web con Visual Basic 6 y otros lenguajes antiguos de Microsoft (hasta directamente en ASP, nosotros en Krasis lo hemos hecho) gracias al SOAP Toolkit 3.0 de Microsoft. De todos modos hay que programar bastante y, antes de nada, hay que leer bien y aprenderse la documentación que trae el Toolkit.
¿Qué te p...
[Más]
Tags: Programación
f46f1b05-6ca7-405f-8070-2ece63e821d1|0|.0

Cuando en un formulario Web tenemos un campo de texto (INPUT, type=text), que se utiliza para que los usuarios introduzcan números (por ejemplo su edad, un número de factura...) lo habitual es verificar su contenido con la función parseInt de JavaScript.
Imaginemos por ejemplo que hay que verificar que un campo de este tipo no sobre pase un determinado valor. Normalmente escribiríamos una condición similar a esta:
if ( parseInt(micampo.value) > valorMax ) alert("Se ha sobrepasado el máximo");
Un código sencillo, directo y, en apariencia, sin problemas. Pero, ¿qué pasaría si por ejemplo el usuario introduce el número '034', es decir, incluye el dígito cero precediendo al número?.
Respuesta: que parseInt en lugar de devolver el número 34 que es sin duda el que esperábamos devolverá un 28.
El motivo es que la función parseInt interpreta los textos que comienzan con un cero como números en base octal y no decimal, por lo que 034 se interpreta como el número 28 en base octal....
[Más]
Tags: JavaScript, Programación
6a56eede-71c0-4b21-8389-5dd22a38bac9|0|.0

Me ha llamado mucho la atención esta utilísima herramienta basada enWeb que ha escrito Francesco Balena.
Se trata de un visor de ensamblados .NET basado en Web, accesible públicamente y que trabaja con .NET 2.0. Te permite navegar por cualquier ensamblado y, utilizando reflexión, visualizar sus clases, miembros, interfaces, etc... pudiendo ahondar en ellos. Marca las novedades y diferencias entre .NET 2.0 y versiones anteriores.
Una de las cosas que más interesantes me han parecido es que en cualquier miembro puedes averiguar qué tipos derivan de él, qué miembros devuelven el tipo seleccionado y cuáles lo usan bien como parámetro o como valor de retorno.
Se pueden utilizar URLs directas para llegar a determinados tipos, lo cual es muy útil para referenciarlos en textos o mensajes a foros, por ejemplo.
Tags: Programación
adbb947f-1a6a-4c69-a2d3-c3fe48100121|0|.0

¿Qué es la subclasificación?
El sistema operativo Windows efectúa la comunicación entre los diversos objetos de la interfaz de usuario utilizando mensajes. Todo lo que ocurre en la interfaz requiere mensajes para ocurrir. Por ejemplo, cuando pulsas con el ratón sobre una ventana se envía un mensaje para indicar en dónde has pulsado y cómo. Si haces clic en el aspa de cerrar una ventana Windows envía un mensaje a ésta para que se cierre. Etc, etc...
Otra cuestión a tener en cuenta en este contexto es que, en contra de lo que pueda parecer, muchos objetos aparte de las propias ventanas son también ventanas. Por ejemplo, un cuadro de texto, un botón o una rejilla son ventanas (sólo que de otros tipos) y por consiguiente reciben mensajes del sistema operativo para indicarles cómo deben comportarse.
Cuando un proceso intercepta y (opcionalmente) modifica los mensajes que se envían a una ventana se dice que la ventana ha sido subclasificada.
Pero, ¿para qué puede nos puede valer esto?. E...
[Más]
Tags: Programación
de19d11c-17f9-4260-b75f-e5307256456e|0|.0

A partir del 1 de Octubre de 2004, entra en vigor el nuevo Código Penal con el que se puede incurrir en penas de cárcel simplemente por descargar música en Internet.
La nueva ley orgánica 15/2003, con la que se reforma de manera extensa el vigente Código Penal, incorpora una serie de medidas que deben hacer temblar a cualquier internauta habituado a los "usos" típicos de Internet hoy en día. Asimismo deben temblar aquellos padres que tienen a sus hijos navegando tranquilamente en la habitación, pues sin hacer nada "malo" podrían acabar llevándoles a la cárcel o al pago de una multa bastante cuantiosa.
Desde el próximo 1 de Octubre de 2004, en España será delito penado con seis meses a dos años de cárcel y multa de 12 a 24 meses, bajarse una canción de Internet sin permisos del propietario de los derechos de autor (Art. 270, ap. 2).
De igual modo se penaliza al que fabrique distribuya o simplemente tenga en su ordenador software capaz de suprimir o neutralizar herramientas de protec...
[Más]
Tags: Mundo TIC
5cafcb67-abf3-4b81-97bb-473a76218f88|0|.0

Hace unos meses me encontré con este interesante servicio y hoy, por cuestiones que no vienen al caso, me he acordado de él. Se trata de, Mailinator.net, un servicio de correo electrónico temporal y anónimo. ¿Qué quiere decir esto?. Lo mejor es que lo explique con un ejemplo...
Imagínate el típico portal de Internet que tiene uno o dos archivos interesantes que te interesa bajarte pero que, para ello, debes registrarte antes en la página. Además sabes que a la hora de registrarte deberás proporcionar una dirección de correo válida puesto que te enviarán a ella una clave de acceso. El problema es que si realmente proporcionas una dirección tuya en el futuro te van a machacar con correo electrónico y no está el horno para bollos ¿verdad?. ¿No sería estupendo disponer de una cuenta que funcionase lo justo para que te escriban a ella y luego que te pudieras desentender de la misma?
Pues esto precisamente es lo que hace Mailinator. Tú invéntate una cuenta cualquiera dentro del dominio mai...
[Más]
Tags: Off-Topic
c17169d2-d66d-4633-a2b7-03fc7c884b3f|0|.0

Cuando colocamos un objeto de conexión a un origen de datos sobre un formulario Windows Forms de Visual Studio .NET, éste aparece en la parte inferior del diseñador correspondiente y podemos editar sus propiedades desde la ventana de propiedades del entorno.
La propiedad más importante de este objeto es, sin duda, ConnectionString. Normalmente la ajustamos desde la propia ventana de propiedades, y mucha gente la deja simplemente ahí, sin añadir forma alguna de modificarla de forma externa a la aplicación. Esto tiene varios problemas, pero los principales son:
· Si queremos actualizar la cadena deberemos cambiar la propiedad desde el diseñador y recompilar la aplicación· Si alguien rastrea o descompila el código puede leer en claro la cadena (con contraseñas de acceso y otra información confidencial).
Para evitar el primero de estos problemas es obvio que lo más sencillo es llevar esta cadena de conexion (entera o por partes) a algún archivo externo de configuración que leeremos de...
[Más]
Tags: Programación
82de85b4-55ae-40fa-81c3-9084dcfb8e3f|0|.0

Se ha anunciado una vulnerabilidad en Mozilla y Firefox que permitiría a sitios web maliciosos falsificar el interfaz de usuario, lo que puede inducir al usuario a creer que se encuentra en un sitio diferente y ser empleado para realizar ataques de phishing (robo de información bancaria, cuentas de acceso, etc).
El problema, que parece ser el mismo que el identificado como 244965 en Mozilla, reside en que estos productos no restringen a los sitios web la inclusión de archivos XUL remotos (XML User Interface Language) de tal manera que se puede "secuestrar" la mayor parte del interfaz, incluyendo la barra de herramientas, los diálogos de certificados SSL, barra de direcciones, etc. Esto es importante debido a que el interfaz de Mozilla está construida a base de archivos XUL.
Hay que señalar que no se trata de un problema nuevo, ya que el mencionado bug fue mencionado por primera vez en 1999, pero fue marcado como confidencial durante 5 años, hasta que el pasado día 21 un desarrollador...
[Más]
Tags: Mundo TIC
0ddb3ba8-ed4f-40d4-b8c2-d0c151166e60|0|.0

Como es bien sabido la clase DataSet de .NET (dentro del espacio de nombres System.Data), permite utilizar de manera sencilla y potente un pequeño gestor de datos en memoria, sin necesidad de haber obtenido por fuerza los datos a partir de un gestor de datos convencional. El objeto DataSet puede haber sido creado dinámicamente por nosotros o se puede haber generado para trabajar en memoria con tablas y relaciones obtenidos de una fuente de datos relacional, por ejemplo.
Un DataSet contiene, entre otras cosas, una colección de objetos DataTable que, como puede imaginar, son equivalentes conceptualmente a las tablas o relaciones en una base de datos relacional. No voy a entrar aquí a explicar todas las características de este tipo de objetos, pero sí me gustaría recordar que generan dos eventos con el fin de notificar de los cambios que sufren. Estos eventos son RowChanged y RowDeleted, y se lanzan cuando se cambia algún valor o cuando se elimina una fila de la tabla respectivamente.
...
[Más]
Tags: Freeware, Programación
71e214ee-cfe8-4d72-ba34-35d34edf91e7|0|.0