tag:blogger.com,1999:blog-6139105261694106522024-03-14T08:24:33.790+01:00Programación TotalTodo sobre el Desarrollo de aplicaciones, Visual Basic, .NET, Java, J2ME, C++, HTML, BlackBerry, PocketPaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-613910526169410652.post-46914195091523143562013-02-27T14:16:00.002+01:002013-02-27T14:17:18.007+01:00Desinstalar Plugin en Eclipse JunoPara <b>desinstalar un plugin en Eclipse Juno</b> tenemos que ir al menu <i>Help - About Eclipse</i>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ1GtHRst5pXrmRN8ZmiE-lBtKQXr2h8lzoO0wf35EyxL2FVssodeDi61-x_iQPnDV10iCNzN-bCHrTEAkLNn6pDtfxjimT9RQINGV3uQmLayzQLpllIp9bZ50nhYb4lykatZM_ujlL_EZ/s1600/About+Eclipse+_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ1GtHRst5pXrmRN8ZmiE-lBtKQXr2h8lzoO0wf35EyxL2FVssodeDi61-x_iQPnDV10iCNzN-bCHrTEAkLNn6pDtfxjimT9RQINGV3uQmLayzQLpllIp9bZ50nhYb4lykatZM_ujlL_EZ/s320/About+Eclipse+_002.png" width="320" /></a></div>
<br />
<br />
Ahí pulsamos sobre <i>Installations Details</i>.<br />
<br />
Nos saldra una ventana como está:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1DhWBf_GwG-h1LkC6WRoSsY2vzGdcRT5uNxP93y1OuLNWqcSC6KrIhAk_B3Bp7sPf8Qcod_yokPPQWx0T5fzPnqRAuEbtYaE_fwblz_AAvMRvJ3wgw-edkgcDYSnGi5v8VA2lvUz8Ke5k/s1600/Eclipse+Installation+Details+_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1DhWBf_GwG-h1LkC6WRoSsY2vzGdcRT5uNxP93y1OuLNWqcSC6KrIhAk_B3Bp7sPf8Qcod_yokPPQWx0T5fzPnqRAuEbtYaE_fwblz_AAvMRvJ3wgw-edkgcDYSnGi5v8VA2lvUz8Ke5k/s320/Eclipse+Installation+Details+_001.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
Elegimos el<b> plugin a desinstalar</b> y pulsamos sobre <i>Unistall</i> <br />
<br />
<br />
Cuando se desinstale nos pedira reiniciar Eclpise y listo!<br />
<br />
<br />
<br />PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com1tag:blogger.com,1999:blog-613910526169410652.post-9753141582691827342011-02-27T16:14:00.002+01:002011-02-27T16:20:21.528+01:00¿Quieres compartir tu código?, codr.cc es la solución!<b>codr.cc </b>es una página creada para compartir código.<div><br /></div><div>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. </div><div><br /></div><div>Le das a Create Code y te lo mostrara bien presentado e indicandote que url tendrán que usar para ver tu código. </div><div><br /></div><div>Este es un ejemplo -> <a href="http://codr.cc/068E7FC51D">http://codr.cc/068E7FC51D</a></div>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com7tag:blogger.com,1999:blog-613910526169410652.post-16975213349033884052010-07-13T15:52:00.002+02:002010-07-13T15:55:05.608+02:00Llamar DLL de Visual Basic .NET en Visual Basic 6<h3 id="tocHeadRef">Instrucciones para exponer tipos de .NET a COM</h3><script type="text/javascript"> loadTOCNode(2, 'moreinformation'); </script>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 (<b> clase </b>, <b> interfaz </b>, <b> estructura </b>, <b> enumeración </b> y otros) interactúan bien con las aplicaciones de cliente COM cuando siga estas directrices: <ul><li>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.</li><li>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. </li><li>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 <b> ComVisibleAttribute </b> si tiene que ocultar un miembro de tipo o miembro visibilidad de controles para las aplicaciones de cliente COM o de un tipo.</li><li>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).</li><li>Tipos no pueden ser abstractas. Ni los clientes COM como .NET los clientes pueden crear instancias de tipos abstractos.</li><li>Utilice la plantilla <b> clasecom </b> 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 <b> clasecom </b> que se proporciona mediante Visual Basic.NET o Visual Basic 2005. La plantilla <b> clasecom </b> crea una clase que incluye el atributo <b> COMClassAttribute </b> y genera GUID para el CLSID, el identificador de interfaz y su identificador que exponen su tipo. Además, la plantilla <b> clasecom </b> 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.</li></ul><h3 id="tocHeadRef">Registrando el ensamblado de .NET para interoperabilidad COM y creando una biblioteca de tipo</h3><script type="text/javascript"> loadTOCNode(2, 'moreinformation'); </script>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.<br /><br />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 <strong class="uiterm"> Registrar para interoperabilidad COM </strong> en Propiedades de <b> configuración </b> del proyecto. Si utilizó la plantilla <b> clasecom </b> cuando creó la clase, Visual Studio .NET o Visual Studio 2005 selecciona automáticamente el de <strong class="uiterm"> Registrar para interoperabilidad COM </strong> casilla de verificación. Para comprobar que está activada la casilla de verificación <strong class="uiterm"> Registrar para interoperabilidad COM </strong> en Visual Studio .NET o Visual Studio 2005, siga estos pasos: <ol><li>Inicie Visual Studio .NET o Visual Studio 2005.</li><li>Abra la solución que contiene el proyecto que desea generar la interoperabilidad COM.</li><li>En el menú <strong class="uiterm"> Ver </strong>, haga clic en <strong class="uiterm"> Solution Explorer </strong>.</li><li>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 <strong class="uiterm"> Propiedades </strong>.</li><li>Haga clic en <strong class="uiterm"> Propiedades de configuración </strong> y, a continuación, haga clic en el nodo <strong class="uiterm"> Build </strong>.<br /><br /><b> Nota </b> En Visual Studio 2005, haga clic en <strong class="uiterm"> compilar </strong> en el panel izquierdo.</li><li>Haga clic para seleccionar el <strong class="uiterm"> Register for COM Interop </strong> casilla de verificación. Esta opción sólo está habilitada en los proyectos de biblioteca de clases.</li><li>Haga clic en <strong class="uiterm"> Aceptar </strong> para cerrar el <strong class="uiterm"> propiedad páginas </strong> cuadro de diálogo.</li></ol>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 <b> / TLB </b> cambiar. También se debe utilizar el modificador <b> / código base </b> si el ensamblado administrado es un ensamblado privado y desea colocar el ensamblado administrado en una carpeta diferente del proceso de host (EXE).<br /><br />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.<br /><br />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:<div class="indent"><a href="http://msdn2.microsoft.com/en-us/library/xc31ft41%28vs.71%29.aspx">http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx</a><span class="pLink"> (http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx) </span><span class="kb_space"></span></div>Debe utilizar ambos el <b> / tlb: </b> modificador y el <b> / la código base </b> cambiar al registrar el ensamblado. El <b> / tlb: </b> modificador genera y registra una biblioteca de tipo, y el modificador <b> / código base </b> registra la ubicación del ensamblado administrado en el registro de Windows. Si no utiliza el modificador <b> / código base </b> 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).<br /><br />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: <div class="indent"><span class="userInput"> /tlb de Regasm <var>AssemblyName.dll</var>: <var>FileName.tlb</var> /CODEBASE </span></div><h4 id="tocHeadRef">Crear un ensamblado al que se puede llamar de COM en Visual Basic .NET</h4><script type="text/javascript"> loadTOCNode(3, 'moreinformation'); </script><ol><li>Inicie Visual Studio .NET o Visual Studio 2005. </li><li>En el menú <strong class="uiterm"> archivo </strong>, seleccione <strong class="uiterm"> nuevo </strong> y, a continuación, haga clic en <strong class="uiterm"> proyecto </strong>.</li><li>En <strong class="uiterm"> Tipos de proyecto </strong>, haga clic en <strong class="uiterm"> Proyectos de Visual Basic </strong>.<br /><br /><b> Nota </b> En Visual Studio2005 haga clic en <strong class="uiterm"> Visual Basic </strong> bajo <strong class="uiterm"> Tipos de proyecto </strong>.</li><li>En <strong class="uiterm"> plantillas </strong>, haga clic en <strong class="uiterm"> Class Library </strong>.</li><li>Denomine el proyecto TestProj y, a continuación, haga clic en <strong class="uiterm"> Aceptar </strong>.<br /><br />De manera predeterminada se crea Class1.</li><li>En el menú <strong class="uiterm"> Ver </strong>, haga clic en <strong class="uiterm"> Solution Explorer </strong>.</li><li>Haga clic con el botón secundario del mouse en <strong class="uiterm"> Class1.vb </strong> y, a continuación, haga clic en <strong class="uiterm"> Eliminar </strong>. Haga clic en <strong class="uiterm"> Aceptar </strong> para confirmar la eliminación del archivo de origen Class1.vb.</li><li>En el menú <strong class="uiterm"> proyecto </strong>, haga clic en <strong class="uiterm"> Agregar clase </strong>.</li><li>En <strong class="uiterm"> plantillas </strong>, haga clic en <strong class="uiterm"> Clase COM </strong>.</li><li>Asigne a la clase COMClass1.vb el nombre y, a continuación, haga clic en <strong class="uiterm"> Abrir </strong><br /><br />COMClass1 se crea con el código siguiente. <div class="kb_codebody"><div class="kb_codecontent"><code></code><pre class="code"><comclass(comclass1.classid,> _<br />Public Class ComClass1<br /><br />#Region "COM GUIDs"<br /> ' These GUIDs provide the COM identity for this class<br /> ' and its COM interfaces. If you change them, existing<br /> ' clients will no longer be able to access the class.<br /> Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"<br /> Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"<br /> Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"<br />#End Region<br /><br /> ' A creatable COM class must have a Public Sub New()<br /> ' without parameters. Otherwise, the class will not be<br /> ' registered in the COM registry and cannot be created<br /> ' through CreateObject.<br /> Public Sub New()<br /> MyBase.New()<br /> End Sub<br /><br />End Class</comclass(comclass1.classid,></pre></div></div></li><li>Agregue la siguiente función a COMClass1. <div class="kb_codebody"><div class="kb_codecontent"><code></code><pre class="code"> Public Function myFunction() As Integer<br /> Return 100<br /> End Function</pre></div></div></li><li>En el Explorador de soluciones, haga clic con el botón secundario en <strong class="uiterm"><var>Project Name</var></strong> y, a continuación, haga clic en <strong class="uiterm"> Propiedades </strong>.</li><li>En <strong class="uiterm"> Propiedades de configuración </strong>, haga clic en <strong class="uiterm"> Generar </strong>.</li><li>Compruebe que se comprueba la <strong class="uiterm"> Registrar para interoperabilidad COM </strong> está activada y, a continuación, haga clic en <strong class="uiterm"> Aceptar </strong>. </li><li>En el menú <strong class="uiterm"> Generar </strong>, haga clic en <strong class="uiterm"> Generar soluciones </strong> para generar el proyecto.</li><li>Inicie Visual Basic 6.0.</li><li>En el menú <strong class="uiterm"> archivo </strong>, haga clic en <strong class="uiterm"> Nuevo proyecto </strong> y, a continuación, haga clic para seleccionar <strong class="uiterm"> EXE estándar </strong> en el cuadro de diálogo <strong class="uiterm"> Nuevo proyecto </strong>.<br /><br />De forma predeterminada, se crea un formulario que se denomina Form1.</li><li>En el menú <strong class="uiterm"> proyecto </strong>, haga clic en <strong class="uiterm"> referencias </strong>. </li><li>En la lista <strong class="uiterm"> Referencias disponibles </strong>, haga doble clic para seleccionar <strong class="uiterm"> TestProj </strong> y, a continuación, haga clic en <strong class="uiterm"> Aceptar </strong>.</li><li>Agregue un botón de comando al formulario.</li><li>Haga doble clic en <strong class="uiterm"> Command1 </strong> para abrir el código de ventana.</li><li>Agregue el código siguiente al evento <b> Command1_Click </b>. <div class="kb_codebody"><div class="kb_codecontent"><code></code><pre class="code">Dim myObject As TestProj.COMClass1<br />Set myObject = New TestProj.COMClass1<br />MsgBox myObject.myFunction</pre></div></div></li><li>En el menú <strong class="uiterm"> Ejecutar </strong>, haga clic en <strong class="uiterm"> iniciar </strong>.</li><li>Haga clic en el botón de comando.<br /><br />Debe recibir un mensaje que muestra 100.</li></ol><br />Sacado del soporte de Microsoft.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com5tag:blogger.com,1999:blog-613910526169410652.post-34683171746149721752010-05-24T10:25:00.007+02:002010-05-24T12:59:37.607+02:00Joomla - Añadir mas campos al registro de usuarioBuenas, veamos como podemos añadir facilmente más campos al registro de un usuario sin necesidad de ningun tipo de extensión.<br /><br /><br />En esté ejemplo yo añadire el campo Empresa.<br /><br />Bueno, lo primero es añadir los campos en la base de datos.<br /><br />Vas a la tabla <span style="font-weight: bold;">jos_users</span> y añades los campos necesarios, en mi caso añado empresa.<br /><br />Lo segundo es editar el formulario de registro para añadir los campos que queramos.<br /><br />Esté es el archivo del formulario <span style="font-weight: bold;">/components/com_user/views/register/tmpl/default.php</span> . Lo editamos con cualquier procesador de texto, por ejemplo el bloc de notas.<br /><br />Si sabemos de HTML os sera muy facil editarlo.<br /><br />Para el que no:<br /><br />Lo que hay entre <span style="font-weight: bold;"><tr> </tr></span> es una fila del formulario, es decir, el texto descriptivo y el campo blanco para escribir.<br /><br />Pues nos copiamos uno, por ejemplo el del usuario:<br /><br /><br /><blockquote><label id="usernamemsg" for="username"><br />Username:<br /></label><br /><br /><input id="username" name="username" value="" type="text" style="font-size: 40px;">escape($this->user->get( 'username' ));?>" class="inputbox required validate-username" maxlength="25" /> *</blockquote><br /><br />Ese lo volvemos a pegar debajo y procederemos a editarlo.<br /><br />Yo cambiaria todos los "username" por "empresa" y quitaria del atributo class "validate-username"<br /><br />Me quedaría así:<br /><blockquote><br /><label id="empresamsg" for="empresa"><br />Empresa:<br /></label><br /><br /><br /><input id="empresa" name="empresa" size="40" value="" type="text">escape($this->user->get( 'empresa' ));?>" class="inputbox required" maxlength="25" /> *</blockquote><br /><br />Guardamos los cambios y podriamos probar la página para ver los resultados.<br /><br />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.<br /><br />Así que tenemos que añadirle la propiedad "empresa" ¿Como? Pues , buscamos el archivo <span style="font-weight: bold;">/libraries/joomla/database/table/user.php</span> y lo editamos con el bloc de notas.<br /><br />Simplemente tenemos que añadir la declaracion de la variable.<br /><br />Cogiendo por ejemplo de nuevo el username existe este texto en el archivo<br /><br /><blockquote><br />/**<br />* The login name<br />*<br />* @var string<br />*/<br />var $username = null;<i nput="" id="username" name="username" value="" type="text" size="40px"></i></blockquote><i nput="" id="username" name="username" value="" type="text" size="40px"><br /><br />pues tendriamos que añadir, (yo no le pondre comentarios)<br /><br /><blockquote>var $empresa = null;</blockquote><br /><br /><span style="font-weight: bold;">Importante: Está variable tiene que llamarse exactamente igual que el nombre del campo de la base de datos.</span><br /><br />Guardamos y listo! A probarlo!</i>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com4tag:blogger.com,1999:blog-613910526169410652.post-4291342944986594122010-01-27T13:55:00.006+01:002016-10-13T11:22:47.446+02:00VB.NET - Capturar la rueda del ratónPara capturar el movimiento de la rueda del ratón se usa el evento <span style="font-weight: bold;">MouseWheel</span><br />
<br />
Para capturar si se mueve hacia arriba o hacia abajo se usa el argumento<span style="font-weight: bold;"> Delta</span><br />
<br />
Lo que devuelve Delta es:<br />
<br />
Si es hacia arriba devuelve un <span style="color: rgb(0 , 0 , 153);">Integer </span>con el valor <span style="font-weight: bold;">120</span><br />
Si es hacia abajo devuelve un <span style="color: rgb(0 , 0 , 153);">Integer </span>con el valor <span style="font-weight: bold;">-120</span><br />
<br />
Un ejemplo:<br />
<br />
<blockquote>
<br />
<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">Private</span> </span>Sub Form1_MouseWheel(<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">ByVal</span> </span>sender <span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">As</span> <span style="color: #3366ff;">Object</span></span>, <span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">ByVal</span> </span>e <span style="color: rgb(51 , 102 , 255);">As</span> System.Windows.Forms.MouseEventArgs) <span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">Handles</span> </span>Me.MouseWheel<br />
<br />
<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">Select</span> <span style="color: #3366ff;">Case</span></span> e.Delta<br />
<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">Case</span> </span>120<br />
<span style="color: rgb(51 , 255 , 51);">'Se ha movido hacia arriba</span><br />
<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">Case</span> </span>-120<br />
<span style="color: rgb(51 , 255 , 51);">'Se ha movido hacia abajo.</span><br />
<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">End</span> <span style="color: #3366ff;">Select</span></span><br />
<br />
<span style="color: rgb(0 , 0 , 153);"><span style="color: #3366ff;">End</span> <span style="color: #3366ff;">Sub</span></span></blockquote>
<br />
Un uso que se me ocurre por ejemplo es aumentar o disminuir una variable Zoom.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com0tag:blogger.com,1999:blog-613910526169410652.post-9021997356594322072010-01-19T12:22:00.003+01:002010-01-19T13:01:01.183+01:00VB.NET - Subir fichero a un servidor por FTPPara subir un fichero a un servidor mediante FTP, ¡¡solo hay que usar una linea!!<br /><br />Y la linea es........................................................................<br /><br /><span style="color: rgb(51, 51, 255);"></span><blockquote><span style="color: rgb(51, 51, 255);">My</span>.Computer.Network.UploadFile("FicheroASubir", "CarpetayNombreDelFicheroEnServidor", "UsuarioFTP", "ContraseñaFTP", <span style="color: rgb(0, 0, 153);">True</span> o <span style="color: rgb(0, 0, 153);">False</span>, 500)</blockquote><br />Donde <span style="color: rgb(0, 0, 153);">True</span> o <span style="color: rgb(0, 0, 153);">False </span>es si quieres mostrar una pantallita con el progreso de la subida.<br /><br />500 es el TimeOut. (Tiempo de espera por si falla)PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com9tag:blogger.com,1999:blog-613910526169410652.post-26256209873199491552009-10-22T12:52:00.005+02:002009-10-22T13:00:42.120+02:00VB.NET - Hacer una espera o pausaAlguna vez es posible que <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">necesitéis</span> que el programa espere un tiempo antes de hacer algo.<br /><br />Bueno la forma de hacerlo es:<br /><br /><blockquote>System.Threading.Thread.Sleep(ElTiempoaEsperar)<br /></blockquote><br />Cuando llegue <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">ahí</span> el programa esperara el tiempo en milisegundos que le indiquemos.<br /><br />Por ejemplo, si queremos que espere 3 segundos sería así:<br /><br /><blockquote>System.Threading.Thread.Sleep(3000)</blockquote><br /><blockquote></blockquote>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com16tag:blogger.com,1999:blog-613910526169410652.post-29756428992463184432009-09-14T18:18:00.003+02:002009-09-14T18:23:12.610+02:00VB.Net - Comprobar si tu programa está en ejecución.Función para comprobar si tu programa está en ejecución.<br /><br />Te puede servir para que tu programa se ejecute solo una vez.<br /><br />Te devuelve true si ya está en ejecución.<br /><br /> <span style="color: rgb(0, 0, 153);"></span><blockquote><span style="color: rgb(0, 0, 153);">Function <span style="color: rgb(0, 0, 0);">ProgramaEjecutado</span></span>() <span style="color: rgb(0, 0, 102);">As Boolean</span><br /> <span style="color: rgb(0, 0, 102);"> If </span>UBound(System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 <span style="color: rgb(0, 0, 153);">Then</span><br /><span style="color: rgb(0, 0, 153);"> Return True</span><br /><span style="color: rgb(0, 0, 153);"> Else</span><br /><span style="color: rgb(0, 0, 153);"> Return False</span><br /><span style="color: rgb(0, 0, 153);"> End If</span><br /><span style="color: rgb(0, 0, 153);"> End Function</span></blockquote><span style="color: rgb(0, 0, 153);"></span>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com3tag:blogger.com,1999:blog-613910526169410652.post-24597351281127598012009-06-19T10:49:00.009+02:002009-06-19T12:07:00.894+02:00VB.Net Dibujar con degradado con Drawin2DVamos a ver como podemos darle bonitos colores a nuestros controles a <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">través</span> de la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">librería</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Drawin</span>2D<br /><br />En este ejemplo vamos a hacerlo con un <span style="font-weight: bold;">Panel</span>, aunque se puede utilizar con cualquier contenedor que tenga el evento <span style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_3">Paint</span></span> y se pueda poner <span style="font-weight: bold;">transparente</span>.<br /><br />El resultado sería como este:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUmTjKhXaLy1ZEutHV9wFjTkHYv0EKAjWYoe9NnQykaFqbPNP9oShJreXsIIG0qBfCVpLnqA-fgXWUc-ts8uPVIpWmpZQyaQyBbu42IVr3XIyhH5lmUJAv1ptCU1kwTomfVWW8yCvG4bb4/s1600-h/PanelColoreado.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 140px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUmTjKhXaLy1ZEutHV9wFjTkHYv0EKAjWYoe9NnQykaFqbPNP9oShJreXsIIG0qBfCVpLnqA-fgXWUc-ts8uPVIpWmpZQyaQyBbu42IVr3XIyhH5lmUJAv1ptCU1kwTomfVWW8yCvG4bb4/s200/PanelColoreado.JPG" alt="" id="BLOGGER_PHOTO_ID_5348959608309908786" border="0" /></a><br /><br />Bueno vamos al <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">lió</span>!<br /><br /><br />Lo primero insertamos en el formulario el Panel, y le ponemos en la propiedad <span style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_5">BackColor</span></span> en <span style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_6">Transparente</span></span> <span style="font-style: italic;">(que está en la pestaña <span class="blsp-spelling-error" id="SPELLING_ERROR_7">Web</span>)<br /><br />Ahora nos vamos al código e importamos la <span class="blsp-spelling-corrected" id="SPELLING_ERROR_8">librería</span>:<br /></span><br /><blockquote><span class="blsp-spelling-error" id="SPELLING_ERROR_9">Imports</span> System.Drawing.Drawing2D</blockquote><span style="font-style: italic;"><br /></span><span style="font-style: italic;"><br /></span>Ahora nos vamos al evento <span style="font-weight: bold;"><span class="blsp-spelling-error" id="SPELLING_ERROR_10">Paint</span> </span>del panel<span style="font-style: italic;">. </span>Y ponemos esto:<span style="font-style: italic;"><br /></span><br /> <span style="color: rgb(0, 0, 153);"></span><blockquote><span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_11">Dim</span> </span>Brocha <span style="color: rgb(0, 0, 153);">As </span><span class="blsp-spelling-error" id="SPELLING_ERROR_12">LinearGradientBrush</span><br /> <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_13">Dim</span> </span>Superficie <span style="color: rgb(0, 0, 153);">As </span><span class="blsp-spelling-error" id="SPELLING_ERROR_14">Graphics</span><br /> <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_15">Dim</span> </span><span class="blsp-spelling-error" id="SPELLING_ERROR_16">Rectangulo</span> <span style="color: rgb(0, 0, 153);">As </span><span class="blsp-spelling-error" id="SPELLING_ERROR_17">Rectangle</span><br /> <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_18">Dim</span> </span><span class="blsp-spelling-error" id="SPELLING_ERROR_19">Lapiz</span> <span style="color: rgb(0, 0, 153);">As </span><span class="blsp-spelling-error" id="SPELLING_ERROR_20">Pen</span><br /><br /><span style="color: rgb(0, 0, 153);"> <span class="blsp-spelling-error" id="SPELLING_ERROR_21">Try</span></span><br /><br /> <span style="color: rgb(0, 102, 0);">'<span class="blsp-spelling-corrected" id="SPELLING_ERROR_22">Aquí</span> igualamos la variable superficie a los argumentos del panel</span><br /> Superficie = e.<span class="blsp-spelling-error" id="SPELLING_ERROR_23">Graphics</span><br /><span style="color: rgb(0, 102, 0);"> '<span class="blsp-spelling-corrected" id="SPELLING_ERROR_24">Aquí</span> seleccionaremos el color del borde (yo lo he puesto azul oscuro)</span><br /> <span class="blsp-spelling-error" id="SPELLING_ERROR_25">Lapiz</span> = <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_26">New</span> </span><span class="blsp-spelling-error" id="SPELLING_ERROR_27">Pen</span>(Color.<span class="blsp-spelling-error" id="SPELLING_ERROR_28">Navy</span>, 1)<br /><br /><span style="color: rgb(0, 102, 0);"> 'Le damos el tamaño al <span class="blsp-spelling-corrected" id="SPELLING_ERROR_29">rectángulo</span>, cero a la altura y cero a la izquierda y<br />'el tamaño usamos las propiedades del Panel</span><br /> <span class="blsp-spelling-error" id="SPELLING_ERROR_30">Rectangulo</span> = <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_31">New</span> </span><span class="blsp-spelling-error" id="SPELLING_ERROR_32">Rectangle</span>(0, 0, Panel1.<span class="blsp-spelling-error" id="SPELLING_ERROR_35">Width</span>, Panel1.<span class="blsp-spelling-error" id="SPELLING_ERROR_36">Height</span>)<br /><span style="color: rgb(0, 102, 0);"> '<span class="blsp-spelling-corrected" id="SPELLING_ERROR_37">Aquí</span> elegimos los colores del degradado y la forma del degradado</span><br /><span style="color: rgb(0, 102, 0);"> '<span class="blsp-spelling-corrected" id="SPELLING_ERROR_38">Aquí</span> esta puesto <span class="blsp-spelling-error" id="SPELLING_ERROR_39">ForwardDiagonal</span>, es decir, de esquina superior a la esquina inferior</span><br /><span style="color: rgb(0, 102, 0);"> 'juega con esa propiedad para ver sus efectos</span><br /> Brocha = <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_40">New</span> </span>System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.<span class="blsp-spelling-error" id="SPELLING_ERROR_41">White</span>, Color.<span class="blsp-spelling-error" id="SPELLING_ERROR_42">Navy</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_43">LinearGradientMode</span>.<span class="blsp-spelling-error" id="SPELLING_ERROR_44">ForwardDiagonal</span>)<br /><br /><span style="color: rgb(0, 102, 0);"> '<span class="blsp-spelling-corrected" id="SPELLING_ERROR_45">Aquí</span> pintamos el cuadrado y luego el borde</span><br /> Superficie.<span class="blsp-spelling-error" id="SPELLING_ERROR_46">FillRectangle</span>(Brocha, <span class="blsp-spelling-error" id="SPELLING_ERROR_47">Rectangulo</span>)<br /> Superficie.<span class="blsp-spelling-error" id="SPELLING_ERROR_48">DrawRectangle</span>(<span class="blsp-spelling-error" id="SPELLING_ERROR_49">Lapiz</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_50">Rectangulo</span>)<br /><br /><span style="color: rgb(0, 102, 0);"> 'Lo liberamos de la memoria</span><br /> <span class="blsp-spelling-error" id="SPELLING_ERROR_51">Lapiz</span>.<span class="blsp-spelling-error" id="SPELLING_ERROR_52">Dispose</span>()<br /> Superficie.<span class="blsp-spelling-error" id="SPELLING_ERROR_53">Dispose</span>()<br /> <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_54">Catch</span> </span><span class="blsp-spelling-error" id="SPELLING_ERROR_55">ex</span> <span style="color: rgb(0, 0, 153);">As </span><span class="blsp-spelling-error" id="SPELLING_ERROR_56">Exception</span><br /> <span style="color: rgb(0, 102, 0);">'No hacemos nada si falla. Si hay error</span><br /> <span style="color: rgb(0, 0, 153);"><span class="blsp-spelling-error" id="SPELLING_ERROR_57">End</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_58">Try</span></span></blockquote><span style="font-style: italic;"><br /><br /></span><br /><br />Y listo ya <span class="blsp-spelling-corrected" id="SPELLING_ERROR_59">tendríamos</span> nuestro panel decorado!!<br /><br /><br />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<br /><br /><blockquote>Rectangulo = <span style="color: rgb(0, 0, 153);">New </span>Rectangle(Label1.Left, Label1.Top, Label1.Width, Label1.Height)<br />Brocha = <span style="color: rgb(0, 0, 153);">New </span>System.Drawing.Drawing2D.LinearGradientBrush(Rectangulo, Color.Yellow, Color.LimeGreen, LinearGradientMode.ForwardDiagonal)<br /> Superficie.FillRectangle(Brocha, Rectangulo)<br /> Superficie.DrawRectangle(Lapiz, Rectangulo)<br /></blockquote><br />Quedaría así:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji2AMyDGl8Z6UExl301_rvc5YVuWb-rAYZ7eMXk_vgDmZde1zk9asxYNedo9rd2981IyqiIS8FxV9JDhhsohDzSszp71TSHZgvUxA2lLDFeF4LzKWTpjLRNTKh29WLIss4lhMpzUSXb6la/s1600-h/PanelColoreado2.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 156px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji2AMyDGl8Z6UExl301_rvc5YVuWb-rAYZ7eMXk_vgDmZde1zk9asxYNedo9rd2981IyqiIS8FxV9JDhhsohDzSszp71TSHZgvUxA2lLDFeF4LzKWTpjLRNTKh29WLIss4lhMpzUSXb6la/s200/PanelColoreado2.JPG" alt="" id="BLOGGER_PHOTO_ID_5348978056611535698" border="0" /></a><br /><br /><span style="font-style: italic;"><br /><br /><br /></span>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com4tag:blogger.com,1999:blog-613910526169410652.post-42026293321658519662009-06-09T15:48:00.003+02:002011-01-25T11:55:16.602+01:00VB.Net - Capturar pantallaAhora vamos a crear un jpg que contenga una captura de la pantalla.<br /><br />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.<br />Mira que bonito olle!<br /><br /><blockquote> <span style="color: rgb(0, 0, 153);">Public Function</span> TrincarImagen() <span style="color: rgb(0, 0, 153);">As Image</span><br /><br /><span class="Apple-style-span" ></span> <span style="color: rgb(0, 102, 0);"> ' Tamaño de lo que queremos copiar</span><br /> <span style="color: rgb(0, 102, 0);">' En este caso el tamaño de la ventana principal</span><br /> <span style="color: rgb(51, 102, 102);">Dim </span>fSize <span style="color: rgb(0, 0, 153);">As </span>Size = Screen.PrimaryScreen.Bounds.Size<br /> <span style="color: rgb(0, 102, 0);"> ' Creamos el bitmap con el área que vamos a capturar</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>bm <span style="color: rgb(0, 0, 153);">As New</span> Bitmap(fSize.Width, fSize.Height)<br /> <span style="color: rgb(0, 102, 0);">' Un objeto Graphics a partir del bitmap</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>gr <span style="color: rgb(0, 0, 153);">As </span>Graphics = Graphics.FromImage(bm)<br /> <span style="color: rgb(0, 102, 0);">' Copiar todo el área de la pantalla</span><br /> gr.CopyFromScreen(0, 0, 0, 0, fSize)<br /> <br /> <span style="color: rgb(0, 0, 153);">Return <span style="color: rgb(0, 0, 0);">bm</span></span><br /><span style="color: rgb(0, 0, 153);"> End Function</span></blockquote><br />Ahora solo queda llamar a la funcion y guardar la imagen. Seria algo asi:<br /><br /><br /> <blockquote> <span style="color: rgb(0, 0, 153);">Dim </span>Pantallazo <span style="color: rgb(0, 0, 153);">As </span>Image<br /> <span style="color: rgb(0, 0, 153);"></span>Pantallazo = TrincarImagen()<br /> <span style="color: rgb(0, 0, 153);"></span>Pantallazo.Save("RUTA\pantallazo.jpg")</blockquote><br /><br /><br />Listo!PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com11tag:blogger.com,1999:blog-613910526169410652.post-13668607091837522662009-06-08T15:52:00.005+02:002012-02-13T03:21:11.085+01:00VB.Net - Exportar DataGridView a ExcelBueno, lo primero es añadir la referencia <span style="font-weight: bold;">Microsoft.Office.Interop.Excel</span>, dependiendo del Office que tengas podrás usar la versión 11 (hasta 2003) o la 12 (2007 jiji).<br /><br />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 :)<br /><br />Aquí os dejo la función, no es nada difícil de comprender.<br /><br /><br /><blockquote> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Function</span> </span>GridAExcel(<span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">ByVal</span> </span>ElGrid <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">As</span> </span>DataGridView) <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">As Boolean</span><br /><br /></span><span style="color: rgb(0, 102, 0);"></span><span style="color: rgb(0, 102, 0);"> 'Creamos las variables</span><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Dim</span> </span>exApp As New Microsoft.Office.Interop.Excel.Application<br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Dim</span> </span>exLibro As Microsoft.Office.Interop.Excel.Workbook<br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Dim</span> </span>exHoja As Microsoft.Office.Interop.Excel.Worksheet<br /><br /> <span style="color: rgb(51, 102, 255);">Try</span><br /><span style="color: rgb(0, 102, 0);"> 'Añadimos el Libro al programa, y la hoja al libro</span><br /> exLibro = exApp.Workbooks.Add<br /> exHoja = exLibro.Worksheets.Add()<br /> <br /><span style="color: rgb(0, 102, 0);"> ' ¿Cuantas columnas y cuantas filas?</span><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Dim</span> </span>NCol <span style="color: rgb(51, 102, 255);">As Integer</span> = ElGrid.ColumnCount<br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Dim</span> </span>NRow <span style="color: rgb(51, 102, 255);">As Integer</span> = ElGrid.RowCount<br /><br /><span style="color: rgb(0, 102, 0);">'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.</span><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">For</span> </span>i <span style="color: rgb(51, 102, 255);">As Intege</span><span style="color: rgb(51, 102, 255);">r</span> = 1 <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">To</span> </span>NCol<br /> exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString<br /> 'exHoja.Cells.Item(1, i).HorizontalAlignment = 3<br /> <span style="color: rgb(51, 102, 255);">Next</span><br /><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">For</span> </span>Fila<span style="color: rgb(51, 102, 255);"> </span><span style="color: rgb(51, 102, 255);">As Integer</span> = 0 <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">To</span> </span>NRow - 1<br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">For</span> </span>Col <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">As</span> <span style="color: rgb(51, 102, 255);">Integer</span></span> = 0 To NCol - 1<br /> exHoja.Cells.Item(Fila + 2, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value<br /> <span style="color: rgb(51, 102, 255);">Next</span><br style="color: rgb(51, 102, 255);"> <span style="color: rgb(51, 102, 255);">Next</span><br /><span style="color: rgb(0, 102, 0);"> 'Titulo en negrita, Alineado al centro y que el tamaño de la columna se</span><br /><span style="color: rgb(0, 102, 0);"> ajuste al texto</span><br /> exHoja.Rows.Item(1).Font.Bold = 1<br /> exHoja.Rows.Item(1).HorizontalAlignment = 3<br /> exHoja.Columns.AutoFit()<br /><br /><br /><span style="color: rgb(0, 102, 0);"> 'Aplicación visible</span><br /> exApp.Application.Visible = True<br /><br /> exHoja = <span style="color: rgb(51, 102, 255);">Nothing</span><br /> exLibro = <span style="color: rgb(51, 102, 255);">Nothing</span><br /> exApp = <span style="color: rgb(51, 102, 255);">Nothing</span><br /><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Catch</span> </span>ex <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">As</span> <span style="color: rgb(0, 0, 0);">Exception</span></span><br /> MsgBox(ex.Message, MsgBoxStyle.Critical, <span style="color: rgb(153, 0, 0);">"Error al exportar a Excel"</span>)<br /> <span style="color: rgb(0, 102, 0);">'http://programaciontotal.blogspot.com</span><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Return</span> </span>False<br /> <span style="color: rgb(51, 102, 255);">End Try</span><br /><br /> <span style="color: rgb(0, 0, 153);"><span style="color: rgb(51, 102, 255);">Return</span> </span>True<br /><br /><span style="color: rgb(0, 0, 153);"> <span style="color: rgb(51, 102, 255);">End Function</span></span><br /><br /><br /></blockquote><br />La función devuelve un True o un False, dependiendo si el resultado ha sido satisfactorio.<br /><br />Si quieres también le puedes añadir un ProgressBar e ir sumándole uno al valor del Progress dentro del For.<br /><br /><br />Para llamar a la función es:<br /><br /> <blockquote>GridAExcel(nombreDeTuGrid)</blockquote><br /><br /><br />SaludosPaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com117tag:blogger.com,1999:blog-613910526169410652.post-18730185609858552622009-04-23T16:42:00.003+02:002009-06-09T16:08:53.937+02:00VB.Net - Enviar emailAhora te voy a explicar como mandar un e-mail con visual basic .NET<br /><br />Es bastante sencillo, esta sería la función:<br /><br /><blockquote><p><span style="color: rgb(0, 0, 153);">Private Sub</span> EnviarCorreo()</p><p><br /><span style="color: rgb(0, 0, 102);">Dim</span> smtpCliente<span style="color: rgb(0, 0, 102);"> As New</span><br />System.Net.Mail.SmtpClient(<span style="color: rgb(153, 0, 0);">"smtp.tudominio.com"</span>, 25)<br /><span style="color: rgb(0, 0, 153);">Dim</span> ELCorreo <span style="color: rgb(0, 0, 153);">As New<br /></span>System.Net.Mail.MailMessage(<span style="color: rgb(153, 0, 0);">"elqueenvia@tudominio.com"</span>,<br /><span style="color: rgb(153, 0, 0);">"elquerecibe@dominio.com"</span>, <span style="color: rgb(153, 0, 0);">"Asunto"</span>, <span style="color: rgb(153, 0, 0);">"Mensaje"</span>)<br />smtpCliente.Credentials = <span style="color: rgb(0, 0, 153);">New</span> System.Net.NetworkCredential(<span style="color: rgb(153, 0, 0);">"Usuario"</span>, <span style="color: rgb(153, 0, 0);">"Contraseña"</span>)<br />smtpCliente.Send(ELCorreo)<br /><br /><span style="color: rgb(0, 0, 153);">End Sub</span><br /></p></blockquote><br /><br />Esa es la función, solo tienes que sustituir los datos por los tuyos :)<br /><br />Por supuesto está función la podrás parametrizar por ejemplo, con todos los datos parametrizados.<br /><br /><br /><blockquote><p><span style="color: rgb(0, 0, 153);">Private Sub</span> EnviarCorreo(<span style="color: rgb(0, 0, 153);">ByVal</span> Smtp<span style="color: rgb(0, 0, 153);"> As String</span>, <span style="color: rgb(0, 0, 153);">ByVal</span> De <span style="color: rgb(0, 0, 153);">As String</span>, <span style="color: rgb(51, 102, 102);">ByVal</span> Para<br /><span style="color: rgb(0, 0, 153);">As String</span>, <span style="color: rgb(0, 0, 153);">ByVal</span> Asunto <span style="color: rgb(0, 0, 153);">As String</span>, <span style="color: rgb(0, 0, 153);">ByVal</span> Mensaje <span style="color: rgb(0, 0, 153);">As String</span>, <span style="color: rgb(0, 0, 153);">ByVal</span> Usuario <span style="color: rgb(0, 0, 153);">As<br />String</span>, <span style="color: rgb(0, 0, 153);">ByVal</span> Pass <span style="color: rgb(0, 0, 153);">As String</span>)</p><p><br /><span style="color: rgb(0, 0, 153);">Dim</span> smtpCliente <span style="color: rgb(0, 0, 153);">As New </span>System.Net.Mail.SmtpClient(Smtp, 25)<br /><span style="color: rgb(0, 0, 153);">Dim <span style="color: rgb(0, 0, 0);">ELCorreo</span> As New</span><br />System.Net.Mail.MailMessage(De, Para, Asunto,<br />Mensaje)<br />smtpCliente.Credentials = <span style="color: rgb(0, 0, 153);">New</span> System.Net.NetworkCredential(Usuario,<br />Pass)<br />smtpCliente.Send(ELCorreo)</p><p><br /><span style="color: rgb(0, 0, 153);">End Sub</span></p></blockquote><br />Ya solo queda llamar a la función con los parametros y ¡vuala! mensaje enviado :)<br /><br /><br />Acabo de actualizar.... si quieres mandar un archivo adjunto, tendrias que poner esto antes del <span style="font-weight: bold;">Send</span><br /><br /><blockquote>Dim att As New System.Net.Mail.Attachment("RUTAARCHIVO.EXT")<br />ELCorreo.Attachments.Add(att)</blockquote>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com10tag:blogger.com,1999:blog-613910526169410652.post-50711495349807731742009-04-01T12:17:00.004+02:002009-04-01T13:10:28.031+02:00Aceptar más de una conexión con WinsockOs voy a mostrar, como podemos aceptar varias peticiones de conexión con <span style="font-weight: bold;">Winsock</span>. Aqui doy por hecho, de que conoceis Winsock, solo que está parte es mas rebuscada.<br /><br />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!<br /><br />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.<br /><br />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.<br /><br /><span style="color: rgb(0, 0, 153);"></span><blockquote><span style="color: rgb(0, 0, 153);">Private Sub</span> Form_Load()<br /><br /> <span style="color: rgb(0, 102, 0);">'Aqui pones el puerto que quieras</span><br /> Winsock1(0).LocalPort = "666"<br /><br /> <span style="color: rgb(0, 102, 0);">'dejo escuchando conexiones entrantes</span><br /> Winsock1(0).Listen<br /><br /><br /><span>End Sub</span></blockquote>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)<br /><blockquote><br /><span style="color: rgb(0, 0, 153);">Dim </span>N <span style="color: rgb(0, 0, 153);">as Integer</span></blockquote><br />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).<br /><br />Ahora, hacer mágia! jiji<br /><br /><br /><br /><blockquote><span style="color: rgb(0, 0, 153);">Private Sub</span> Winsock1_ConnectionRequest(<span style="color: rgb(204, 0, 0);">Index As Integer,</span> <span style="color: rgb(0, 0, 153);">ByVal </span>requestID <span style="color: rgb(0, 0, 153);">As Long</span>)<br /><br /><span style="color: rgb(0, 0, 153);">On Error Resume Next</span><br /><br /><span style="color: rgb(0, 102, 0);">'Comprobamos que el Index sea el 0, nuestro escuchador de por vida.</span><br /><span style="color: rgb(0, 0, 153);">If </span>Index = 0 <span style="color: rgb(0, 0, 153);">Then</span><br /> <span style="color: rgb(0, 102, 0);">'Sumamos uno al contador de Winsocks</span><br /> N = N + 1<br /> <span style="color: rgb(0, 102, 0);">'Cargamos un nuevo Winsock</span><br /> Load Winsock1(N)<br /> Winsock1(N).LocalPort = 0<br /> Winsock1(N).Accept requestID<span style="color: rgb(0, 102, 0);"> 'Aceptamos la conexión</span><br /><br /><span style="color: rgb(0, 0, 153);">end if</span><br /><br /><span style="color: rgb(0, 0, 153);">end sub</span><br /></blockquote><br />Listo! Ya tendriamos un winsock conectado. Para usarlo sería por ejemplo:<br /><blockquote><br />Winsock(1).SenData "Ou yeah!"</blockquote><br />Recuerda que en cada evento del Winsock, tendrás que añadir el Index as Integer.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com5tag:blogger.com,1999:blog-613910526169410652.post-64322556394653352852009-03-10T12:07:00.007+01:002009-03-11T13:12:11.356+01:00VB.Net - Windows Mobile - Leer coordenadas GPSBuenas, os voy a poner los pasos para leer las coordenadas del GPS.<br /><br />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 )<br /><br />Bueno, al lio!<br /><br />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.<br /><br />Ahora pasamos a codificar.<br /><br />Primero añadimos las librerias:<br /><blockquote><span style="color: rgb(0, 0, 153);">Imports </span>System<br /><span style="color: rgb(0, 0, 153);">Imports </span>System.Collections.Generic<br /><span style="color: rgb(0, 0, 153);">Imports </span>System.ComponentModel<br /><br /><span style="color: rgb(0, 0, 153);">Imports </span>System.Drawing<br /><span style="color: rgb(0, 0, 153);">Imports </span>System.Text<br /><span style="color: rgb(0, 0, 153);">Imports </span>System.Windows.Forms<br /><span style="color: rgb(0, 0, 153);">Imports </span>System.IO.Ports</blockquote><br />Creamos las variables:<br /><blockquote><span style="color: rgb(0, 0, 153);">#Region</span> "Variables"<br /><span style="color: rgb(0, 0, 153);">Public </span>Latitud <span style="color: rgb(0, 0, 153);">As String</span><br /><span style="color: rgb(0, 0, 153);">Public </span>Longitud<span style="color: rgb(0, 0, 153);"> As String</span><br /><span style="color: rgb(0, 0, 153);">#</span><span style="color: rgb(0, 0, 153);">End </span>Region</blockquote>Ahora vamos a crear el constructor.<br /><br /><blockquote><span style="color: rgb(0, 0, 153);">#Region </span>"Constructor"<br /><span style="color: rgb(0, 0, 153);">Public Sub New</span>()<br /> <span style="color: rgb(0, 102, 0);"> ' Esto es necesario</span><br /> InitializeComponent()<br /> <span style="color: rgb(0, 102, 0);"> ' Aqui intentamos abri el puerto</span><br /> <span style="color: rgb(0, 0, 153);">Try</span><br /> SerialPort1.PortName = "COM4"<br /> SerialPort1.Open()<br /> <span style="color: rgb(0, 0, 153);">Catch</span> ex <span style="color: rgb(0, 0, 153);">As </span>Exception<br /> MessageBox.Show(ex.Message)<br /> Timer1.Enabled = False<br /> btnEmp.Text = "Empezar"<br /> <span style="color: rgb(0, 0, 153);">Return</span><br /> <span style="color: rgb(0, 0, 153);">End Try</span><br /><span style="color: rgb(0, 0, 153);"> End Sub</span><br /><span style="color: rgb(0, 0, 153);">#End Regio</span>n</blockquote>Creamos el código del botón, se limitara a apagar o encender el Timer:<br /><br /><blockquote> <span style="color: rgb(0, 0, 102);">Private Sub </span>btnEmp_Click(<span style="color: rgb(0, 0, 102);">ByVal </span>sender As System.Object, <span style="color: rgb(0, 0, 102);">ByVal </span>e <span style="color: rgb(0, 0, 153);">As</span> System.EventArgs) <span style="color: rgb(0, 0, 102);">Handles </span>btnEmp.Click<br /><span style="color: rgb(0, 102, 0);"> 'Comprobamos el estado del timer y lo invertimos.</span><br /> <span style="color: rgb(0, 0, 102);">If </span>Timer1.Enabled = True <span style="color: rgb(0, 0, 102);">Then</span><br /> Timer1.Enabled = False<br /> <span style="color: rgb(0, 0, 102);">Else</span><br /> Timer1.Enabled = True<br /> <span style="color: rgb(0, 0, 102);">End If</span><br /> <span style="color: rgb(0, 0, 102);">If </span>btnEmp.Text = "Empezar" <span style="color: rgb(0, 0, 102);">Then</span><br /> btnEmp.Text = "Parar"<br /> <span style="color: rgb(0, 0, 102);">Else</span><br /> btnEmp.Text = "Empezar"<br /> <span style="color: rgb(0, 0, 102);"> End If</span><br /><span style="color: rgb(0, 0, 102);"> End Sub</span></blockquote>Bueno ya nos queda configurar el Timer. Por el puerto Com entran muchas lineas de datos llamadas NEMA.<br /><br />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 <span style="font-weight: bold;">$</span> . La cadena que nos interes, comienza por "<span style="font-weight: bold;">GPGGA</span>"; este subcadena contiene la latitud y la longitud, además de más información, separada por comas.<br /><br />Este es el código:<br /><br /><blockquote> <span style="color: rgb(0, 0, 102);">Private Sub </span>timer1_Tick(<span style="color: rgb(0, 0, 153);">ByVal </span>sender <span style="color: rgb(0, 0, 153);">As </span>System.Object, <span style="color: rgb(0, 0, 153);">ByVal </span>e <span style="color: rgb(0, 0, 153);">As</span> System.EventArgs) <span style="color: rgb(0, 0, 153);">Handles </span>Timer1.Tick<br /><br /> <span style="color: rgb(0, 0, 153);">If </span>SerialPort1.IsOpen <span style="color: rgb(0, 0, 153);">Then</span><br /><span style="color: rgb(0, 102, 0);"> 'En esta variable, insertamos todo lo leido del Puerto.</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>datos <span style="color: rgb(0, 0, 153);">As String</span> = SerialPort1.ReadExisting()<br /><span style="color: rgb(0, 102, 0);"> 'Aqui creamos las diferentes lineas, basandonos en el simbolo del dolar</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>strArr() <span style="color: rgb(0, 0, 153);">As String</span> = datos.Split("$")<br /> <span style="color: rgb(0, 0, 153);">Dim </span>i <span style="color: rgb(0, 0, 153);">As Intege</span>r = 0<br /><br /> <span style="color: rgb(0, 0, 153);">If </span>strArr.Length > 1 <span style="color: rgb(0, 0, 153);">Then</span><br /> <span style="color: rgb(0, 0, 153);">Try</span><br /> <span style="color: rgb(0, 0, 153);">For </span>i = 0 To strArr.Length<br /><span style="color: rgb(0, 102, 0);"> 'Ahora obtenemos los datos, separados por las comas.</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>strTemp <span style="color: rgb(0, 0, 153);">As String</span> = strArr(i)<br /> <span style="color: rgb(0, 0, 153);">Dim </span>lineArr() <span style="color: rgb(0, 0, 153);">As String</span> = strTemp.Split(",")<br /><br /> <span style="color: rgb(0, 102, 0);"> </span><span style="color: rgb(0, 0, 153);"><span style="color: rgb(0, 102, 0);">'Si la linea es GPGGA, cojemos los bloques de cadena 2 y 4 (latidud y longitud) y pasamos los datos obtenidos a coordenadas UTM.</span><br /> If </span>(lineArr(0) = "GPGGA") <span style="color: rgb(0, 0, 153);">Then</span><br /> <span style="color: rgb(0, 0, 153);">Try</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>dLat <span style="color: rgb(0, 0, 153);">As Decimal</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>dLon <span style="color: rgb(0, 0, 153);">As Decimal</span><br /><br /> dLat = Convert.ToDecimal(lineArr(2))<br /> dLat = dLat / 100<br /> <span style="color: rgb(0, 0, 153);">Dim </span>lat()<span style="color: rgb(0, 0, 153);"> As String </span>= dLat.ToString().Split(".")<br /> Latitud = lat(0).ToString() + "." + ((Convert.ToDouble(lat(1)) / 60)).ToString("#####")<br /> txtLat.Text = Latitud<br /><br /> dLon = Convert.ToDecimal(lineArr(4))<br /> dLon = dLon / 100<br /> Dim lon() As String = dLon.ToString().Split(".")<br /> Longitud = lon(0).ToString() + "." + ((Convert.ToDouble(lon(1)) / 60)).ToString("#####")<br /> txtLong.Text = Longitud<br /><br /> <span style="color: rgb(0, 0, 153);">Catch</span><br /><span style="color: rgb(102, 102, 0);"> ' Si no podemos leer el GPS</span><br /> 'txtLat.Text = "No puedo leer GPS "<br /> 'txtLong.Text = "No puedo leer GPS" <br /> <span style="color: rgb(0, 0, 153);">End Try</span><br /> <span style="color: rgb(0, 0, 153);"> End If</span><br /> <span style="color: rgb(0, 0, 153);">Next</span><br /> <span style="color: rgb(0, 0, 153);">Catch</span><br /><span style="color: rgb(102, 102, 0);"> <span style="color: rgb(0, 102, 0);"> 'No hacemos nada</span></span><br /> <span style="color: rgb(0, 0, 153);">End Try</span><br /> <span style="color: rgb(0, 0, 153);">End If</span><br /> <span style="color: rgb(0, 0, 153);">Else</span><br /> txtLat.Text = "Puerto COM Cerrado"<br /> txtLong.Text = "Puerto COM Cerrado"<br /> <span style="color: rgb(0, 0, 153);">End If</span><br /><br /><span style="color: rgb(0, 0, 153);"> End Sub</span></blockquote><br /><br /><br />Ya podeís leer las coordenadas de vuestro GPS!.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com41tag:blogger.com,1999:blog-613910526169410652.post-66971897194384161812009-03-10T11:25:00.003+01:002009-03-10T12:01:35.038+01:00Windows Mobile - VB.Net / C++ | Crear apliación de SQL Server<span class="postbody"><span style="color:orange;"><span style="color: rgb(0, 0, 0);">Sacado del Msdn</span><br /><br /><span style="font-weight: bold; color: rgb(0, 0, 102);">1-Crear una aplicación de SQL Server para dispositivos inteligente</span>s </span><br /><br />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.<br />Crear un proyecto con dispositivos inteligentesCrear un proyecto con dispositivos inteligentes<br /><br />Para crear una aplicación para dispositivos inteligentes, primero debe crear el proyecto en Visual Studio 2005.<br />Para crear un proyecto para dispositivos inteligentes<br /><br /><span style="font-weight: bold;">1.</span> En Visual Studio 2005, en el menú Archivo, seleccione Nuevo y, a continuación, seleccione Proyecto.<br /><span style="font-weight: bold;">2.</span> 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.<br /><span style="font-weight: bold;">3.</span> 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.<br /><span style="font-weight: bold;"> 4. </span>Escriba un nombre y ubicación para el proyecto y, a continuación, haga clic en Aceptar.<br /><br />Visual Studio crea un nuevo proyecto y muestra el formulario principal (Form1). La pantalla será parecida al sistema operativo que elija.<br /><br />Agregar SQLServer Mobile al proyectoAgregar SQLServer Mobile al proyecto<br /><br />El siguiente paso para crear una aplicación compatible con SQL Server Mobile consiste en agregar una referencia al ensamblado de SQL Server Mobile.<br />Para agregar una referencia a SQL Server Mobile<br /><br /><span style="font-weight: bold;">1.</span> En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Referencias y seleccione Agregar referencia.<br /> 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.<br /><br /><span style="font-weight: bold;">2.</span> 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:<br /> <span style="font-weight: bold;">2.1.</span> Haga clic en Examinar.<br /> <span style="font-weight: bold;">2.2.</span> Busque el siguiente directorio:<br /> C:\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE<br /> <span style="font-weight: bold;">2.3.</span> Seleccione System.Data.SqlServerCe.dll y, a continuación, haga clic en Aceptar.<br /><br />La lista de referencias del Explorador de soluciones incluye ahora System.Data.SqlServerCe y su proyecto puede utilizar este ensamblado.<br /><br /><span style="font-weight: bold;">3. </span>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.<br /><span style="font-weight: bold;"><br />4. </span>En la parte superior del código para el formulario, agregue una directiva para utilizar el espacio de nombres System.Data.SqlServerCe:<br /><br /></span><span style="font-weight: bold;" class="postbody">C#</span><br /><span class="postbody"> <blockquote>using System.Data.SqlServerCe;</blockquote><br /></span><span style="font-weight: bold;" class="postbody">Visual Basic</span><br /><span class="postbody"><blockquote>Imports System.Data.SqlServerCe</blockquote><br /><br />Usar los objetos de SQLServer MobileUsar los objetos de SQLServer Mobile<br /><br />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.<br /><br /><span style="font-weight: bold;">C#</span><blockquote>using System.Xml;<br />using System.Data;<br />using System.Data.SqlServerCe;<br />using System.Data.Common;<br />using System.Windows.Forms;<br />using System.IO;<br /><br />public class NETCF_SqlCeEngine<br />{<br /> public void CreateDB()<br /> {<br /> File.Delete("Test.sdf");<br /> string connString = "Data Source='Test.sdf'; LCID=1033; Password=\"s$;2'!dS64\"; Encrypt = TRUE;";<br /> SqlCeEngine engine = new SqlCeEngine(connString);<br /> engine.CreateDatabase();<br /> }<br />}<br /></blockquote><br /><span style="font-weight: bold;">Visual Basic</span><br /><br /><blockquote>Imports System<br />Imports System.Xml<br />Imports System.Data<br />Imports System.Data.SqlServerCe<br />Imports System.Data.Common<br />Imports System.Windows.Forms<br />Imports System.IO<br /><br />Public Class NETCF_SqlCeEngine<br /><br /> Public Sub CreateDB()<br /> File.Delete("Test.sdf")<br /> Dim connString As String = "Data Source='Test.sdf'; LCID=1033; Password=""s$;2'!dS64""; Encrypt = TRUE;"<br /> Dim engine As New SqlCeEngine(connString)<br /> engine.CreateDatabase()<br /> End Sub<br />End Class<br /></blockquote><br /><span style="color:orange;"><br /><span style="font-weight: bold; color: rgb(0, 0, 102);">2-Un ejemplo sacado del MSDN</span></span><br /><a href="http://msdn2.microsoft.com/es-es/library/ms174006.aspx" target="_blank">http://msdn2.microsoft.com/es-es/library/ms174006.aspx</a><br /><br /><span style="font-weight: bold; color: rgb(0, 0, 102);">3-Usar el método CreateDatabase </span><br /><br />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.<br />EjemplosEjemplos<br /><br />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.<br /><br /><span style="font-weight: bold;">C#</span><br /><blockquote>if (File.Exists("Test.sdf"))<br />File.Delete("Test.sdf");<br /><br />string connStr = "Data Source = Test.sdf; Password = <password>;";<br /><br />SqlCeEngine engine = new SqlCeEngine(connStr);<br />engine.CreateDatabase();<br />engine.Dispose();<br /></password></blockquote><password><span style="font-weight: bold;">Visual Basic</span><br /></password></span><blockquote><span class="postbody">If File.Exists("Test.sdf") Then<br />File.Delete("Test.sdf")<br />End If<br />Dim connStr As String = "Data Source = Test.sdf; Password = <password>;"<br /><br />Dim engine As New SqlCeEngine(connStr)<br />engine.CreateDatabase()<br />engine.Dispose()</password></span></blockquote><password></password><span class="postbody"></span>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com6tag:blogger.com,1999:blog-613910526169410652.post-64356538092048616942009-03-06T12:11:00.007+01:002009-03-10T13:00:54.298+01:00Visual Basic - Extraer el codigo fuente de una WebPara extraer el codigo fuente de una Web, usaremos el control <span style="font-weight: bold;">Inet</span>.<br /><br />Para usar el control inet, añadimos el control <span style="font-weight: bold;">Microsoft Internet Transfer Control</span>.<br /><br />Y asi extraeremos el codigo:<br /><blockquote><br /> <span style="color: rgb(0, 0, 153);">Dim </span>Datos<span style="color: rgb(0, 0, 153);"> As String </span><br /> <br /> Datos = Inet1.OpenURL("http://programaciontotal.blogspot.com")</blockquote>Ahora la variable datos, contendrá el codigo fuente de la página.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com8tag:blogger.com,1999:blog-613910526169410652.post-9094440526311667242009-03-05T10:48:00.003+01:002009-03-05T10:51:48.432+01:00BlackBerry - Pasar al Connector los datos del APNPara 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.<br /><br /><blockquote>conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=TUAPN;tunnelauthusername=USUARIO;tunnelauthpassword=CONTRASEÑA");<br /></blockquote>Esto es un ejemplo de como seria con Vodafone:<br /><br /><blockquote>conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=ac.vodafone.es;tunnelauthusername=vodafone;tunnelauthpassword=vodafone");</blockquote>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com7tag:blogger.com,1999:blog-613910526169410652.post-65646289277170380252009-03-02T18:11:00.005+01:002009-03-10T12:56:48.416+01:00Visual Basic - Pasar un Recordset a ExcelEsto 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<br /><br />Spreadsheet es un control, es un libro Excel en si. Para utilizarlo, en componentes, añadis <span style="font-weight: bold;">Microsoft Office Web Components</span>. Os aparecera una serie de controles de Office, pues agregais al Formulario el de Excel.<br /><br />¡Pues no necesitais mas! Aqui esta la función<br /><br /><br /><blockquote><span style="color: rgb(0, 0, 153);">Function </span>RellenaExcel(Rs <span style="color: rgb(0, 0, 153);">As ADODB.Recordse</span>t, <span style="color: rgb(0, 0, 153);">ByRef </span>Excel As Spreadsheet, <span style="color: rgb(0, 0, 153);">ByRef </span> Barra <span style="color: rgb(0, 0, 153);">As ProgressBar</span>, MostrarCantidades <span style="color: rgb(0, 0, 153);">As Labe</span>l) <span style="color: rgb(0, 0, 153);">As Boolean</span><br /><br /> <span style="color: rgb(0, 0, 153);">Dim </span>Max <span style="color: rgb(0, 0, 153);">As Integer</span><br /> <span style="color: rgb(0, 0, 153);">Dim </span>Fila <span style="color: rgb(0, 0, 153);">As Integer</span><br /> <br /><br /> Barra.Min = 0<br /> Barra.Value = 0<br /> <span style="color: rgb(0, 0, 153);">If </span>Rs.RecordCount <> 0 <span style="color: rgb(0, 0, 153);">Then</span><br /> Barra.Max = Rs.RecordCount<br /> MostrarCantidades.Caption = "0 / " + Str(Barra.Max)<br /> <span style="color: rgb(0, 0, 102);">Else</span><br /> MsgBox "El resultado de la consulta no contiene datos.", vbExclamation<br /> <span style="color: rgb(0, 0, 153);"> Exit Function</span><br /> <span style="color: rgb(0, 0, 153);">End If</span><br /> Max = Rs.Fields.Count - 1<br /><br /> <span style="color: rgb(0, 0, 153);">For </span>i = 0 <span style="color: rgb(0, 0, 153);">To </span>Max<br /> Excel.ActiveSheet.Cells(1, i + 1).Value = Rs(i).Name<br /> <span style="color: rgb(0, 0, 153);">Next </span>i<br /><br /><br /> Fila = 2<br /> Barra.Value = 1<br /> MostrarCantidades.Caption = "1 / " + Str(Barra.Max)<br /><br /> <span style="color: rgb(0, 0, 153);">While Not</span> Rs.EOF<br /> <br /> <span style="color: rgb(0, 0, 153);">For </span>i = 0 <span style="color: rgb(0, 0, 153);">To </span>Max<br /> Excel.ActiveSheet.Cells(Fila, i + 1).Value = Rs(i).Value<br /> <span style="color: rgb(0, 0, 153);">Next </span>i<br /> <br /> Barra.Value = Fila - 1<br /> <span style="color: rgb(0, 0, 153);">DoEvents</span><br /> MostrarCantidades.Caption = Str(Barra.Value) + " / " + Str(Barra.Max)<br /> Fila = Fila + 1<br /> Rs.MoveNext<br /><br /> <span style="color: rgb(0, 0, 153);">Wend</span><br /><br /><br /> <span style="color: rgb(0, 0, 153);">With </span>Excel.ActiveSheet.Range(Excel.Cells(1, 1), Excel.ActiveSheet.Cells(1, Max + 1))<br /> .Font.Bold = True<br /> .Font.Size = 10<br /> .Font.Name = "Arial"<br /> .Font.Color = vbWhite<br /> '.Borders.Color = vbGreen<br /> .Interior.Color = RGB(0, 0, 128)<br /> .Borders.Color = RGB(0, 0, 0)<br /><br /> <span style="color: rgb(0, 0, 153);">End With</span><br /> <span style="color: rgb(0, 0, 153);">With </span>Excel.ActiveSheet.Range(Excel.Cells(2, 1), Excel.ActiveSheet.Cells(Fila - 1, Max + 1)).Font<br /> .Size = 9<br /> '.Bold = True<br /> .Name = "Arial"<br /> <span style="color: rgb(0, 0, 153);">End With</span><br /><br /> <span style="color: rgb(0, 0, 153);">Set </span>rango = Excel.Worksheets("Hoja1").Range("A1:BV" + Trim(Fila + 1))<br /> rango.Columns.AutoFit<br /><br /> RellenaExcel = True<br /><br /><br /><br /><span style="color: rgb(0, 0, 153);">End Function</span></blockquote>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com1tag:blogger.com,1999:blog-613910526169410652.post-42502063916214504042009-03-02T16:55:00.005+01:002009-03-10T12:58:12.145+01:00Visual Basic - Conectar con Base de Datos AccesLo primero que hay que hacer es añadir la referencia <span style="font-weight: bold;">Microsoft ADO.<br /><span style="font-weight: bold;"><br /></span></span>Ahora, conectamos con las base de datos.<br /><br /><blockquote><span style="color: rgb(0, 0, 153);">Set </span>BaseDatos = Workspaces(0).OpenDatabase("RutadelaBD\bd.mdb", <span style="color: rgb(0, 0, 153);">False</span>, <span style="color: rgb(0, 0, 153);">False</span>)</blockquote><br />Cuando conectamos, abrimos un recorset con la consulta que queremos realizar.<br /><br /><blockquote>SQL = "SELECT * FROM Clientes"<br /><br /><span style="color: rgb(0, 0, 153);">Set </span>Rs = BaseDatos.OpenRecordset(SQL, dbOpenSnapshot)</blockquote><br />Luego imprimimos los resultados<br /><br /><blockquote>Msgbox "Nombre: "+ Rs!Nombre<br /></blockquote><br />Si la consulta devuelve mas de una fila, para pasar de un registro a otro utilizamos, Rs.MoveNext<br /><br />Un ejemplo sería:<br /><br /><blockquote><span style="color: rgb(0, 0, 153);">while </span>not Rs.EOF<br /> combo1.addItem Rs!Nombre<br /> Rs.MoveNext<br /><span style="color: rgb(0, 0, 153);">end while</span><br /><br /></blockquote>El while not Rs.EOF significa, Mientras no sea el final del RecordSetPaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com1tag:blogger.com,1999:blog-613910526169410652.post-30303612495181440922009-03-02T11:51:00.008+01:002009-03-10T12:59:13.862+01:00BlackBerry - 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 <a href="http://www.blackberry.com/developers/docs/3.6api/net/rim/device/api/system/DeviceInfo.html">DeviceInfo </a>y <a href="http://www.blackberry.com/developers/docs/4.5.0api/net/rim/blackberry/api/phone/Phone.html">Phone</a><br /> <blockquote><span style="font-size:85%;"><span style="font-size:100%;"><span style="color: rgb(0, 0, 153);">String </span>Pin = (Integer.toString(net.rim.device.api.system.DeviceInfo<br />.getDeviceId(),16)).toUpperCase();<br /><br /> <span style="color: rgb(0, 0, 153);">String </span>Tel = "" + net.rim.blackberry.api.phone.Phone<br />.getDevicePhoneNumber(fals</span>e)</span>;<br /><br /><span style="color: rgb(0, 0, 153);">String </span>imei = <span style="color: rgb(0, 0, 153);">new </span>String(net.rim.device.api.system.GPRSInfo.imeiToString<br />(net.rim.device.api.system.GPRSInfo.getIMEI()));;<br /></blockquote><br />Como veis, para poder capturar el Pin correctamente, hemos tenido que pasar la información que recibimos a Hexadecimal.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com7tag:blogger.com,1999:blog-613910526169410652.post-10836030379013502492009-03-02T10:33:00.005+01:002009-07-02T13:34:45.538+02:00BlackBerry - Crear icono para una WebAqui te pongo el código para crear un icono de acceso directo a una Web.<br /><blockquote><br /><br />import net.rim.device.api.ui.UiApplication;<br />import net.rim.blackberry.api.browser.*;<br /><br />public class IconoWeb extends UiApplication {<br /><br /> public IconoWeb() {<br /> BrowserSession visita=Browser.getDefaultSession();<br /> visita.displayPage("http://programaciontotal.blogspot.com");<br />visita.showBrowser();<br /> System.exit(0);<br /> }<br /><br /> public static void main(String[] args) {<br /> IconoWeb iw = new IconoWeb();<br /> iw.enterEventDispatcher();<br /><br /> }<br />}</blockquote><br />Por último, en las propiedades del proyecto, le asignais un icono, y listo!<br /><br />* Esta aplicación debe ser firmada con las Secure Apis de RimPaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com13tag:blogger.com,1999:blog-613910526169410652.post-33344859270166645672009-02-27T14:37:00.005+01:002009-03-05T11:29:52.065+01:00SQL - Reducir el fichero de LogReducir el fichero de log es importante, para ganar espacio de disco duro y quita las transaciones que puedan estar causando algun interbloqueo.<br /><pre></pre><blockquote><pre>BACKUP LOG MiBase WITH TRUNCATE_ONLY<br />DBCC SHRINKFILE (MiBase_Log, 100)<br /></pre></blockquote><br />Con este codigo, reduciras el fichero de log a 100 megas.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com0tag:blogger.com,1999:blog-613910526169410652.post-30199225519560424862009-02-27T13:05:00.006+01:002009-03-02T11:40:18.847+01:00BlackBerry - Escribir en el Registro de Eventos (ALT + LGLG)<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnRH3pnZ51YjZsTsPEFXqspVoSw1-FgJobNnxbPuiUSS0RvaJ6-9C_FJ9NRhTrazCDyVlNQMllCZTsGFNofjeHdfkEnoTVwz5mI2-JUtbxHfQ37kRh5XisIOzZf7nwNb7H3uHVvengr4zy/s1600-h/Convertir.JPG"></a><br />Para poder escribir en el Registro de eventos, hay que utilizar la clase <a href="http://www.blackberry.com/developers/docs/3.6api/net/rim/device/api/system/EventLogger.html">EventLogger</a>.<br /><br />Priemero importamos la clase.<br /><br /><blockquote>import net.rim.device.api.system.EventLogger;</blockquote><br /><br /><br />Luego hay que registrar la aplicación usando el evento register.<br /><br /><blockquote>EventLogger.register(0x838d33f5c17fdb7dL,"MiApp", EventLogger.VIEWER_STRING)</blockquote><br />Ese numero tan raro es el nombre del programa convertido a Long. (En este caso MiApp)<br /><br />¿Como lo sacas?, Muy facil, escribe el nombre del programa en cualquier parte, lo seleccionas y eliges la opcion "Convert String to a Long"<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnRH3pnZ51YjZsTsPEFXqspVoSw1-FgJobNnxbPuiUSS0RvaJ6-9C_FJ9NRhTrazCDyVlNQMllCZTsGFNofjeHdfkEnoTVwz5mI2-JUtbxHfQ37kRh5XisIOzZf7nwNb7H3uHVvengr4zy/s1600-h/Convertir.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 317px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnRH3pnZ51YjZsTsPEFXqspVoSw1-FgJobNnxbPuiUSS0RvaJ6-9C_FJ9NRhTrazCDyVlNQMllCZTsGFNofjeHdfkEnoTVwz5mI2-JUtbxHfQ37kRh5XisIOzZf7nwNb7H3uHVvengr4zy/s400/Convertir.JPG" alt="" id="BLOGGER_PHOTO_ID_5307452315393751826" border="0" /></a><br />Ya solo nos queda usar el evento logEvent para escribir cuando queramos.<br /><br /><blockquote>EventLogger.logEvent(0x28287bf38ffcab2aL, (("Mensaje para el Registro de eventos".getBytes(),EventLogger.INFORMATION );</blockquote>Como veis la Cadena hay qye pasarla en bytes.<br /><br />Utilizando esto, sabreis que hace en cada momento vuestro programa en la BlackBerry.PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com0tag:blogger.com,1999:blog-613910526169410652.post-82980390283593618652009-02-27T12:54:00.006+01:002009-03-02T16:41:38.114+01:00Conexión base de datos SQL Server en Visual Basic 6. ADO<span style="font-size:100%;">Este codigo es un ejemplo de una conexión ADO con una base de datos SQL Server.<br /><br /><blockquote></blockquote><blockquote><blockquote>Dim rs As New ADODB.Recordset<br />Dim cn As ADODB.Connection<br /></blockquote><br />'Abrimos la base de datos<br />Set cn = New ADODB.Connection<br />sCon = "driver={SQL Server};"<br />sCon = sCon + "Server=TUSERVIDOR;uid=USUARIO;pwd=PASS;"<br />sCon = sCon + "database=TUBASEDEDATOS"<br />cn.ConnectionString = sCon<br />cn.ConnectionTimeout = 30<br />cn.Open<br /><br />'Aqui usamos un Recorset para extraer los datos de la consulta<br /><br />QuerySQL = "SELECT * FROM TABLA"<br />rs.CursorLocation = adUseClient<br />rs.Open QuerySQL, cn, adOpenKeyset, adLockOptimistic</blockquote></span>PaKitohttp://www.blogger.com/profile/09026629315712058165noreply@blogger.com1