Transparencia de un Form

. martes 10 de febrero de 2009
0 comentarios

Insertar el siguiente Codigo en un Modulo:

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 


Nota: Debe estar todo en una sola linea (Usar el Visor de Texto API, que viene con Visual Basic)



Insertar el siguiente Codigo en CommandButton para probar:



Private Sub Command1_Click()
Dim Resp As Long
Resp = SetWindowLong(Me.hWnd, -20, &H20&)
Form1.Refresh
End Sub



Una mejora seria en un modulo:







Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const WS_EX_TRANSPARENT = &H20&
Public Const GWL_HINSTANCE = (-6)
Public Const GWL_EXSTYLE = (-20)
Public Const GWL_HWNDPARENT = (-8)
Public Const GWL_ID = (-12)
Public Const GWL_STYLE = (-16)
Public Const GWL_USERDATA = (-21)
Public Const GWL_WNDPROC = (-4)





Y en el form_load:



Call SetWindowLong(Form1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)

Encriptación - Desencriptación

.
0 comentarios

Para encriptar y desencriptar datos podemos utilizar las siguientes funciones:

Public Shared Function EncryptString(ByVal InputString As String, ByVal SecretKey As String, Optional ByVal CyphMode As CipherMode = CipherMode.ECB) As String
Try
Dim Des As New TripleDESCryptoServiceProvider
'Put the string into a byte array
Dim InputbyteArray() As Byte = Encoding.UTF8.GetBytes(InputString)
'Create the crypto objects, with the key, as passed in
Dim hashMD5 As New MD5CryptoServiceProvider
Des.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(SecretKey))
Des.Mode = CyphMode
Dim ms As MemoryStream = New MemoryStream
Dim cs As CryptoStream = New CryptoStream(ms, Des.CreateEncryptor(), _
CryptoStreamMode.Write)
'Write the byte array into the crypto stream
'(It will end up in the memory stream)
cs.Write(InputbyteArray, 0, InputbyteArray.Length)
cs.FlushFinalBlock()
'Get the data back from the memory stream, and into a string
Dim ret As StringBuilder = New StringBuilder
Dim b() As Byte = ms.ToArray
ms.Close()
Dim I As Integer
For I = 0 To UBound(b)
'Format as hex
ret.AppendFormat("{0:X2}", b(I))
Next

Return ret.ToString()
Catch ex As System.Security.Cryptography.CryptographicException
ExceptionManager.Publish(ex)
Return ""
End Try

End Function

Public Shared Function DecryptString(ByVal InputString As String, ByVal SecretKey As String, Optional ByVal CyphMode As CipherMode = CipherMode.ECB) As String
If InputString = String.Empty Then
Return ""
Else
Dim Des As New TripleDESCryptoServiceProvider
'Put the string into a byte array
Dim InputbyteArray(CType(InputString.Length / 2 - 1, Integer)) As Byte '= Encoding.UTF8.GetBytes(InputString)
'Create the crypto objects, with the key, as passed in
Dim hashMD5 As New MD5CryptoServiceProvider

Des.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(SecretKey))
Des.Mode = CyphMode
'Put the input string into the byte array

Dim X As Integer

For X = 0 To InputbyteArray.Length - 1
Dim IJ As Int32 = (Convert.ToInt32(InputString.Substring(X * 2, 2), 16))
Dim BT As New ByteConverter
InputbyteArray(X) = New Byte
InputbyteArray(X) = CType(BT.ConvertTo(IJ, GetType(Byte)), Byte)
Next

Dim ms As MemoryStream = New MemoryStream
Dim cs As CryptoStream = New CryptoStream(ms, Des.CreateDecryptor(), _
CryptoStreamMode.Write)

'Flush the data through the crypto stream into the memory stream
cs.Write(InputbyteArray, 0, InputbyteArray.Length)
cs.FlushFinalBlock()

'//Get the decrypted data back from the memory stream
Dim ret As StringBuilder = New StringBuilder
Dim B() As Byte = ms.ToArray

ms.Close()

Dim I As Integer

For I = 0 To UBound(B)
ret.Append(Chr(B(I)))
Next

Return ret.ToString()
End If
End Function



Fuente

Acceso a base de datos de SQL Server CE mediante dispositivos móviles

.
3 comentarios

Microsoft SQL Server CE es la base de datos compacta para el desarrollo rápido de aplicaciones, tanto en el modo nativo como en .NET Compact Framework, que amplía las capacidades de administración de datos empresariales a los dispositivos.

SQL Server CE es una poderosa herramienta para el fácil desarrollo de aplicaciones móviles que soportan sintaxis del Lenguaje de Consulta Estructurado (SQL) proporcionando de un modelo de desarrollo consistente con SQL Server.
Este esta diseñado para integrarse con el Microsoft .NET Compact Framework por medio del Visual Studio simplificando el desarrollo de aplicaciones con bases de datos en dispositivos inteligentes.
Desarrollo
En este artículo vamos a crear una aplicación completa para dispositivos móviles en C#, la cual hará un acceso a una base de datos de SQL Server CE y la muestre en un DataGrid para consultarla desde nuestro dispositivo.
Primero vamos a crear un nuevo proyecto en C# y va a ser una Aplicación para Smart Device, a esta la llamaremos SQLServerCESample.
Después Visual Studio nos preguntará la plataforma de destino que vamos a utilizar, en este caso le indicaremos que será para PocketPC y será un proyecto para una aplicación Windows, imagen 2.
Dado esto nos aparecerá una forma similar a la de Windows Forms donde vamos a comenzar a hacer nuestro ejemplo, imagen 3.
Vamos a arrastrar a nuestra forma desde la barra de herramientas un DataGrid y un Boton para realizar nuestro ejemplo, imagen 4.

Después de llevado a cabo esto vamos a requerir agregar dos referencias a nuestro proyecto, estas serían:


System.Data
System.Data.Common
System.Data.SqlServerCe



Ya que tenemos nuestras referencias procederemos a programar nuestra APP de la siguiente manera:




Primeramente vamos a crear un método que se encarge de crear una tabla en nuestro SQL Server CE, el código que muestro a continuación trae sus respectivos comentarios:







private void CrearTabla()
{
//Indicamos el origen de datos
SqlCeEngine objEg = new SqlCeEngine("Data Source=\\my documents\\MiBD.SDF");
SqlCeConnection objCon = new SqlCeConnection("Data Source=\\my documents\\MiBD.SDF");

try
{
//Creamos la Base de Datos de SQL Server CE
objEg.CreateDatabase();
objEg.Dispose();
objCon.Open();

//Creamos la tabla Amigos
SqlCeCommand objCom = new SqlCeCommand("CREATE TABLE Amigos(ID INT PRIMARY KEY, Nombre NVARCHAR(10))", objCon);
objCom.ExecuteNonQuery();

//Le insertamos información a la tabla Amigos
objCom.CommandText = "INSERT INTO Amigos VALUES(1, 'MARIO')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(2, 'LUIS')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(3, 'PUYUL')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(4, 'CANCALAS')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(5, 'ELIGIO')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(6, 'COBRA DE OQUIS')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(7, 'MAL AMIGO')";
objCom.ExecuteNonQuery();

objCom.CommandText = "INSERT INTO Amigos VALUES(8, 'NEGRERO')";
objCom.ExecuteNonQuery();
}

catch (SqlCeException ex)
{
Console.WriteLine(ex.Message);
}

finally
{
objCon.Close();
objCon.Dispose();
}
}


Básicamente lo que se hizo fue indicarle al SQL Server CE la ruta de nuestra base de datos, llevar a cabo la conexión, y mediante instrucciones de SQL básicas fuimos creando primeramente la tabla y después los elementos de la misma.




Ya que hemos creado el método que nos va a dar la capacidad de crear dicha tabla, ahora vamos a mostrar los registros que acabamos de crear en nuestro DataGrid, para eso vamos al evento _Click de nuestro botón que agregamos y codificamos lo siguiente:









private void btnCargar_Click(object sender, System.EventArgs e)
{
//Creamos la tabla
CrearTabla();

//Especificamos el origen de datos
SqlCeConnection oCon = new SqlCeConnection("Data Source=\\my documents\\MiBD.SDF");
SqlCeDataAdapter oDA = new SqlCeDataAdapter("SELECT * FROM Amigos", oCon);

DataSet oDS = new DataSet("Amigos");

try
{
//Rellenamos el dataset
oDA.Fill(oDS);
}

catch (SqlCeException ex )
{
MessageBox.Show(ex.Message);
}

finally
{
//Asignamos al datasource del datagrid nuestro dataset
oDA.Dispose();
this.dgElements.DataSource = oDS.Tables[0].DefaultView;
}
}





Lo que se hizo básicamente es crear dicha conexión e hicimos el DataBind de nuestro DataGrid a dicho origen de datos. Si corremos nuestra APP nos aparecerá algo como la imagen 6.

Aquí nos pregunta que elijamos el dispositivo al cual queremos implementar nuestra solución. A lo cual da dos opciones:



  • Dispositivo Pocket PC. Si ya tenemos una PocketPC física conectada y sincronizada directamente con nuestra PC.


  • Emulador de PocketPC 2002. Pequeño Software que emula el dispositivo en el cual podemos hacer pruebas como si tuviéramos la PocketPC físicamente.

    Escogemos la que mejor sea nuestro caso y damos clic en Implementar.


    En dado caso de que no tengamos instalado el Compact .Net Framework, Visual Studio instalará todo lo que se requiera para tal efecto. Esto toma algo de tiempo (2 mins). Ya después terminada la instalación de componentes (si se requieren) y llevada a cabo la implementación en nuestra PocketPC



  • Fuente

    Abrir la calculadora de Windows

    .
    0 comentarios

    Para abrir la calculadora de Windows desde nuestra aplicación insertar el siguiente codigo en un boton o donde queramos:

    Dim Proceso As New Process()
    Proceso.StartInfo.FileName = "calc.exe"
    Proceso.StartInfo.Arguments = ""
    Proceso.Start()