27.1.06

VB Net - Numeros de serie de los discos fisicos

Siguiendo con el ejemplo anterior ahora les paso un ejemplo para verificar los numeros de serie de cada disco fisico existente en la PC.

Imports System.Management

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListarDrives()
End Sub


Sub ListarDrives()
Dim oQuery As String = "SELECT DeviceID FROM Win32_LogicalDisk"
Dim oSearch As ManagementObjectSearcher = New ManagementObjectSearcher(oQuery)
Dim oDisks As ManagementObjectCollection = oSearch.Get

For Each m As ManagementObject In oDisks
Dim DeviceID As PropertyData = m.Properties("DeviceID")
ListBox1.Items.Add(DeviceID.Value)
Next
End Sub


Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Dim disk As ManagementObject = New ManagementObject("win32_logicaldisk.deviceid=""" & ListBox1.SelectedItem.ToString & """")

Try
disk.Get()
If Not disk("VolumeSerialNumber") Is Nothing Then
TextBox2.Text = disk("VolumeSerialNumber").ToString
Else
TextBox2.Text = "No Information Avalaible"
End If

Catch ex As System.Management.ManagementException
TextBox2.Text = ex.Message
End Try
End Sub

End Class


VS2005 - AJAX.Net

Les dejo una muy buena direccion donde podremos encontrar la libreria de AJAX para .Net y cientos de ejemplos

http://ajax.schwarz-interactive.de/csharpsample/default.aspx

Downloads
Ajax.dll (5.7.22.2)
Ajax.dll (5.7.25.1) Beta para .NET Framework 2.0.
Ejemplos C#
Ejemplos VB Net
AjaxGuide.doc
QuickGuide.txt

VB Net - Extraer los datos del Event viewer

Este es un ejemplo muy sencillo realizado den VB Net 2.0 que realiza un query y nos devuelve un listado de los datos en el event viewer

Imports System.Management

Public Class Form1

'Generamos estructura para los datos
Public Function getEventLogStructure() As DataTable
Dim oDT As New DataTable
oDT.Columns.Add(New DataColumn("Category"))
oDT.Columns.Add(New DataColumn("ComputerName"))
oDT.Columns.Add(New DataColumn("EventCode"))
oDT.Columns.Add(New DataColumn("Message"))
oDT.Columns.Add(New DataColumn("TimeWritten"))
oDT.Columns.Add(New DataColumn("Type"))
'
Return oDT
End Function

'agregamos una fila con los datos del event de acuerdo a la estructura anterior
Public Sub addEventLog(ByRef oDT As DataTable, _
ByVal Category As String, _
ByVal ComputerName As String, _
ByVal EventCode As String, _
ByVal Message As String, _
ByVal TimeWritten As String, _
ByVal Type As String)

Dim oDR As DataRow
oDR = oDT.NewRow
oDR("Category") = Category
oDR("ComputerName") = ComputerName
oDR("EventCode") = EventCode
oDR("Message") = Message
oDR("TimeWritten") = TimeWritten
oDR("Type") = Type
oDT.Rows.Add(oDR)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim oSearch As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_NTLogEvent")
Dim oDT As DataTable = getEventLogStructure()

For Each oQuery As ManagementObject In oSearch.Get
addEventLog(oDT, CStr(oQuery("Category")), _
oQuery("ComputerName"), _
CStr(oQuery("EventCode")), _
oQuery("Message"), _
CStr(oQuery("TimeWritten")), _
CStr(oQuery("Type")))
Next
Me.DataGridView1.DataSource = oDT

Catch err As ManagementException
MessageBox.Show("Error realizando consulta:" & err.Message)
End Try

End Sub
End Class



16.1.06

ASP Net - Foco en controles

Cuando trabajamos en sitios web, muchas veces deseamos queel foco se centralice sobre determinado control de nuestra página (textbox, label, button, etc)
 
Lo podemos realizar de tres maneras diferentes:
 
Usando JavaScript en el evento OnLoad de la página
<body onload="javascript:document.Form1.TextBox1.focus();">
 
Que se ejecute dinámicamente
Page.RegisterStartupScript("SetFocus", _
"<script>document.getElementById('" & TextBox1.ClientID & _
"').focus();</script>")

O... en ASP 2.0 otra alternativa
<form id="Form1" defaultfocus=“textbox1” runat=“server”>
     <asp:textbox id=“textbox1” runat=“server”/>
     <asp:textbox id=“textbox2” runat=“server”/>
     <asp:button id=“button1” text=“Button1” runat=“server”/>
</form>
 

ASP Net - Pasando parametros

Cuando pasamos parametros y datos de una página hacia otra, el método más comúnque poseemos de realizarlo es el siguiente:
 
'Page1.aspx
Dim sName As String
sName = Server.UrlEncode(txtName.Text)
Response.Redirect("Page2.aspx?Value=" & sName)
 
'Page2.aspx
Dim sName As String
sName = Request.QueryString("Value")
Response.Write("Your name is " & sName)
 
Y en la URL nos queda algo muy similar a esto:
http://localhost/MySite/Page2.aspx?Value=Cristina
 
Pero...podemos usar una segunda opción
 
'Page1.aspx
Context.Items("UserName") = txtName.Text
Server.Transfer("Page2.aspx")
 
En ASPNet 1.1
'Page2.aspx
Dim sName As String
sName = Context.Items("UserName").ToString
Response.Write("Your name is " & sName)

En ASP NET 2.0
'Page2.aspx
Dim sName As String
sName = Request.Form(“TextBox1”).ToString
Response.Write("Your name is " & sName)

13.1.06

VB Net - Controlar status de SQL

Generando una aplicacion de consola con Visual Studio 2005, podemos verificar el status del servicio de SQL Server Express
 
Cuando generamos la app de consola hay que agregarle la referencia de System.ServiceProcess
 
Imports System
Imports System.ServiceProcess
Module Module1
    Sub Main()
        Dim myServiceName As String = "MSSQL$SQLEXPRESS"
        Dim status As String  'service status
        Dim mySC As ServiceController
        Console.WriteLine("Service: " & myServiceName)
        mySC = New ServiceController(myServiceName)
        Try
            status = mySC.Status.ToString
        Catch ex As Exception
            Console.WriteLine("Service not found. It is probably not installed. [exception=" & ex.Message & "]")
            Console.ReadLine()
            End
        End Try
        Console.WriteLine("Service status : " & status)
        'if service is Stopped or StopPending, you can run it with the following code.
        If mySC.Status.Equals(ServiceControllerStatus.Stopped) Or mySC.Status.Equals(ServiceControllerStatus.StopPending) Then
            Try
                Console.WriteLine("Starting the service...")
                mySC.Start()
                mySC.WaitForStatus(ServiceControllerStatus.Running)
                Console.WriteLine("The service is now " & mySC.Status.ToString)
            Catch ex As Exception
                Console.WriteLine("Error in starting the service: " & ex.Message)
            End Try
        End If
        Console.WriteLine("Press a key to end the application...")
        Console.ReadLine()
        End
    End Sub
End Module

ASP Net - Upload files en ASP 2.0

En el site de MSDN podemos encontrar un muy buen ejemplo (completo) para realizar upload de files en asp2.0

http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/UploadASP2.asp

10.1.06

ASP Net - Modificar propiedades de objetos HTML

Muchas veces nos podemos encontrar que necesitamos modificar una propiedad de algun componente html pero desde el codebehind
Dim objF As New HtmlForm()
'
Private Sub Button1_Click() Handles Button1.Click
objF = CType(Page.FindControl("form1"), HtmlForm)
objF.Method = "Post"
End Sub
'
Private Sub Button2_Click() Handles Button2.Click
objF = CType(Page.FindControl("form1"), HtmlForm)
objF.Method = "Get"
End Sub
y podemos encontrar algunos de los siguientes resultados
<form name="Form1" method="post" action="WebForm1.aspx" id="Form1">
<form name="Form1" method="get" action="WebForm1.aspx" id="Form1">

6.1.06

VB Net - Usando y Extendiendo el Namespace My

La gente de MSDN expuso un muy interesante articulo sobre el Namespace My

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/MTJ_3874.asp

Algunos ejemplos

Leer un archivo de texto del disco:
Dim strTexto As String
strTexto = My.Computer.FileSystem.ReadAllText("c:\temp\datos.txt")

Guardar un texto en un archivo:
My.Computer.FileSystem.WriteAllText("c:\temp\datos.txt", strTexto, True)

Copiar un archivo:
My.Computer.FileSystem.CopyFile("c:\temp\origen.txt", "c:\temp\destino.txt", True)

Copiar una carpeta:
My.Computer.FileSystem.CopyDirectory("C:\Temp\MyCarpeta", "C:\Temp\Tuya")

Quienes ya conozcan el namespace System.IO dirán: "Ok, pero ¡Esto también lo podemos hacer con las clases File y Directory!" Así es, pero ¿Qué tal si quisiéramos descargar un archivo de la Web?
My.Computer.Network.DownloadFile("http://www.mysitio.com/archivo.txt", "c:\Temp")

¿... O subir un archivo a la web?
My.Computer.Network.UploadFile("c:\Temp\archivo.txt", "http://www.mysitio.com")

Ahora quiero escuchar música:
My.Computer.Audio.Play("C:\Audio\musica.wav")

3.1.06

SahrePoint 2003 - CAML Viewer

Para los developers que necesitan realizar consultas sobre SharePoint y principalmente en CAML, existe una herramienta realmente muy utily facil de manejar
 
Se trata del CAMLViewer
 
Podemos ver cualquier sitio generado con SPS o WSS, sea local o externo y realizar consultas sobre el
 
 
Tenemos un sector llamado View Fields que genera automaticamente los campos que posee una lista por ejemplo, podemos modificar los campos y ver losresultados
 
 
Tambien nos genera código en C# o en VBNet para utilizarlo en algun componente, pagina, etc.
 
using System;
using Microsoft.SharePoint;
public class Main
{
    static void exec()
    {
      TestCaml.Search(
        "
http://quad-spsdev:8080/SiteDirectory",
        "Sites",
        "<FieldRef Name=\"ID\" /><FieldRef Name=\"Title\" /><FieldRef Name=\"Division\" /><FieldRef Name=\"Region\" /><FieldRef Name=\"BestBet\" /><FieldRef Name=\"TitlewURL\" />",
        "<Query><Where><Neq><FieldRef Name=\"TitlewURL\" /><value type=\"string\">SiteES</value></Neq></Where></Query>"
                      );
   
    }
}
public class TestCaml
{
    public static SPListItemCollection Search(string UrlSite, string TitleList, string FieldCaml, string QueryCaml)
    {
     
      SPSite oSPSite = new SPSite(UrlSite);
      SPWeb oSPWeb = oSPSite.OpenWeb();
      SPList oSPList = oSPWeb.Lists[TitleList];
      SPQuery query = new SPQuery();
     
      query.Query =  QueryCaml;
      query.ViewFields =  FieldCaml;
      SPListItemCollection listItems = oSPList.GetItems(query);
     return listItems;
    }
}

2.1.06

VS2005 - Conversion de 2003 a 2005

Les envío un link bastante interesante (todavia no lo he probado, pero....) se trata de un wizard que nos ayuda en el update de proyectos realizados en 2003 para pasarlos a 2005.