Desinstalar Plugin en Eclipse Juno

Para desinstalar un plugin en Eclipse Juno tenemos que ir al menu Help - About Eclipse.



 Ahí pulsamos sobre Installations Details.

Nos saldra una ventana como está:





Elegimos el plugin a desinstalar y pulsamos sobre Unistall


Cuando se desinstale nos pedira reiniciar Eclpise y listo!



¿Quieres compartir tu código?, codr.cc es la solución!

codr.cc es una página creada para compartir código.


Al entrar te sale como una especie de bloc de notas donde pordras escribir tu codigo, tambien tienes la posibilidad de usar un archivo que tengas guardado en tu pc.

Le das a Create Code y te lo mostrara bien presentado e indicandote que url tendrán que usar para ver tu código.

Este es un ejemplo -> http://codr.cc/068E7FC51D

Llamar DLL de Visual Basic .NET en Visual Basic 6

Instrucciones para exponer tipos de .NET a COM

Cuando desea exponer tipos en un ensamblado de Microsoft .NET a aplicaciones de modelo de objetos componentes (COM), considerar los siguientes requisitos de interoperabilidad de COM en tiempo de diseño. Administrado tipos ( clase , interfaz , estructura , enumeración y otros) interactúan bien con las aplicaciones de cliente COM cuando siga estas directrices:
  • Definir interfaces y implementar explícitamente en las clases. Interoperabilidad COM proporciona un mecanismo para generar automáticamente una interfaz que contiene todos los miembros de la clase y los miembros de su clase base. Sin embargo, es mejor proporcionar interfaces explícitas y implementar de forma explícita.
  • Declarar tipos administrados todos los que desea exponer a COM como pública. Sólo los tipos públicos en un ensamblado están registrados y exportar a la biblioteca de tipo. Por tanto, sólo los tipos públicos son visibles para COM.
  • Declarar a todos los miembros de tipo (métodos, propiedades, campos y eventos) que desee exponer a COM como pública. Los miembros de tipos públicos también deben ser públicos sean visibles para COM. De forma predeterminada, todos los tipos públicos y miembros son visibles. Utilice el atributo ComVisibleAttribute si tiene que ocultar un miembro de tipo o miembro visibilidad de controles para las aplicaciones de cliente COM o de un tipo.
  • Los tipos deben tener un constructor predeterminado público para ejecutarse a través de COM administrado, tipos públicos son visibles para COM. Sin embargo, sin un constructor público predeterminado (un constructor sin argumentos), COM los clientes no pueden crear una instancia del tipo. Los clientes COM pueden utilizar el tipo si el tipo es crear instancias en otra forma y se devuelve al cliente COM la instancia. Puede incluir constructores sobrecargados que aceptan argumentos distintos para estos tipos. Sin embargo, los constructores que aceptan argumentos sólo se pueden llamar desde código administrado (. NET).
  • Tipos no pueden ser abstractas. Ni los clientes COM como .NET los clientes pueden crear instancias de tipos abstractos.
  • Utilice la plantilla clasecom en Visual Basic .NET o en Visual Basic 2005. Cuando agrega una nueva clase que desea exponer a las aplicaciones COM, considere el uso la plantilla clasecom que se proporciona mediante Visual Basic.NET o Visual Basic 2005. La plantilla clasecom crea una clase que incluye el atributo COMClassAttribute y genera GUID para el CLSID, el identificador de interfaz y su identificador que exponen su tipo. Además, la plantilla clasecom crea un constructor público sin parámetros. Esta es la forma más fácil para crear una nueva clase que sigue las instrucciones para crear tipos de COM al que se puede llamar.

Registrando el ensamblado de .NET para interoperabilidad COM y creando una biblioteca de tipo

Para Visual Basic 6.0 interactuar correctamente con un componente administrado, debe registrar el ensamblado para interoperabilidad COM y generar una biblioteca de tipo. Este registro debe realizarse en cada equipo donde un COM aplicación cliente interactúa con el ensamblado. La biblioteca de tipo proporciona información de tipo sobre los tipos expuestos en el ensamblado a las aplicaciones de cliente COM. El proceso para hacer esto depende de si está trabajando en el equipo de desarrollo o en el equipo de destino.

En el equipo de desarrollo Visual Studio.NET o Microsoft Visual Studio 2005 automáticamente crea una biblioteca de tipo y lo registra durante el proceso de generación si está activada la casilla de verificación Registrar para interoperabilidad COM en Propiedades de configuración del proyecto. Si utilizó la plantilla clasecom cuando creó la clase, Visual Studio .NET o Visual Studio 2005 selecciona automáticamente el de Registrar para interoperabilidad COM casilla de verificación. Para comprobar que está activada la casilla de verificación Registrar para interoperabilidad COM en Visual Studio .NET o Visual Studio 2005, siga estos pasos:
  1. Inicie Visual Studio .NET o Visual Studio 2005.
  2. Abra la solución que contiene el proyecto que desea generar la interoperabilidad COM.
  3. En el menú Ver , haga clic en Solution Explorer .
  4. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto que desea generar la interoperabilidad COM y, a continuación, haga clic en Propiedades .
  5. Haga clic en Propiedades de configuración y, a continuación, haga clic en el nodo Build .

    Nota En Visual Studio 2005, haga clic en compilar en el panel izquierdo.
  6. Haga clic para seleccionar el Register for COM Interop casilla de verificación. Esta opción sólo está habilitada en los proyectos de biblioteca de clases.
  7. Haga clic en Aceptar para cerrar el propiedad páginas cuadro de diálogo.
Si no está instalado Visual Studio .NET o Visual Studio 2005 o si tiene que generar manualmente y registrar un archivo de biblioteca (.tlb) de tipo para el ensamblado administrado, utilice la herramienta Registro de ensamblados (RegAsm.exe) con el / TLB cambiar. También se debe utilizar el modificador / código base si el ensamblado administrado es un ensamblado privado y desea colocar el ensamblado administrado en una carpeta diferente del proceso de host (EXE).

Un ensamblado privado se implementa con una aplicación y está disponible para uso exclusivo de esa aplicación. Otras aplicaciones no comparten el ensamblado privado. Ensamblados privados están diseñados para instalarse en la misma carpeta que el proceso de host (EXE). Con una aplicación de cliente COM, esto implica que el ensamblado se encuentra en la misma carpeta que esa aplicación. Un ensamblado compartido está disponible para uso por varias aplicaciones en el equipo. Para crear un ensamblado compartido, debe firmar el ensamblado con un nombre seguro e instalar al ensamblado en la caché de ensamblados global (GAC) en el equipo de destino.

Para obtener más información acerca de cómo firmar el ensamblado con un nombre seguro e instale al ensamblado en la caché de ensamblados global (GAC), visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx)
Debe utilizar ambos el / tlb: modificador y el / la código base cambiar al registrar el ensamblado. El / tlb: modificador genera y registra una biblioteca de tipo, y el modificador / código base registra la ubicación del ensamblado administrado en el registro de Windows. Si no utiliza el modificador / código base y no se ha instalado el ensamblado en la caché de ensamblados global (GAC), debe colocar una copia del ensamblado en la carpeta de cada aplicación de cliente COM (EXE) para que se puede encontrar el ensamblado de common language Runtime (CLR).

Para generar y registrar una biblioteca de tipo y registrar la ubicación del ensamblado administrado, escriba el comando siguiente en el símbolo del sistema:
/tlb de Regasm AssemblyName.dll: FileName.tlb /CODEBASE

Crear un ensamblado al que se puede llamar de COM en Visual Basic .NET

  1. Inicie Visual Studio .NET o Visual Studio 2005.
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En Tipos de proyecto , haga clic en Proyectos de Visual Basic .

    Nota En Visual Studio2005 haga clic en Visual Basic bajo Tipos de proyecto .
  4. En plantillas , haga clic en Class Library .
  5. Denomine el proyecto TestProj y, a continuación, haga clic en Aceptar .

    De manera predeterminada se crea Class1.
  6. En el menú Ver , haga clic en Solution Explorer .
  7. Haga clic con el botón secundario del mouse en Class1.vb y, a continuación, haga clic en Eliminar . Haga clic en Aceptar para confirmar la eliminación del archivo de origen Class1.vb.
  8. En el menú proyecto , haga clic en Agregar clase .
  9. En plantillas , haga clic en Clase COM .
  10. Asigne a la clase COMClass1.vb el nombre y, a continuación, haga clic en Abrir

    COMClass1 se crea con el código siguiente.
     _
    Public Class ComClass1

    #Region "COM GUIDs"
    ' These GUIDs provide the COM identity for this class
    ' and its COM interfaces. If you change them, existing
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
    Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
    Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region

    ' A creatable COM class must have a Public Sub New()
    ' without parameters. Otherwise, the class will not be
    ' registered in the COM registry and cannot be created
    ' through CreateObject.
    Public Sub New()
    MyBase.New()
    End Sub

    End Class
  11. Agregue la siguiente función a COMClass1.
       Public Function myFunction() As Integer
    Return 100
    End Function
  12. En el Explorador de soluciones, haga clic con el botón secundario en Project Name y, a continuación, haga clic en Propiedades .
  13. En Propiedades de configuración , haga clic en Generar .
  14. Compruebe que se comprueba la Registrar para interoperabilidad COM está activada y, a continuación, haga clic en Aceptar .
  15. En el menú Generar , haga clic en Generar soluciones para generar el proyecto.
  16. Inicie Visual Basic 6.0.
  17. En el menú archivo , haga clic en Nuevo proyecto y, a continuación, haga clic para seleccionar EXE estándar en el cuadro de diálogo Nuevo proyecto .

    De forma predeterminada, se crea un formulario que se denomina Form1.
  18. En el menú proyecto , haga clic en referencias .
  19. En la lista Referencias disponibles , haga doble clic para seleccionar TestProj y, a continuación, haga clic en Aceptar .
  20. Agregue un botón de comando al formulario.
  21. Haga doble clic en Command1 para abrir el código de ventana.
  22. Agregue el código siguiente al evento Command1_Click .
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. En el menú Ejecutar , haga clic en iniciar .
  24. Haga clic en el botón de comando.

    Debe recibir un mensaje que muestra 100.

Sacado del soporte de Microsoft.

Joomla - Añadir mas campos al registro de usuario

Buenas, veamos como podemos añadir facilmente más campos al registro de un usuario sin necesidad de ningun tipo de extensión.


En esté ejemplo yo añadire el campo Empresa.

Bueno, lo primero es añadir los campos en la base de datos.

Vas a la tabla jos_users y añades los campos necesarios, en mi caso añado empresa.

Lo segundo es editar el formulario de registro para añadir los campos que queramos.

Esté es el archivo del formulario /components/com_user/views/register/tmpl/default.php . Lo editamos con cualquier procesador de texto, por ejemplo el bloc de notas.

Si sabemos de HTML os sera muy facil editarlo.

Para el que no:

Lo que hay entre <tr> </tr> es una fila del formulario, es decir, el texto descriptivo y el campo blanco para escribir.

Pues nos copiamos uno, por ejemplo el del usuario:


<label id="usernamemsg" for="username">
Username:
</label>

<input id="username" name="username" value="" type="text" style="font-size: 40px;">escape($this->user->get( 'username' ));?>" class="inputbox required validate-username" maxlength="25" /> *


Ese lo volvemos a pegar debajo y procederemos a editarlo.

Yo cambiaria todos los "username" por "empresa" y quitaria del atributo class "validate-username"

Me quedaría así:

<label id="empresamsg" for="empresa">
Empresa:
</label>


<input id="empresa" name="empresa" size="40" value="" type="text">escape($this->user->get( 'empresa' ));?>" class="inputbox required" maxlength="25" /> *


Guardamos los cambios y podriamos probar la página para ver los resultados.

Este formulario usa un objeto JTABLE de joomla que carga los datos del form sobre la tabla , es decir, en ningun momento ese componente usa SQL puro.

Así que tenemos que añadirle la propiedad "empresa" ¿Como? Pues , buscamos el archivo /libraries/joomla/database/table/user.php y lo editamos con el bloc de notas.

Simplemente tenemos que añadir la declaracion de la variable.

Cogiendo por ejemplo de nuevo el username existe este texto en el archivo


/**
* The login name
*
* @var string
*/
var $username = null;


pues tendriamos que añadir, (yo no le pondre comentarios)

var $empresa = null;


Importante: Está variable tiene que llamarse exactamente igual que el nombre del campo de la base de datos.

Guardamos y listo! A probarlo!

VB.NET - Capturar la rueda del ratón

Para capturar el movimiento de la rueda del ratón se usa el evento MouseWheel

Para capturar si se mueve hacia arriba o hacia abajo se usa el argumento Delta

Lo que devuelve Delta es:

Si es hacia arriba devuelve un Integer con el valor 120
Si es hacia abajo devuelve un Integer con el valor -120

Un ejemplo:


Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel

Select Case e.Delta
Case 120
'Se ha movido hacia arriba
Case -120
'Se ha movido hacia abajo.
End Select

End Sub

Un uso que se me ocurre por ejemplo es aumentar o disminuir una variable Zoom.

VB.NET - Subir fichero a un servidor por FTP

Para subir un fichero a un servidor mediante FTP, ¡¡solo hay que usar una linea!!

Y la linea es........................................................................

My.Computer.Network.UploadFile("FicheroASubir", "CarpetayNombreDelFicheroEnServidor", "UsuarioFTP", "ContraseñaFTP", True o False, 500)

Donde True o False es si quieres mostrar una pantallita con el progreso de la subida.

500 es el TimeOut. (Tiempo de espera por si falla)

VB.NET - Hacer una espera o pausa

Alguna vez es posible que necesitéis que el programa espere un tiempo antes de hacer algo.

Bueno la forma de hacerlo es:

System.Threading.Thread.Sleep(ElTiempoaEsperar)

Cuando llegue ahí el programa esperara el tiempo en milisegundos que le indiquemos.

Por ejemplo, si queremos que espere 3 segundos sería así:

System.Threading.Thread.Sleep(3000)

VB.Net - Comprobar si tu programa está en ejecución.

Función para comprobar si tu programa está en ejecución.

Te puede servir para que tu programa se ejecute solo una vez.

Te devuelve true si ya está en ejecución.

Function ProgramaEjecutado() As Boolean
If UBound(System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Return True
Else
Return False
End If
End Function

VB.Net Dibujar con degradado con Drawin2D

Vamos a ver como podemos darle bonitos colores a nuestros controles a través de la librería Drawin2D

En este ejemplo vamos a hacerlo con un Panel, aunque se puede utilizar con cualquier contenedor que tenga el evento Paint y se pueda poner transparente.

El resultado sería como este:



Bueno vamos al lió!


Lo primero insertamos en el formulario el Panel, y le ponemos en la propiedad BackColor en Transparente (que está en la pestaña Web)

Ahora nos vamos al código e importamos la librería:

Imports System.Drawing.Drawing2D


Ahora nos vamos al evento Paint del panel. Y ponemos esto:

Dim Brocha As LinearGradientBrush
Dim Superficie As Graphics
Dim Rectangulo As Rectangle
Dim Lapiz As Pen

Try

'Aquí igualamos la variable superficie a los argumentos del panel
Superficie = e.Graphics
'Aquí seleccionaremos el color del borde (yo lo he puesto azul oscuro)
Lapiz = New Pen(Color.Navy, 1)

'Le damos el tamaño al rectángulo, cero a la altura y cero a la izquierda y
'el tamaño usamos las propiedades del Panel

Rectangulo = New Rectangle(0, 0, Panel1.Width, Panel1.Height)
'Aquí elegimos los colores del degradado y la forma del degradado
'Aquí esta puesto ForwardDiagonal, es decir, de esquina superior a la esquina inferior
'juega con esa propiedad para ver sus efectos
Brocha = New System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.White, Color.Navy, LinearGradientMode.ForwardDiagonal)

'Aquí pintamos el cuadrado y luego el borde
Superficie.FillRectangle(Brocha, Rectangulo)
Superficie.DrawRectangle(Lapiz, Rectangulo)

'Lo liberamos de la memoria
Lapiz.Dispose()
Superficie.Dispose()
Catch ex As Exception
'No hacemos nada si falla. Si hay error
End Try




Y listo ya tendríamos nuestro panel decorado!!


Tambien, puedes añadir, por ejemplo, un label al Panel y en el mismo paint del Panel añadir que te pinte el Label de otro color, pasandole las propiedades del label

Rectangulo = New Rectangle(Label1.Left, Label1.Top, Label1.Width, Label1.Height)
Brocha = New System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.Yellow, Color.LimeGreen, LinearGradientMode.ForwardDiagonal)
Superficie.FillRectangle(Brocha, Rectangulo)
Superficie.DrawRectangle(Lapiz, Rectangulo)

Quedaría así:






VB.Net - Capturar pantalla

Ahora vamos a crear un jpg que contenga una captura de la pantalla.

Hemos creado una función que devuelve una imagen, usamos el SendKeys para capturar la pantalla y la extraemos del portapapeles, luego llamaremos a la funcion y el resultado lo guardaremos en una ruta del disco duro.
Mira que bonito olle!

Public Function TrincarImagen() As Image

' Tamaño de lo que queremos copiar
' En este caso el tamaño de la ventana principal
Dim fSize As Size = Screen.PrimaryScreen.Bounds.Size
' Creamos el bitmap con el área que vamos a capturar
Dim bm As New Bitmap(fSize.Width, fSize.Height)
' Un objeto Graphics a partir del bitmap
Dim gr As Graphics = Graphics.FromImage(bm)
' Copiar todo el área de la pantalla
gr.CopyFromScreen(0, 0, 0, 0, fSize)

Return bm
End Function

Ahora solo queda llamar a la funcion y guardar la imagen. Seria algo asi:


Dim Pantallazo As Image
Pantallazo = TrincarImagen()
Pantallazo.Save("RUTA\pantallazo.jpg")



Listo!

VB.Net - Exportar DataGridView a Excel

Bueno, lo primero es añadir la referencia Microsoft.Office.Interop.Excel, dependiendo del Office que tengas podrás usar la versión 11 (hasta 2003) o la 12 (2007 jiji).

Bueno en resumen, lo que hago es, crear tres variables, que una sera el programa, el libro y otra la hoja. Luego solo nos queda escribir, y te saldrá un bonito cuento :)

Aquí os dejo la función, no es nada difícil de comprender.


Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean

'Creamos las variables
Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

Try
'Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add()

' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = ElGrid.ColumnCount
Dim NRow As Integer = ElGrid.RowCount

'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
For i As Integer = 1 To NCol
exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString
'exHoja.Cells.Item(1, i).HorizontalAlignment = 3
Next

For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
exHoja.Cells.Item(Fila + 2, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value
Next
Next
'Titulo en negrita, Alineado al centro y que el tamaño de la columna se
ajuste al texto
exHoja.Rows.Item(1).Font.Bold = 1
exHoja.Rows.Item(1).HorizontalAlignment = 3
exHoja.Columns.AutoFit()


'Aplicación visible
exApp.Application.Visible = True

exHoja = Nothing
exLibro = Nothing
exApp = Nothing

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
'http://programaciontotal.blogspot.com
Return False
End Try

Return True

End Function



La función devuelve un True o un False, dependiendo si el resultado ha sido satisfactorio.

Si quieres también le puedes añadir un ProgressBar e ir sumándole uno al valor del Progress dentro del For.


Para llamar a la función es:

GridAExcel(nombreDeTuGrid)



Saludos

VB.Net - Enviar email

Ahora te voy a explicar como mandar un e-mail con visual basic .NET

Es bastante sencillo, esta sería la función:

Private Sub EnviarCorreo()


Dim smtpCliente As New
System.Net.Mail.SmtpClient("smtp.tudominio.com", 25)
Dim ELCorreo As New
System.Net.Mail.MailMessage("elqueenvia@tudominio.com",
"elquerecibe@dominio.com", "Asunto", "Mensaje")
smtpCliente.Credentials = New System.Net.NetworkCredential("Usuario", "Contraseña")
smtpCliente.Send(ELCorreo)

End Sub



Esa es la función, solo tienes que sustituir los datos por los tuyos :)

Por supuesto está función la podrás parametrizar por ejemplo, con todos los datos parametrizados.


Private Sub EnviarCorreo(ByVal Smtp As String, ByVal De As String, ByVal Para
As String, ByVal Asunto As String, ByVal Mensaje As String, ByVal Usuario As
String
, ByVal Pass As String)


Dim smtpCliente As New System.Net.Mail.SmtpClient(Smtp, 25)
Dim ELCorreo As New
System.Net.Mail.MailMessage(De, Para, Asunto,
Mensaje)
smtpCliente.Credentials = New System.Net.NetworkCredential(Usuario,
Pass)
smtpCliente.Send(ELCorreo)


End Sub


Ya solo queda llamar a la función con los parametros y ¡vuala! mensaje enviado :)


Acabo de actualizar.... si quieres mandar un archivo adjunto, tendrias que poner esto antes del Send

Dim att As New System.Net.Mail.Attachment("RUTAARCHIVO.EXT")
ELCorreo.Attachments.Add(att)

Aceptar más de una conexión con Winsock

Os voy a mostrar, como podemos aceptar varias peticiones de conexión con Winsock. Aqui doy por hecho, de que conoceis Winsock, solo que está parte es mas rebuscada.

Bueno al tajo, la idea es, mantener el control winsock siempre a la escucha, cuando llegue una petición cargamos otro Winsock y a ese se la asignamos. Así podras tener tantas conexiones quieras!

Veamos, lo primero que tienes que hacer, en el modo diseño, ir a las propiedades del Winsock y en Index poner un 0 (cero). Así conseguimos poder crear un array de controles del Winsock.

Ahora lo pondremos a escuchar, pondremos el primero, ahora mismo el unico winsock que tenemos, que es Winsock1(0), yo lo he hecho en el Load, tu donde tu quieras, un botón, ect.

Private Sub Form_Load()

'Aqui pones el puerto que quieras
Winsock1(0).LocalPort = "666"

'dejo escuchando conexiones entrantes
Winsock1(0).Listen


End Sub
Bien, primero creamos una variable en General para controlar el numero de Winsock que vamos creando y para luego poder usarlos. Yo la he llamado N ( no me he comido mucho la cabeza)

Dim N as Integer

Ahora utilizaremos el evento ConnectionRequest, para aceptar la petición de conexión, pero hay que modificarlo para que nos pille que control usamos, es decir, añadir el Index (lo marco en rojo).

Ahora, hacer mágia! jiji



Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)

On Error Resume Next

'Comprobamos que el Index sea el 0, nuestro escuchador de por vida.
If Index = 0 Then
'Sumamos uno al contador de Winsocks
N = N + 1
'Cargamos un nuevo Winsock
Load Winsock1(N)
Winsock1(N).LocalPort = 0
Winsock1(N).Accept requestID 'Aceptamos la conexión

end if

end sub

Listo! Ya tendriamos un winsock conectado. Para usarlo sería por ejemplo:

Winsock(1).SenData "Ou yeah!"

Recuerda que en cada evento del Winsock, tendrás que añadir el Index as Integer.

VB.Net - Windows Mobile - Leer coordenadas GPS

Buenas, os voy a poner los pasos para leer las coordenadas del GPS.

Las coordenadas se obtienen mediante el puerto COM, que tenga configurado el PDA para acceder al GPS. En mi caso es el COM4, eso lo mirais en la configuración del PDA. (Si no lo encontrais , id probando :D )

Bueno, al lio!

En el form añadir dos labels, txtLong y txtLat. Un botón llamado btnEmp. Además añadir un control SerialPort y un Timer.

Ahora pasamos a codificar.

Primero añadimos las librerias:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel

Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.IO.Ports

Creamos las variables:
#Region "Variables"
Public Latitud As String
Public Longitud As String
#End Region
Ahora vamos a crear el constructor.

#Region "Constructor"
Public Sub New()
' Esto es necesario
InitializeComponent()
' Aqui intentamos abri el puerto
Try
SerialPort1.PortName = "COM4"
SerialPort1.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
Timer1.Enabled = False
btnEmp.Text = "Empezar"
Return
End Try
End Sub
#End Region
Creamos el código del botón, se limitara a apagar o encender el Timer:

Private Sub btnEmp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEmp.Click
'Comprobamos el estado del timer y lo invertimos.
If Timer1.Enabled = True Then
Timer1.Enabled = False
Else
Timer1.Enabled = True
End If
If btnEmp.Text = "Empezar" Then
btnEmp.Text = "Parar"
Else
btnEmp.Text = "Empezar"
End If
End Sub
Bueno ya nos queda configurar el Timer. Por el puerto Com entran muchas lineas de datos llamadas NEMA.

El código comprueba en primer luga, si el puerto serie está abierto , si lo es, lee la salida de datos en una cadena. Cada linea se separa con el simbolo del dolar $ . La cadena que nos interes, comienza por "GPGGA"; este subcadena contiene la latitud y la longitud, además de más información, separada por comas.

Este es el código:

Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

If SerialPort1.IsOpen Then
'En esta variable, insertamos todo lo leido del Puerto.
Dim datos As String = SerialPort1.ReadExisting()
'Aqui creamos las diferentes lineas, basandonos en el simbolo del dolar
Dim strArr() As String = datos.Split("$")
Dim i As Integer = 0

If strArr.Length > 1 Then
Try
For i = 0 To strArr.Length
'Ahora obtenemos los datos, separados por las comas.
Dim strTemp As String = strArr(i)
Dim lineArr() As String = strTemp.Split(",")

'Si la linea es GPGGA, cojemos los bloques de cadena 2 y 4 (latidud y longitud) y pasamos los datos obtenidos a coordenadas UTM.
If
(lineArr(0) = "GPGGA") Then
Try
Dim dLat As Decimal
Dim dLon As Decimal

dLat = Convert.ToDecimal(lineArr(2))
dLat = dLat / 100
Dim lat() As String = dLat.ToString().Split(".")
Latitud = lat(0).ToString() + "." + ((Convert.ToDouble(lat(1)) / 60)).ToString("#####")
txtLat.Text = Latitud

dLon = Convert.ToDecimal(lineArr(4))
dLon = dLon / 100
Dim lon() As String = dLon.ToString().Split(".")
Longitud = lon(0).ToString() + "." + ((Convert.ToDouble(lon(1)) / 60)).ToString("#####")
txtLong.Text = Longitud

Catch
' Si no podemos leer el GPS
'txtLat.Text = "No puedo leer GPS "
'txtLong.Text = "No puedo leer GPS"
End Try
End If
Next
Catch
'No hacemos nada
End Try
End If
Else
txtLat.Text = "Puerto COM Cerrado"
txtLong.Text = "Puerto COM Cerrado"
End If

End Sub



Ya podeís leer las coordenadas de vuestro GPS!.

Windows Mobile - VB.Net / C++ | Crear apliación de SQL Server

Sacado del Msdn

1-Crear una aplicación de SQL Server para dispositivos inteligentes


En esta sección, aprenderá a crear un proyecto para dispositivos inteligentes en Microsoft Visual Studio 2005, agregar funcionalidad de Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) al proyecto y, después, crear una base de datos de SQL Server Mobile usando el espacio de nombres System.Data.SqlServerCe. En la .NET Framework Reference Documentation hay temas de referencia para el espacio de nombres System.Data.SqlServerCe.
Crear un proyecto con dispositivos inteligentesCrear un proyecto con dispositivos inteligentes

Para crear una aplicación para dispositivos inteligentes, primero debe crear el proyecto en Visual Studio 2005.
Para crear un proyecto para dispositivos inteligentes

1. En Visual Studio 2005, en el menú Archivo, seleccione Nuevo y, a continuación, seleccione Proyecto.
2. En la lista Tipos de proyecto del cuadro de diálogo Nuevo proyecto, expanda el lenguaje de programación que desee usar y, a continuación, seleccione Dispositivo inteligente.
3. En la lista Plantillas, seleccione el tipo de proyecto que desee crear. Por ejemplo, si va a programar una aplicación para Pocket PC 2003, seleccione Aplicación para Pocket PC 2003.
4. Escriba un nombre y ubicación para el proyecto y, a continuación, haga clic en Aceptar.

Visual Studio crea un nuevo proyecto y muestra el formulario principal (Form1). La pantalla será parecida al sistema operativo que elija.

Agregar SQLServer Mobile al proyectoAgregar SQLServer Mobile al proyecto

El siguiente paso para crear una aplicación compatible con SQL Server Mobile consiste en agregar una referencia al ensamblado de SQL Server Mobile.
Para agregar una referencia a SQL Server Mobile

1. En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Referencias y seleccione Agregar referencia.
Nota: Si la carpeta Referencias no aparece en el Explorador de soluciones, haga clic en Mostrar todos los archivos en la parte superior del Explorador de soluciones.

2. En la lista de ensamblados de .NET, seleccione System.Data.SqlServerCe y, a continuación, haga clic en Aceptar. Si System.Data.SqlServerCe no aparece, siga estos pasos:
2.1. Haga clic en Examinar.
2.2. Busque el siguiente directorio:
C:\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE
2.3. Seleccione System.Data.SqlServerCe.dll y, a continuación, haga clic en Aceptar.

La lista de referencias del Explorador de soluciones incluye ahora System.Data.SqlServerCe y su proyecto puede utilizar este ensamblado.

3. En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Form1.cs o Form1.vb y seleccione Ver código.

4.
En la parte superior del código para el formulario, agregue una directiva para utilizar el espacio de nombres System.Data.SqlServerCe:

C#

using System.Data.SqlServerCe;

Visual Basic
Imports System.Data.SqlServerCe


Usar los objetos de SQLServer MobileUsar los objetos de SQLServer Mobile

Después de agregar el espacio de nombres System.Data.SqlServerCe, puede empezar a usar código en él mediante los objetos de SQL Server Mobile. En el siguiente ejemplo de código se muestra cómo usar el objeto Engine para crear un archivo de base de datos de SQL Server Mobile.

C#
using System.Xml;
using System.Data;
using System.Data.SqlServerCe;
using System.Data.Common;
using System.Windows.Forms;
using System.IO;

public class NETCF_SqlCeEngine
{
public void CreateDB()
{
File.Delete("Test.sdf");
string connString = "Data Source='Test.sdf'; LCID=1033; Password=\"s$;2'!dS64\"; Encrypt = TRUE;";
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();
}
}

Visual Basic

Imports System
Imports System.Xml
Imports System.Data
Imports System.Data.SqlServerCe
Imports System.Data.Common
Imports System.Windows.Forms
Imports System.IO

Public Class NETCF_SqlCeEngine

Public Sub CreateDB()
File.Delete("Test.sdf")
Dim connString As String = "Data Source='Test.sdf'; LCID=1033; Password=""s$;2'!dS64""; Encrypt = TRUE;"
Dim engine As New SqlCeEngine(connString)
engine.CreateDatabase()
End Sub
End Class


2-Un ejemplo sacado del MSDN

http://msdn2.microsoft.com/es-es/library/ms174006.aspx

3-Usar el método CreateDatabase

El método CreateDatabase permite crear una nueva base de datos de SQL Server 2005 Mobile Edition (SQL Server Mobile) en el entorno de desarrollo Microsoft Visual Studio .NET.
EjemplosEjemplos

El código siguiente muestra cómo crear un nuevo objeto SqlCeEngine y luego llamar el método CreateDatabase para crear una nueva base de datos de SQL Server Mobile. En este ejemplo, se utiliza un objeto System.IO.File para comprobar si el archivo de base de datos existe. Si existe, se elimina la base de datos. A continuación, se crea una nueva base de datos con el método CreateDatabase.

C#
if (File.Exists("Test.sdf"))
File.Delete("Test.sdf");

string connStr = "Data Source = Test.sdf; Password = ;";

SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
Visual Basic
If File.Exists("Test.sdf") Then
File.Delete("Test.sdf")
End If
Dim connStr As String = "Data Source = Test.sdf; Password = ;"

Dim engine As New SqlCeEngine(connStr)
engine.CreateDatabase()
engine.Dispose()

Visual Basic - Extraer el codigo fuente de una Web

Para extraer el codigo fuente de una Web, usaremos el control Inet.

Para usar el control inet, añadimos el control Microsoft Internet Transfer Control.

Y asi extraeremos el codigo:


Dim Datos As String

Datos = Inet1.OpenURL("http://programaciontotal.blogspot.com")
Ahora la variable datos, contendrá el codigo fuente de la página.

BlackBerry - Pasar al Connector los datos del APN

Para usar los datos de la Apn en el momento de la conexión, sin tener que configurarlo en la Blackberry, usa este codigo en la conexión.

conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=TUAPN;tunnelauthusername=USUARIO;tunnelauthpassword=CONTRASEÑA");
Esto es un ejemplo de como seria con Vodafone:

conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=ac.vodafone.es;tunnelauthusername=vodafone;tunnelauthpassword=vodafone");

Visual Basic - Pasar un Recordset a Excel

Esto es una función, que le pasais, un Recorset Ado, un Spreadsheet (ahora lo defino), una Barra de progreso y un Label (para mostrar las cantidades) y pasara todo el recorset a un Excel

Spreadsheet es un control, es un libro Excel en si. Para utilizarlo, en componentes, añadis Microsoft Office Web Components. Os aparecera una serie de controles de Office, pues agregais al Formulario el de Excel.

¡Pues no necesitais mas! Aqui esta la función


Function RellenaExcel(Rs As ADODB.Recordset, ByRef Excel As Spreadsheet, ByRef Barra As ProgressBar, MostrarCantidades As Label) As Boolean

Dim Max As Integer
Dim Fila As Integer


Barra.Min = 0
Barra.Value = 0
If Rs.RecordCount <> 0 Then
Barra.Max = Rs.RecordCount
MostrarCantidades.Caption = "0 / " + Str(Barra.Max)
Else
MsgBox "El resultado de la consulta no contiene datos.", vbExclamation
Exit Function
End If
Max = Rs.Fields.Count - 1

For i = 0 To Max
Excel.ActiveSheet.Cells(1, i + 1).Value = Rs(i).Name
Next i


Fila = 2
Barra.Value = 1
MostrarCantidades.Caption = "1 / " + Str(Barra.Max)

While Not Rs.EOF

For i = 0 To Max
Excel.ActiveSheet.Cells(Fila, i + 1).Value = Rs(i).Value
Next i

Barra.Value = Fila - 1
DoEvents
MostrarCantidades.Caption = Str(Barra.Value) + " / " + Str(Barra.Max)
Fila = Fila + 1
Rs.MoveNext

Wend


With Excel.ActiveSheet.Range(Excel.Cells(1, 1), Excel.ActiveSheet.Cells(1, Max + 1))
.Font.Bold = True
.Font.Size = 10
.Font.Name = "Arial"
.Font.Color = vbWhite
'.Borders.Color = vbGreen
.Interior.Color = RGB(0, 0, 128)
.Borders.Color = RGB(0, 0, 0)

End With
With Excel.ActiveSheet.Range(Excel.Cells(2, 1), Excel.ActiveSheet.Cells(Fila - 1, Max + 1)).Font
.Size = 9
'.Bold = True
.Name = "Arial"
End With

Set rango = Excel.Worksheets("Hoja1").Range("A1:BV" + Trim(Fila + 1))
rango.Columns.AutoFit

RellenaExcel = True



End Function

Visual Basic - Conectar con Base de Datos Acces

Lo primero que hay que hacer es añadir la referencia Microsoft ADO.

Ahora, conectamos con las base de datos.

Set BaseDatos = Workspaces(0).OpenDatabase("RutadelaBD\bd.mdb", False, False)

Cuando conectamos, abrimos un recorset con la consulta que queremos realizar.

SQL = "SELECT * FROM Clientes"

Set Rs = BaseDatos.OpenRecordset(SQL, dbOpenSnapshot)

Luego imprimimos los resultados

Msgbox "Nombre: "+ Rs!Nombre

Si la consulta devuelve mas de una fila, para pasar de un registro a otro utilizamos, Rs.MoveNext

Un ejemplo sería:

while not Rs.EOF
combo1.addItem Rs!Nombre
Rs.MoveNext
end while

El while not Rs.EOF significa, Mientras no sea el final del RecordSet

BlackBerry - Pin, número de télefono e IMEI.

Para capturar el Pin y el teléfono (el teléfono que captura es el que esta configurado en la BlackBerry,(opciones avanzadas -> SIM)) usamos las clases DeviceInfo y Phone

String Pin = (Integer.toString(net.rim.device.api.system.DeviceInfo
.getDeviceId(),16)).toUpperCase();

String Tel = "" + net.rim.blackberry.api.phone.Phone
.getDevicePhoneNumber(fals
e)
;

String imei = new String(net.rim.device.api.system.GPRSInfo.imeiToString
(net.rim.device.api.system.GPRSInfo.getIMEI()));;

Como veis, para poder capturar el Pin correctamente, hemos tenido que pasar la información que recibimos a Hexadecimal.