<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wladimir A. Jimenez B. &#187; C#</title>
	<atom:link href="http://www.kasbeel.cl/kas2008/category/desarrollo/programacion/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kasbeel.cl/kas2008</link>
	<description>Blog personal y tips de informatica.</description>
	<lastBuildDate>Mon, 08 Mar 2010 17:42:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Formulario Transparentes en C# y VB .NET</title>
		<link>http://www.kasbeel.cl/kas2008/2008/04/17/formulario-transparentes-o-recortados-en-c-y-vb-net/</link>
		<comments>http://www.kasbeel.cl/kas2008/2008/04/17/formulario-transparentes-o-recortados-en-c-y-vb-net/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 06:19:02 +0000</pubDate>
		<dc:creator>Wladimir A. Jimenez B.</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[Form Cut]]></category>
		<category><![CDATA[Form Recortado]]></category>
		<category><![CDATA[Formulario]]></category>
		<category><![CDATA[Formulario Transparente]]></category>
		<category><![CDATA[Transparent Back]]></category>
		<category><![CDATA[Vb.net CSharp]]></category>

		<guid isPermaLink="false">http://www.kasbeel.cl/kas2008/?p=27</guid>
		<description><![CDATA[En realidad no se bien como se llaman este tipo de formularios pero creo que se entiende.
Esta orientado a los dos lenguajes por que se utiliza principalmente el Framework que es el mismo para los 2.
Los códigos adjuntos están escritos en VS.Net 2008.
Primero el resultado final

VB.Net &#8211; - &#8211; CSharp.Net
 &#8211;


Lo que hacemos es simple, <a href='http://www.kasbeel.cl/kas2008/2008/04/17/formulario-transparentes-o-recortados-en-c-y-vb-net/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>En realidad no se bien como se llaman este tipo de formularios pero creo que se entiende.</p>
<p>Esta orientado a los dos lenguajes por que se utiliza principalmente el Framework que es el mismo para los 2.</p>
<p>Los códigos adjuntos están escritos en VS.Net 2008.</p>
<p>Primero el resultado final<br />
<center><br />
VB.Net &#8211; - &#8211; CSharp.Net<br />
<a href="http://www.kasbeel.cl/kas2008/screenshots/transvbnet.png" rel="sexylightbox[transparent]" title="Formulario Transparente Vb.Net"><img src="http://www.kasbeel.cl/kas2008/screenshots/thumb/transvbnet.thumbs.png" alt="" /></a> &#8211; <a href="http://www.kasbeel.cl/kas2008/screenshots/transcsharpnet.png" rel="sexylightbox[transparent]" title="Formulario Transparente VSharp.Net"><img src="http://www.kasbeel.cl/kas2008/screenshots/thumb/transcsharpnet.thumbs.png" alt="" /></a><br />
</center><br />
<span id="more-27"></span><br />
Lo que hacemos es simple, tomamos una imagen en este caso PNG con fondo transparente como la siguiente.<br />
<a href="http://www.kasbeel.cl/kas2008/screenshots/fondo.png" rel="sexylightbox[transparent]" title="Fondo Transparente"><img src="http://www.kasbeel.cl/kas2008/screenshots/thumb/fondo.thumbs.png" alt="" /></a> </p>
<p>Luego vamos a las propiedades del formulario, seleccionamos un color de fondo X en este caso es un derivado de los Azules porque la parte circular es Azul y es la que mas se pixelea y si se usara un blanco se podría ver mas pixelado.</p>
<p><img src="http://www.kasbeel.cl/kas2008/screenshots/thumb/backcolpropertiesvbnet.png" alt="BackColor" /></p>
<p>luego procedemos a cambiar el TransparencyKey y lo ponemos en el mismo color que le pusimos al fondo.</p>
<p><img src="http://www.kasbeel.cl/kas2008/screenshots/thumb/transkeypropertiesvbnet.png" alt="TransparencyKey" /></p>
<p>Ahora eliminamos el borde normal de las ventanas windows, cambiando el FormBorderStyle por None.</p>
<p>Bueno creo que lo mas importante se me había olvidado debemos cambiar el background image por nuestra imagen con fondo transparente, y listo.</p>
<p>Ahora en los códigos agregue cosas como que se mueva la ventana cuando hacemos un click en cualquier parte de ella, y para esto use una API aun que se puede con codigo con la API me pareció mas rápido.</p>
<p>en VB.Net:</p>
<p>[vbnet]<br />
    Private Const HTCAPTION = 2<br />
    Private Const WM_NCLBUTTONDOWN = &#038;HA1<br />
    <System.Runtime.InteropServices.DllImport("user32.dll")> _<br />
    Private Shared Function SendMessage(ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _<br />
                                        ByVal wParam As Integer, ByVal lParam As Integer) _<br />
                                        As Integer<br />
    End Function<br />
    <System.Runtime.InteropServices.DllImport("user32.dll")> _<br />
    Private Shared Function ReleaseCapture() As Integer<br />
    End Function<br />
[/vbnet]</p>
<p>en CSharp lo use de la siguiente manera:</p>
<p>[csharp]<br />
        private static int HTCAPTION = 2;<br />
        private static int WM_NCLBUTTONDOWN = 0xA1;<br />
        [System.Runtime.InteropServices.DllImport("user32.dll")]<br />
        private extern static int SendMessage(System.IntPtr hWnd, int wMsg,<br />
                                                 int wParam, int lParam);<br />
        [System.Runtime.InteropServices.DllImport("user32.dll")]<br />
        private extern static int ReleaseCapture();<br />
[/csharp]</p>
<p>Luego en el evento MouseDown del formulario</p>
<p>[vbnet]<br />
        ReleaseCapture()<br />
        SendMessage(Me.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0&#038;)<br />
[/vbnet]</p>
<p>[csharp]<br />
         ReleaseCapture();<br />
         SendMessage(this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);<br />
[/csharp]</p>
<p>con esto le informamos al administrador de ventanas como si se hubiese presionado el mouse en el HEADER de la ventana.</p>
<p>Ademas, agregue el código para ejecutar programas en C# como VB.Net para que puedan probarlo.</p>
<p>Los códigos fuentes son los siguiente:</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<p>Espero que este claro voy a postear luego como hacer algo parecido en VB6 solo que este lenguaje no tiene la propiedad TransparencyKey así que solo usaremos API Win32.</p>
<p>y Luego pondré como hacerlo en java.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kasbeel.cl/kas2008/2008/04/17/formulario-transparentes-o-recortados-en-c-y-vb-net/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Shell en C#, como en Visual Basic</title>
		<link>http://www.kasbeel.cl/kas2008/2008/04/01/shell-en-c-como-en-visual-basic/</link>
		<comments>http://www.kasbeel.cl/kas2008/2008/04/01/shell-en-c-como-en-visual-basic/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 14:57:12 +0000</pubDate>
		<dc:creator>Wladimir A. Jimenez B.</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[C# Shell]]></category>
		<category><![CDATA[Exjecutar Programa C#]]></category>
		<category><![CDATA[VB Shell]]></category>
		<category><![CDATA[Visual Basic C#]]></category>

		<guid isPermaLink="false">http://www.kasbeel.cl/kas2008/?p=24</guid>
		<description><![CDATA[Como sabemos en Visual Basic existe un funcion shell que nos permite ejecutar aplicaciones desde el codigo, esto no sucede en C#, pero no es que no se pueda.
En C# existe una clase Process que nos permite ejecutar programas.
ejemplo:

System.Diagnostics.Process process = new System.Diagnostics.Process(); //creamo un proceso
process.EnableRaisingEvents=false;
process.StartInfo.FileName="iexplore"; // aqui ponemos el programa que queremos ejecutar
process.StartInfo.Arguments="http://www.kasbeel.cl"; //parametros
process.Start(); <a href='http://www.kasbeel.cl/kas2008/2008/04/01/shell-en-c-como-en-visual-basic/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Como sabemos en Visual Basic existe un funcion shell que nos permite ejecutar aplicaciones desde el codigo, esto no sucede en C#, pero no es que no se pueda.</p>
<p>En C# existe una clase Process que nos permite ejecutar programas.</p>
<p>ejemplo:</p>
<pre class="brush:csharp">
System.Diagnostics.Process process = new System.Diagnostics.Process(); //creamo un proceso
process.EnableRaisingEvents=false;
process.StartInfo.FileName="iexplore"; // aqui ponemos el programa que queremos ejecutar
process.StartInfo.Arguments="http://www.kasbeel.cl"; //parametros
process.Start();  //ejecutamos el programa
process.WaitForExit(); // esperamos a que termine
</pre>
<p>Como podemos ver es un poco diferente pero lo podemos encapsular en una funcion shell(), y quedaria muy parecido.</p>
<p>Si le quitamos el WaitForExit nuestro codigo continuara aunque no termine el programa que ejecutamos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kasbeel.cl/kas2008/2008/04/01/shell-en-c-como-en-visual-basic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
