Archivos para la Categoría '.Net'

Liberado SP1 de Visual Studio 2005

Hoy estamos de liberaciones. Microsoft ha liberado el primer service pack para las distintas versiones de Visual Studio 2005. A saber:

Con este service pack ya se soporta Windows Vista …
El documento (release notes) lo puedes encontrar aquí.

Creo que es todo.

WMI. Fuente inagotable de información

La definición de Microsoft de WMI es la que sigue. Instrumental de administración de Windows (WMI) es un componente del sistema operativo Windows que permite obtener acceso mediante programación a información de administración en un entorno empresarial. WMI en .NET Framework se basa en la tecnología WMI original y permite el mismo desarrollo de aplicaciones y proveedores, además de las ventajas que ofrece la programación en .NET Framework.
En mi opinión, WMI es espectacular. Cualquier información que queráis obtener de cualquier sistema windows, WMI la proporciona, desde el nombre del sistema operativo de una máquina, pasando por la memoria ram que tiene, las tarjetas de red, configuración de cualquier cosa del sistema, performance, servicios, tareas, services packs instalados, software instalado, etc. etc. etc….

La arquitectura de WMI consta de los niveles siguientes:

  • Los componentes de software cliente realizan operaciones mediante WMI, como leer detalles de administración, configurar sistemas y realizar suscripciones a eventos.
  • El administrador de objetos es un intermediario entre los proveedores y los clientes que proporciona ciertos servicios esenciales, como la publicación y suscripción estándar de eventos, el filtrado de eventos, motor de consultas y otros servicios.
  • Los componentes de software de proveedor capturan y devuelven datos activos a las aplicaciones cliente, procesan llamadas a métodos procedentes de los clientes y vinculan al cliente con la infraestructura que se está administrando.

A continuación muestro un pequeño ejemplo de cómo recuperar información con WMI y mostrarla en un treeview. Lo único extraño que pueden ver en el código es que no utilizo el TreeView que viene con Visual Studio sino uno de otro fabricante, simplemente lo he utilizado porque el de VS no permite retornos de carros, de resto todo normal. Simplemente recupero alguna información como nombre de máquina, microprocesador, video y discos. Pero ya digo, cualquier información del sistema se puede recuperar.

Código:

Public Class WMI

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
‘ RECOPILACION DE DATOS
Me.InformacionGeneral()
Me.Micro()
Me.Video()
Me.Discos()
Me.UltraTree1.ExpandAll()
End Sub
Private Sub InformacionGeneral()
‘ INFORMACION GENERAL

Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_ComputerSystem”)

For Each queryObj As ManagementObject In searcher.Get()
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
_Node.Text = “Nombre PC:” & queryObj(“Name”).ToString & ControlChars.CrLf & _
“Fabricante:” & queryObj(“Manufacturer”).ToString & ControlChars.CrLf & _
“Modelo: ” & queryObj(“Model”).ToString & ControlChars.CrLf & _
“Tipo: ” & queryObj(“SystemType”).ToString & ControlChars.CrLf & _
“Memoria: ” & queryObj(“TotalPhysicalMemory”).ToString

Me.UltraTree1.Nodes(0).Nodes.Add(_Node)
Next
Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub
Private Sub Micro()
‘ MICROPROCESADOR
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_Processor”)

Dim _Cantidad As Byte
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = “Modelo:” & queryObj(“Name”).ToString & ControlChars.CrLf & _
“Velocidad:” & queryObj(“CurrentClockSpeed”).ToString & ” Mhz.” & ControlChars.CrLf
_Cantidad = +1
Next

_Node.Text = _Node.Text & “Cantidad: ” & _Cantidad.ToString
Me.UltraTree1.Nodes(1).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub

Private Sub Video()
‘ VIDEO
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_DisplayConfiguration”)

Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = “Modelo:” & queryObj(“Caption”).ToString & ControlChars.CrLf & _
“Frecuencia:” & queryObj(“DisplayFrequency”).ToString & ControlChars.CrLf

Next

Me.UltraTree1.Nodes(2).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub
Private Sub Discos()
‘ DISCOS
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_DiskDrive”)

Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = _Node.Text & “Nombre: ” & queryObj(“Caption”).ToString & ControlChars.CrLf & _
“Tipo:” & queryObj(“InterfaceType”).ToString & ControlChars.CrLf & _
“Particiones:” & queryObj(“Partitions”).ToString & ControlChars.CrLf

Next

Me.UltraTree1.Nodes(3).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
Catch err As Exception
End Try
End Sub
End Class

Si se fijan, lo único que hay que hacer es una query sobre la clase WMI que se quiere consultar. Y ahora se preguntarán, ¿como sabré qué clase es la que debo consultar para lo que yo quiero hacer? No hay problema, aparte de la documentación de MSDN Microsoft nos proporciona una herramienta que pueden bajarse aquí y que incluye todas las clases y objetos de WMI. Y no sólo eso sino además genera código VBScript, VB.Net y C# listo para usar.

Realmente creo que WMI es fantástico, yo, para controlar el hardware y software instalado en mi empresa, he desarrollado un servicio que se instala en las máquinas y que alimenta una base de datos informando de todo aquello que me interesa saber de mi parque informático. Ahora no tengo que ir máquina a máquina para saber que memoria tiene o por ejemplo saber cuan viejo es mi parque partiendo de los micros instalados. Antes lo llevaba en papel y relamente era inoperante.

Espero que les sirva.

WMI. Fuente inagotable de información

La definición de Microsoft de WMI es la que sigue. Instrumental de administración de Windows (WMI) es un componente del sistema operativo Windows que permite obtener acceso mediante programación a información de administración en un entorno empresarial. WMI en .NET Framework se basa en la tecnología WMI original y permite el mismo desarrollo de aplicaciones y proveedores, además de las ventajas que ofrece la programación en .NET Framework.
En mi opinión, WMI es espectacular. Cualquier información que queráis obtener de cualquier sistema windows, WMI la proporciona, desde el nombre del sistema operativo de una máquina, pasando por la memoria ram que tiene, las tarjetas de red, configuración de cualquier cosa del sistema, performance, servicios, tareas, services packs instalados, software instalado, etc. etc. etc….

La arquitectura de WMI consta de los niveles siguientes:

  • Los componentes de software cliente realizan operaciones mediante WMI, como leer detalles de administración, configurar sistemas y realizar suscripciones a eventos.
  • El administrador de objetos es un intermediario entre los proveedores y los clientes que proporciona ciertos servicios esenciales, como la publicación y suscripción estándar de eventos, el filtrado de eventos, motor de consultas y otros servicios.
  • Los componentes de software de proveedor capturan y devuelven datos activos a las aplicaciones cliente, procesan llamadas a métodos procedentes de los clientes y vinculan al cliente con la infraestructura que se está administrando.

A continuación muestro un pequeño ejemplo de cómo recuperar información con WMI y mostrarla en un treeview. Lo único extraño que pueden ver en el código es que no utilizo el TreeView que viene con Visual Studio sino uno de otro fabricante, simplemente lo he utilizado porque el de VS no permite retornos de carros, de resto todo normal. Simplemente recupero alguna información como nombre de máquina, microprocesador, video y discos. Pero ya digo, cualquier información del sistema se puede recuperar.

Código:

Public Class WMI

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
‘ RECOPILACION DE DATOS
Me.InformacionGeneral()
Me.Micro()
Me.Video()
Me.Discos()
Me.UltraTree1.ExpandAll()
End Sub
Private Sub InformacionGeneral()
‘ INFORMACION GENERAL

Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_ComputerSystem”)

For Each queryObj As ManagementObject In searcher.Get()
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
_Node.Text = “Nombre PC:” & queryObj(“Name”).ToString & ControlChars.CrLf & _
“Fabricante:” & queryObj(“Manufacturer”).ToString & ControlChars.CrLf & _
“Modelo: ” & queryObj(“Model”).ToString & ControlChars.CrLf & _
“Tipo: ” & queryObj(“SystemType”).ToString & ControlChars.CrLf & _
“Memoria: ” & queryObj(“TotalPhysicalMemory”).ToString

Me.UltraTree1.Nodes(0).Nodes.Add(_Node)
Next
Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub
Private Sub Micro()
‘ MICROPROCESADOR
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_Processor”)

Dim _Cantidad As Byte
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = “Modelo:” & queryObj(“Name”).ToString & ControlChars.CrLf & _
“Velocidad:” & queryObj(“CurrentClockSpeed”).ToString & ” Mhz.” & ControlChars.CrLf
_Cantidad = +1
Next

_Node.Text = _Node.Text & “Cantidad: ” & _Cantidad.ToString
Me.UltraTree1.Nodes(1).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub

Private Sub Video()
‘ VIDEO
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_DisplayConfiguration”)

Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = “Modelo:” & queryObj(“Caption”).ToString & ControlChars.CrLf & _
“Frecuencia:” & queryObj(“DisplayFrequency”).ToString & ControlChars.CrLf

Next

Me.UltraTree1.Nodes(2).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub
Private Sub Discos()
‘ DISCOS
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2″, _
“SELECT * FROM Win32_DiskDrive”)

Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = _Node.Text & “Nombre: ” & queryObj(“Caption”).ToString & ControlChars.CrLf & _
“Tipo:” & queryObj(“InterfaceType”).ToString & ControlChars.CrLf & _
“Particiones:” & queryObj(“Partitions”).ToString & ControlChars.CrLf

Next

Me.UltraTree1.Nodes(3).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
Catch err As Exception
End Try
End Sub
End Class

Si se fijan, lo único que hay que hacer es una query sobre la clase WMI que se quiere consultar. Y ahora se preguntarán, ¿como sabré qué clase es la que debo consultar para lo que yo quiero hacer? No hay problema, aparte de la documentación de MSDN Microsoft nos proporciona una herramienta que pueden bajarse aquí y que incluye todas las clases y objetos de WMI. Y no sólo eso sino además genera código VBScript, VB.Net y C# listo para usar.

Realmente creo que WMI es fantástico, yo, para controlar el hardware y software instalado en mi empresa, he desarrollado un servicio que se instala en las máquinas y que alimenta una base de datos informando de todo aquello que me interesa saber de mi parque informático. Ahora no tengo que ir máquina a máquina para saber que memoria tiene o por ejemplo saber cuan viejo es mi parque partiendo de los micros instalados. Antes lo llevaba en papel y relamente era inoperante.

Espero que les sirva.

Laboratorios Framework 3.0 en español

Hace unos días comenté en este blog la existencia de unos Hands on Lab sobre el Framework 3.0, eran en inglés, hoy leyendo la blogsfera, concretamente el blog de Grabiel veo que se pueden descargar ahora en español.

Lo puedes hacer desde aquí.

¿Funcionarán mis aplicaciones Framework 2.0 con Framework 3.0?

Esta pregunta tiene una respuesta sencilla y contundente, .

Y esto es así porque realmente el motor del framework 3.0 es del 2.0. ????
La siguiente igualdad explica claramente el porque de esta afirmación.

Framework 3.0 = Framework 2.0 + WPF + WWF + WCF

WPF = Windows Presentation Foundation
WWF = Windows WorkFlow Foundation
WCF = Windows Comunication Foundation

Y la siguiente imagen, tomada de Microsoft, explica este tema incluyendo algunas cosas más.

Así queda claro que nuestras aplicaciones desarrolladas con la versión 2.0 no tendrán ningún problema en Windows Vista o versiones XP,2000, etc. que tengan FrameWork 3.0 instalado.

¿Funcionarán mis aplicaciones Framework 2.0 con Framework 3.0?

Esta pregunta tiene una respuesta sencilla y contundente, .

Y esto es así porque realmente el motor del framework 3.0 es del 2.0. ????
La siguiente igualdad explica claramente el porque de esta afirmación.

Framework 3.0 = Framework 2.0 + WPF + WWF + WCF

WPF = Windows Presentation Foundation
WWF = Windows WorkFlow Foundation
WCF = Windows Comunication Foundation

Y la siguiente imagen, tomada de Microsoft, explica este tema incluyendo algunas cosas más.

Así queda claro que nuestras aplicaciones desarrolladas con la versión 2.0 no tendrán ningún problema en Windows Vista o versiones XP,2000, etc. que tengan FrameWork 3.0 instalado.

Clase Uri. Validando direcciones de http, ftp, etc.

En este post veremos como validar direcciones de http, https, ftp, mailto utilizando la clase Uri que nos proporciona el Framework de Microsoft.Supongamos que tenemos un textbox, en su evento Validating incluiremos el siguiente código:

Dim _Direccion As New Uri(Me.TextBox1.Text.ToString)
If _Direccion.Scheme Uri.UriSchemeHttp Then
MessageBox.Show(“Dirección HTTP incorrecta”)
e.Cancel = True
End If

Creamos una variable local del tipo Uri y le asignamos el TextBox. Si no es una dirección http correcta mostrará un mensaje de error y abortará la validación.

Si queremos validar https cambiaremos la condición por Uri.UriSchemeHttps.
Si queremos validar ftp cambiaremos la condición por Uri.UriSchemeFtp.
Si queremos validar mailto cambiaremos la condición por Uri.UriSchemeMailTo.
Si queremos validar news cambiaremos la condición por Uri.UriSchemeNews.

En esta dirección podremos encontrar toda la información relativa a la clase Uri.

Nuevos Virtuals Labs de Windows Vista

Ante la inminente salida al mercado de Windows Vista, Microsoft ha creado nuevos Virtuals Labs sobre el mismo.
Hay Labs sobre implemtentación, imágenes para su distribución, configuración del nuevo Firewall, nuevas políticas de sistema, etc.

Pueden acceder desde aquí

Cursos gratuitos de Microsoft .Net Framework 3.0

Microsoft ha puesto ha disposición de los desarrolladores tres cursos (¿premiun clinics?) sobre las nuevas tecnologías de Framework 3.0, son estos:

La página principal de estos clinics es esta.

He estado echándole un vistazo al 3.0 y la verdad es que está muy pero que muy bien, el workflow, por ejemplo, es algo que puede venir estupendo para muchos tipos de aplicaciones. Hay cambio de tecnología y debemos de cambiar también algo nuestro chip a la hora de desarrollar software.
Espero que estos cursos les ayude a ello.

ASP.Net Ajax 1.0 Beta 2

Microsoft ha liberado la beta 2 de su framework de Ajax. No ha pasado mucho desde la liberación de la beta 1.
Resumen:

ASP.NET AJAX Beta 2 has just been released and includes several improvements over the first Beta release, including adding the UpdateProgress control to ASP.NET 2.0 AJAX Extensions, and better support for script loading and localization. If you’re transitioning to Beta 2 an application that was built with an earlier “Atlas” CTP or the first Beta.

Download ASP.Net AJAX 1.0 Beta 2
Download ASP.Net AJAX Control Toolkit
Download ASP.Net 2.0 AJAX Futures November CTP

Curso gratuito ASP.Net 2.0

Leo en el blog de Jorge Serrano que Microsoft oferta un curso gratuito de 3 horas de duración sobre ‘Cómo crear tu primera aplicación web con ASP.Net 2.0′
El curso es el 2913 e incluso podemos descargarlo y hacerlo de forma desconectada.

GridView y ModalPopup en Ajax.Net

Navegando por los foros de Microsoft Ajax me encuentro bastantes preguntas sobre cómo editar una fila de un gridview en una ventana modal utilizando código del lado del cliente.
En este post daré una solución cuya ventana modal no es el control ModalPopupExtender, sino una ventana modal del propio navegador. Cuando estudie el control lo publicaré utilizándolo.

Tomaremos como ejemplo una de las páginas de un CRM open source que en mis ratos libres estoy desarrollando.
Realmente es muy simple, utilizaremos lo siguiente:

  1. JavaScript para mostrar la ventana modal
    Un TemplateField del GridView
    El evento RowDataBound del GridView
    Y nada más ….

Vamos por pasos:
1. El javascript de apertura de la ventana modal será.
function AbrirVentana(Pagina)
{
window.showModalDialog(Pagina);
}

Al método window.showmodaldialog se le pueden pasar parámetros como página, argumentos, tamaño, posición, etc, en este link podéis ver sus opciones y funcionamiento. En nuestro caso a la función AbrirVentana le pasaremos un parámetro que contendrá la página y el registro con el que queremos trabajar.

2. En el gridview añadiremos una template column que contendrá un buttonlink al que le pondremos como url la llamada al javascript pasándole como parámetro la columna única de la tabla con la que vamos a trabajar.

Pulsa para ver

3. En el evento antes mencionado del gridview RowDataBound añadiremos el código necesario para asociar al template column el valor adecuado.

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
‘ PREPARACION DE LA APERTURA DE LA VENTANA MODAL
If e.Row.RowType <> DataControlRowType.DataRow Then Exit Sub
Dim row As GridViewRow = e.Row
Dim button As LinkButton = e.Row.FindControl(“BtnModal”)
If Not button Is Nothing Then
button.OnClientClick = “javascript:(AbrirVentana(‘EditCandidatos.aspx?Codigow=” & e.Row.Cells(1).Text & “‘));”
End If
End Sub

Y esto es todo, algo importante a tener en cuenta en la ventana modal, es que, para que, si por ejemplo incluimos un formview para manejar el registro a tratar y no se nos abra una nueva ventana cuando por ejemplo pulsemos el botón editar del mismo es añadir al “head” el elemento <base target="_self"/>

Bueno, espero que les sirva de algo, saludos y si les apetecen pueden hacer comentarios.

Nuevo blog .Net

Pues eso, hasta que no consiga una herramienta que me permita publicar en más de un blog al mismo tiempo, este está en desuso, os invito a visitar el que tengo más actualizado, NetCodigo e Internet

Si alguien conoce la herramienta en cuestión, agradecería un comentario
Gracias

Recuperar Special Folders

El siguiente código muestra como recuperar las carpetas especiales de un sistema windows. Ententiendo como carpetas especiales a “Archivos de Programa”, “Temporal de Windows”, “Mis Documentos”, etc.
Para recuperarlas usaremos el espacio de nombres system, espacio que contiene clases fundamentales y clases base que definen tipos de datos de referencia y de valor de uso frecuente, eventos y controladores de eventos, interfaces, atributos y excepciones de procesamiento.
En este espacio de nombre tenemos la clase Enviorment que proporciona información acerca del entorno y la plataforma actuales, y la forma de manipularlos. Esta clase tiene un método denominado GetFolderPath que es el que utilizaremos para el tema de este post.
La clase Enviroment tiene a su vez un método denominado SpecialFolder que será el que le pasaremos como parámetro a GetFolderPath.
Verán que es muy sencillo, en el ejemplo rellenaremos un listbox con unas cuantas carpetas especiales.
Resultado:

specialfolder12.JPG

Código:

specialfolder23.JPG

Pasar datos entre páginas web ASP Net 2.0

En este post me gustaría mostrarles que, además de en la url (lease querystrings), hay otra forma de pasar datos entre páginas asp.
Lo bueno que tiene esta otra forma, que por cierto solo funciona con ASP Net 2.0, es que en la url no va a mostrar ninguna información sobre los datos con los que queremos trabajar, esto se consigue usando Cross Page Postback.
Para trabajar con el ejemplo necesitaremos dos páginas, la origen (Default.aspx) y la de destino (Default2.aspx), la primera será la encargada de enviar los datos y la segunda de recorgerlos y mostrarlos.
Para ver el ejemplo completo aquí están las dos páginas

1. Origen:
PostBackUrl

2. Destino
postbackurl3.JPG
Si se fijan, en la página de destino, en la url no aparece ningún tipo de querystring.

Cómo se hace:

1. En la página de origen lo único que hay que hacer es asignar la propiedad PostBackURL al botón encargado de lanzar la segunda página para que apunte a esta última.
PostBackUrl 

2. En la página destino hay que hacer dos cosas:

2.1 Añadir la directiva @PreviousPageType apuntando a la página desde la que se ha llamado a la de destino.
PostBackUrl

 2.2 En el evento load de esta segunda página ahora podremos insertar el código necesario para capturar los valores de la página de origen.
postbackurl6.JPG

Bueno, espero que lo hayan pillado, ya saben para cualquier cuestión al respecto no duden en agregar comentarios.

Entradas siguientes »


a

 

Diciembre 2009
L M X J V S D
« Dic    
 123456
78910111213
14151617181920
21222324252627
28293031  

Sindicación

NetMania y la Web

Internet Blog Serial Number 01-10-2006-02

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons


Otros


Añadir a Favoritos de Technorati

Añadir a Netvibes

Añadir a Google

Unión de Bloggers Hispanos

nubes