<?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"
	>

<channel>
	<title>João Mello</title>
	<atom:link href="http://blog.joaomello.net/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.joaomello.net</link>
	<description>Blog, por aonde eu começo?!</description>
	<pubDate>Fri, 14 May 2010 16:26:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Dll - rotinas de início e término do processo/thread</title>
		<link>http://blog.joaomello.net/?p=49</link>
		<comments>http://blog.joaomello.net/?p=49#comments</comments>
		<pubDate>Sat, 27 Jun 2009 15:34:50 +0000</pubDate>
		<dc:creator>joaomello</dc:creator>
		
		<category><![CDATA[Cotidiano]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Dica]]></category>

		<category><![CDATA[Karmas]]></category>

		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[dll]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.joaomello.net/?p=49</guid>
		<description><![CDATA[Lambda! Lambda! Lambda!
Ja se faz um longo tempo que não posto aqui, e assuntos não faltaram como lançamento do Delphi 2009, Visual Studio 2010, o término do meu curso técnico em eletrônica - e falando nele estarei na FIERGS POA do dia 24/06 á 27/06 no INOVA SENAI.
Enfim que de falar e o assunto de [...]]]></description>
			<content:encoded><![CDATA[<p>Lambda! Lambda! Lambda!<br />
Ja se faz um longo tempo que não posto aqui, e assuntos não faltaram como lançamento do Delphi 2009, Visual Studio 2010, o término do meu curso técnico em eletrônica - e falando nele estarei na FIERGS POA do dia 24/06 á 27/06 no INOVA SENAI.</p>
<p>Enfim que de falar e o assunto de hoje é sobre os eventos de entrada/saída da DLL no Delphi. Me deparei com um problema parecido estes dias, criei um aplicativo parecido com o gerenciador de serviço do Windows mas, com muitos plus (hehehehe), e todos os serviço se basseiam em uma DLL (aliás devo me lembrar de postar mais sobre ele, tem muita coisa enteressante nele que vale apena repassar para vocês). E uma das coisas que aprendi com ele, foi descobrir como capturar os eventos de entrada/saída da DLL.</p>
<p>A váriavel DLLProc global corresponder a um ponteiro de procedimento ao qual pode ser atribuído o precedimento de entrada/saída. Essa variável inicia-se em nil, ao menos que você defina seu própio porcedimento. Ao definir um procedimento de entrada/saída, será possível responder aos eventos listados:</p>
<p><strong>DLL_PROCESS_ATTACH: </strong>A DLL será anexada ao espaço de endereços do processo atual, quando o mesmo iniciar ou quando for feita uma chamada para <em>LoadLibrary()</em>. As DLLs inicializam quaisquer dados da instância durante esse evento.<br />
<strong>DLL_PROCESS_DETACH:</strong> A DLL será desanexada do espaço de endereços do processo de chamada. Isso ocorrerá durante a saída de um processo de limpeza ou quando for feita uma chamda para <em>FreeLibrary()</em>. A DLL pode liberar quaisquer dados da instância durante esse evento.<br />
<strong>DLL_THREAD_ATTACH: </strong>Esse evento ocorrerá quando o processo atual criar um novo thread. Quando isso ocorrer, o sistema chamará a função de ponto de entrada de quaisquer DLLs anexadas ao processo. Essa chamada é feita no contexto de novo thread e pode ser usada para alocar quaisquer dados específicos ao thread.<br />
<strong>DLL_THREAD_DETACH:</strong> Este evento ocorrerá quando o thread estiver saindo. Durante esse evento, a DLL pode liberar quaisquer dados inicializados específicos do thread.</p>
<p><span style="text-decoration: underline;">Código-fonte para DllEntry.dpr:</span></p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">library</span> DllEntry<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">uses</span>
  SysUtils<span style="color: #000066;">,</span>
  Windows<span style="color: #000066;">,</span>
  Dialogs<span style="color: #000066;">,</span>
  Classes<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> DLLEntryPoint<span style="color: #000066;">&#40;</span>dwReasson<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">DWord</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">case</span> dwReasson <span style="color: #000000; font-weight: bold;">of</span>
    DLL_PROCESS_ATTACH<span style="color: #000066;">:</span> ShowMessage<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Anexando ao processo'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    DLL_PROCESS_DETACH<span style="color: #000066;">:</span> ShowMessage<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Desanexando do processo'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    DLL_THREAD_ATTACH <span style="color: #000066;">:</span> MessageBeep<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    DLL_THREAD_DETACH <span style="color: #000066;">:</span> MessageBeep<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #808080; font-style: italic;">{ Primeirto, atribui o procedimento à variável DLLProc }</span>
  DllProc <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000066;">@</span>DLLEntryPoint<span style="color: #000066;">;</span>
  <span style="color: #808080; font-style: italic;">{ Agora, chama o procedimento apra refletir se a DLL está anexada ao processo }</span>
  DLLEntryPoint<span style="color: #000066;">&#40;</span>DLL_PROCESS_ATTACH<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">.</span></pre></div></div>

<p><span style="text-decoration: underline;">Código de exemplo para demonstração de entrada/saída da DLL:</span></p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">unit</span> ufrmPrincipal<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">interface</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">uses</span>
  Windows<span style="color: #000066;">,</span> Messages<span style="color: #000066;">,</span> SysUtils<span style="color: #000066;">,</span> Variants<span style="color: #000066;">,</span> Classes<span style="color: #000066;">,</span> Graphics<span style="color: #000066;">,</span> Controls<span style="color: #000066;">,</span> Forms<span style="color: #000066;">,</span>
  Dialogs<span style="color: #000066;">,</span> StdCtrls<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">type</span>
  TTestThread <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #000066;">&#40;</span>TThread<span style="color: #000066;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> Execute<span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">override</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> SetCaptionData<span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
  TfrmPrincipal <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #000066;">&#40;</span>TForm<span style="color: #000066;">&#41;</span>
    btnLoadLibrary<span style="color: #000066;">:</span> TButton<span style="color: #000066;">;</span>
    btnFreeLibrary<span style="color: #000066;">:</span> TButton<span style="color: #000066;">;</span>
    btnCreateThread<span style="color: #000066;">:</span> TButton<span style="color: #000066;">;</span>
    btnFreeThread<span style="color: #000066;">:</span> TButton<span style="color: #000066;">;</span>
    Label1<span style="color: #000066;">:</span> TLabel<span style="color: #000066;">;</span>
    lblCount<span style="color: #000066;">:</span> TLabel<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> btnLoadLibraryClick<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> btnFreeLibraryClick<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> FormCreate<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> btnCreateThreadClick<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> btnFreeThreadClick<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span>
    LibHandle <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">THandle</span><span style="color: #000066;">;</span>
    TestThread<span style="color: #000066;">:</span> TTestThread<span style="color: #000066;">;</span>
    Counter   <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Integer</span><span style="color: #000066;">;</span>
    GoThread  <span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">Boolean</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span>
  frmPrincipal<span style="color: #000066;">:</span> TfrmPrincipal<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">implementation</span>
&nbsp;
<span style="color: #008000; font-style: italic;">{$R *.dfm}</span>
&nbsp;
<span style="color: #808080; font-style: italic;">{ TTestThread }</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TTestThread<span style="color: #000066;">.</span><span style="color: #006600;">Execute</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">while</span> frmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">GoThread</span> <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    Synchronize<span style="color: #000066;">&#40;</span>SetCaptionData<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000066;">Inc</span><span style="color: #000066;">&#40;</span>frmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">Counter</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TTestThread<span style="color: #000066;">.</span><span style="color: #006600;">SetCaptionData</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  frmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">lblCount</span><span style="color: #000066;">.</span><span style="color: #006600;">Caption</span> <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000066;">IntToStr</span><span style="color: #000066;">&#40;</span>frmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">Counter</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TfrmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">btnCreateThreadClick</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #808080; font-style: italic;">{ Este procedimento cria a instância da TThread. Se a DLL for carregada,
  ocorrerá um bipe de mensagem. }</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">not</span> <span style="color: #000066;">Assigned</span><span style="color: #000066;">&#40;</span>TestThread<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    GoThread <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">True</span><span style="color: #000066;">;</span>
    TestThread <span style="color: #000066;">:</span><span style="color: #000066;">=</span> TTestThread<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TfrmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">btnFreeLibraryClick</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #808080; font-style: italic;">{ Este procedimento libera a biblioteca }</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">not</span> <span style="color: #000066;">&#40;</span>LibHandle <span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    FreeLibrary<span style="color: #000066;">&#40;</span>LibHandle<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    LibHandle <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TfrmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">btnFreeThreadClick</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #808080; font-style: italic;">{ Na liberação da TThread, um bipe de mensagem ocorrerá, se a DLL for carregada. }</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">Assigned</span><span style="color: #000066;">&#40;</span>TestThread<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    GoThread <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">False</span><span style="color: #000066;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">while</span> TestThread<span style="color: #000066;">.</span><span style="color: #006600;">Suspended</span> <span style="color: #000000; font-weight: bold;">do</span>
      TestThread<span style="color: #000066;">.</span><span style="color: #006600;">Resume</span><span style="color: #000066;">;</span>
&nbsp;
    TestThread<span style="color: #000066;">.</span><span style="color: #006600;">WaitFor</span><span style="color: #000066;">;</span>
&nbsp;
    <span style="color: #000066;">FreeAndNil</span><span style="color: #000066;">&#40;</span>TestThread<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
&nbsp;
    Counter <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TfrmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">btnLoadLibraryClick</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #808080; font-style: italic;">{ Este procedimento carrega a biblioteca DllEntryLib.dll }</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> LibHandle <span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    LibHandle <span style="color: #000066;">:</span><span style="color: #000066;">=</span> LoadLibrary<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'DllEntry.dll'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> LibHandle <span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
      <span style="color: #000000; font-weight: bold;">raise</span> Exception<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Erro no carregar DLL'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span> <span style="color: #000000; font-weight: bold;">else</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    MessageDlg<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'DLL ja carregada!'</span><span style="color: #000066;">,</span> mtWarning<span style="color: #000066;">,</span> <span style="color: #000066;">&#91;</span>mbOK<span style="color: #000066;">&#93;</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TfrmPrincipal<span style="color: #000066;">.</span><span style="color: #006600;">FormCreate</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  LibHandle  <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">;</span>
  TestThread <span style="color: #000066;">:</span><span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">.</span></pre></div></div>

<p>É um exemplo simples de como controlar o eventos básicos de uma DLL, mas como o desenvolvimento de uma DLL requer um bom estudo e cuidado com as pequenas coisas (isso também servira de base para os novos posts sobre serviços windows).<br />
<a href="http://blog.joaomello.net/wp-content/uploads/2009/06/dll-rotinas-de-inicio-e-termino-do-processo-ou-thread.rar">Download do exemplo.</a></p>
<p>Espero que tenham gostado, até próxima!<br />
Att,<br />
Mello.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joaomello.net/?feed=rss2&amp;p=49</wfw:commentRss>
		</item>
		<item>
		<title>IsWindow – Verificando se handle existe</title>
		<link>http://blog.joaomello.net/?p=28</link>
		<comments>http://blog.joaomello.net/?p=28#comments</comments>
		<pubDate>Sun, 25 Jan 2009 15:25:47 +0000</pubDate>
		<dc:creator>joaomello</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Dica]]></category>

		<category><![CDATA[Karmas]]></category>

		<guid isPermaLink="false">http://blog.joaomello.net/?p=28</guid>
		<description><![CDATA[Tudo certo delpheiros?!
O assunto que vou tratar hoje, é sobre um pequeno problema que me ocorreu estes dias… Eu tinha um handle de uma janela, mas queria saber se ela ainda existia.
Muito bem, muitos devem estar pensando nessa hora, por que não usa o FindWindow?! É simples! No FindWindow você passa como parâmetro o nome [...]]]></description>
			<content:encoded><![CDATA[<p>Tudo certo delpheiros?!</p>
<p class="MsoNormal">O assunto que vou tratar hoje, é sobre um pequeno problema que me ocorreu estes dias… Eu tinha um handle de uma janela, mas queria saber se ela ainda existia.<br />
Muito bem, muitos devem estar pensando nessa hora, por que não usa o <em>FindWindow</em>?! É simples! No FindWindow você passa como parâmetro o nome da classe e o caption dela – eis meu problema – mas a possibilidade de vir uma outra janela com os mesmo parâmetros era muito grande… E eu queria a quela, que eu já havia pego. Pois bem, foi aí que encontrei o <em>FindWindow</em>.<br />
O método <em>FIndWindow</em> é simples de usa veja a sintax a baixo:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">BOOL</span> IsWindow<span style="color: #000066;">&#40;</span>HWND hWnd<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span></pre></div></div>

<p>Você só precisa passar o handle, que retornará um true ou false.<br />
Vamos colocar a mão na massa!</p>
<p>Crie um novo projeto VCL Forms Application:</p>
<p><a href="http://blog.joaomello.net/wp-content/uploads/2009/01/img1.jpg"><img class="size-medium wp-image-32 alignnone" title="Novo Projeto" src="http://blog.joaomello.net/wp-content/uploads/2009/01/img1-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>E no form que ja vem criado, coloque dois SpeedButton(ou qualquer outro tipo de botão):</p>
<p><a href="http://blog.joaomello.net/wp-content/uploads/2009/01/img11.jpg"><img class="size-medium wp-image-38 alignnone" title="Form1" src="http://blog.joaomello.net/wp-content/uploads/2009/01/img11-300x178.jpg" alt="" width="300" height="178" /></a></p>
<p style="text-align: left;">E crie outro form com um Label no meio, com caption &#8220;Hello World!&#8221;:<br />
<a href="http://blog.joaomello.net/wp-content/uploads/2009/01/img12.jpg"><img class="size-medium wp-image-39 alignnone" title="Form2" src="http://blog.joaomello.net/wp-content/uploads/2009/01/img12-300x178.jpg" alt="" width="300" height="178" /></a></p>
<p style="text-align: left;">E adicione o seguinte código no <strong>Form1</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">unit</span> Unit1<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">interface</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">uses</span>
  Windows<span style="color: #000066;">,</span> Messages<span style="color: #000066;">,</span> SysUtils<span style="color: #000066;">,</span> Variants<span style="color: #000066;">,</span> Classes<span style="color: #000066;">,</span> Graphics<span style="color: #000066;">,</span> Controls<span style="color: #000066;">,</span> Forms<span style="color: #000066;">,</span>
  Dialogs<span style="color: #000066;">,</span> Buttons<span style="color: #000066;">,</span> Unit2<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">type</span>
  TForm1 <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #000066;">&#40;</span>TForm<span style="color: #000066;">&#41;</span>
    SpeedButton1<span style="color: #000066;">:</span> TSpeedButton<span style="color: #000066;">;</span>
    SpeedButton2<span style="color: #000066;">:</span> TSpeedButton<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> SpeedButton1Click<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> SpeedButton2Click<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span>
    hHandle<span style="color: #000066;">:</span> HWND<span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">public</span>
    <span style="color: #808080; font-style: italic;">{ Public declarations }</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span>
  Form1<span style="color: #000066;">:</span> TForm1<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">implementation</span>
&nbsp;
<span style="color: #008000; font-style: italic;">{$R *.dfm}</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">SpeedButton1Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">var</span>
  frm<span style="color: #000066;">:</span> TForm2<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  frm <span style="color: #000066;">:</span><span style="color: #000066;">=</span> TForm2<span style="color: #000066;">.</span><span style="color: #006600;">Create</span><span style="color: #000066;">&#40;</span><span style="color: #000000; font-weight: bold;">nil</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  frm<span style="color: #000066;">.</span><span style="color: #006600;">Show</span><span style="color: #000066;">;</span>
  hHandle <span style="color: #000066;">:</span><span style="color: #000066;">=</span> frm<span style="color: #000066;">.</span><span style="color: #006600;">Handle</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TForm1<span style="color: #000066;">.</span><span style="color: #006600;">SpeedButton2Click</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  <span style="color: #000000; font-weight: bold;">if</span> hHandle &amp;gt<span style="color: #000066;">;</span> <span style="color: #0000ff;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #000000; font-weight: bold;">begin</span>
    <span style="color: #000000; font-weight: bold;">if</span> IsWindow<span style="color: #000066;">&#40;</span>hHandle<span style="color: #000066;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span>
      ShowMessage<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Janela existe!'</span><span style="color: #000066;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">else</span>
      ShowMessage<span style="color: #000066;">&#40;</span><span style="color: #ff0000;">'Janela não existe.'</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">.</span></pre></div></div>

<p>Analisando o código do <strong>Form1</strong>:<br />
Na procedure SpeedButton1Click, estamos criando um novo form e colocando o seu handle em uma váriavel local.<br />
E na procedure SpeedButton2Click, estamos implementando o <em>IsHandle</em>.</p>
<p>Coloque o seguinte código no <strong>Form2</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="delphi" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">unit</span> Unit2<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">interface</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">uses</span>
  Windows<span style="color: #000066;">,</span> Messages<span style="color: #000066;">,</span> SysUtils<span style="color: #000066;">,</span> Variants<span style="color: #000066;">,</span> Classes<span style="color: #000066;">,</span> Graphics<span style="color: #000066;">,</span> Controls<span style="color: #000066;">,</span> Forms<span style="color: #000066;">,</span>
  Dialogs<span style="color: #000066;">,</span> StdCtrls<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">type</span>
  TForm2 <span style="color: #000066;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #000066;">&#40;</span>TForm<span style="color: #000066;">&#41;</span>
    Label1<span style="color: #000066;">:</span> TLabel<span style="color: #000066;">;</span>
    <span style="color: #000000; font-weight: bold;">procedure</span> FormClose<span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">var</span> Action<span style="color: #000066;">:</span> TCloseAction<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
  <span style="color: #000000; font-weight: bold;">private</span>
    <span style="color: #808080; font-style: italic;">{ Private declarations }</span>
  <span style="color: #000000; font-weight: bold;">public</span>
    <span style="color: #808080; font-style: italic;">{ Public declarations }</span>
  <span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span>
  Form2<span style="color: #000066;">:</span> TForm2<span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">implementation</span>
&nbsp;
<span style="color: #008000; font-style: italic;">{$R *.dfm}</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">procedure</span> TForm2<span style="color: #000066;">.</span><span style="color: #006600;">FormClose</span><span style="color: #000066;">&#40;</span>Sender<span style="color: #000066;">:</span> <span style="color: #000066; font-weight: bold;">TObject</span><span style="color: #000066;">;</span> <span style="color: #000000; font-weight: bold;">var</span> Action<span style="color: #000066;">:</span> TCloseAction<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">begin</span>
  Action <span style="color: #000066;">:</span><span style="color: #000066;">=</span> caFree<span style="color: #000066;">;</span>
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">end</span><span style="color: #000066;">.</span></pre></div></div>

<p>Analisando o código do <strong>Form2</strong>:<br />
A única coisa que foi feita no Form2, foi mudar o Action para caFree(para que quando o formulário for fechado ele também seja destruído, e não persista) no evento FormClose.</p>
<p><strong>Resultado:</strong><br />
Quando você for executar o exemplo vera que quando o Form2 estiver a aberto o IsWindow voltara com True e quando estiver fechado(e destruído) voltara com False.</p>
<p>Você até pode pensar que o exemplo foi simples, mas agora imagine que você automatizou o processo de download(exemplo no IE), e quer pegar a janela de progresso para saber em quantos porcentos esta e se o download ja acabou? O úsuario pode dar mais downloads, e novas janelas virem com mesmo nome e classe, mas você quer aquela em especifica&#8230; [É... acho que falei muito...  mas em um próximo artigo demonstro como fazer download automatico pelo IE <img src='http://blog.joaomello.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ]</p>
<p>Enfim&#8230; era isso. E um bom final de semana á todos!</p>
<p>Abraço,<br />
Mello.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joaomello.net/?feed=rss2&amp;p=28</wfw:commentRss>
		</item>
		<item>
		<title>&#8216;Indiguinação&#8217; com Claro 3G - RS Parte 1</title>
		<link>http://blog.joaomello.net/?p=23</link>
		<comments>http://blog.joaomello.net/?p=23#comments</comments>
		<pubDate>Tue, 06 Jan 2009 01:26:51 +0000</pubDate>
		<dc:creator>joaomello</dc:creator>
		
		<category><![CDATA[Cotidiano]]></category>

		<category><![CDATA[Dica]]></category>

		<category><![CDATA[Karmas]]></category>

		<category><![CDATA[Ponto de vista]]></category>

		<guid isPermaLink="false">http://blog.joaomello.net/?p=23</guid>
		<description><![CDATA[Cara leitor, a idéia era manter um um blog aonde um pudesse compartilhar exemplos e pontos de vista, em meus horários vagos. Porém, nem isso me é permitido. No Meio de 3 posts, a internet cai e não reconecta mais, ou quando cai, volta mais fica caindo toda hora. Isso sem falar da velocidade, pago [...]]]></description>
			<content:encoded><![CDATA[<p>Cara leitor, a idéia era manter um um blog aonde um pudesse compartilhar exemplos e pontos de vista, em meus horários vagos. Porém, nem isso me é permitido. No Meio de 3 posts, a internet cai e não reconecta mais, ou quando cai, volta mais fica caindo toda hora. Isso sem falar da velocidade, pago por 1Mb mas acesso 100kb no máximo! (eles deveriam de me dar no minimo 300kb). Isso não é o pior, ja que estou á mais de três messes pagando uma conta de R$99,00 para ter uma coisa que me da dor de cabeça ao conecetar a internet.</p>
<p>No ínicio foi bem diferente, minha conexão baseava-se em 800kb (poxa isso pra mim é d+), mas passou alguns messes e a coisa não foi bem assim&#8230; E nem adianta alegar tráfego maior que 1GB para ter cortado a internet, pois mais consigo acessa a página principal do Google(isso mesmo).</p>
<p>Enfim, delculpas por esse desabafo&#8230; Mas isso ta irritante já! A Claro fez uma propaganda, sobre carregou o sistema, piorou a qualidade e nada fez(aliás enquanto isso minha conexão ja caiu mais de 5x).<br />
Se você esta pensando em adquirir digo, guarde seu money ou veja as da concorrente.</p>
<p>Essa é a primeira parte de uma série, amanhã estarei ligando para eles do trabalho&#8230; E começei a escrever colunas por lá mesmo. Ja chega disso como desculpas.</p>
<p>Abraço,<br />
Mello.</p>
<p><strong>Update: </strong>Sou cliente Vivo hoje, e 3G no Brasil ainda ta mau.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joaomello.net/?feed=rss2&amp;p=23</wfw:commentRss>
		</item>
		<item>
		<title>Mover ponteiro do banco</title>
		<link>http://blog.joaomello.net/?p=19</link>
		<comments>http://blog.joaomello.net/?p=19#comments</comments>
		<pubDate>Tue, 30 Sep 2008 02:52:51 +0000</pubDate>
		<dc:creator>joaomello</dc:creator>
		
		<category><![CDATA[Dica]]></category>

		<category><![CDATA[MySql]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.joaomello.net/?p=19</guid>
		<description><![CDATA[Olá pessoal?!
Venho hoje aqui para trazer uma dica rápido e fácil, sobre MySql e PHP.
Analize:

&#60;?php
// Conecta Banco
$con = mysql_connect&#40;'localhost', 'root', ''&#41;;
// Seleciona Banco
mysql_select_db&#40;'ALGUM BANCOM', $con&#41;;
// Executa Query
$res = mysql_query&#40;'ALGUM SQL;', $con&#41;;
&#160;
// Varre poteiro
while &#40;$row = mysql_fetch_array&#40;$res&#41;&#41;
&#123;
    echo $row&#91;'NOME DA COLUNA'&#93;;
    echo '&#60;br&#62;';
&#125;
?&#62;

Como se pode ver, ele se conectou com [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal?!<br />
Venho hoje aqui para trazer uma dica rápido e fácil, sobre MySql e PHP.</p>
<p>Analize:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// Conecta Banco</span>
<span style="color: #000088;">$con</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Seleciona Banco</span>
<span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ALGUM BANCOM'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$con</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Executa Query</span>
<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ALGUM SQL;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$con</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Varre poteiro</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'NOME DA COLUNA'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">echo</span> <span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Como se pode ver, ele se conectou com o banco e exibiu os registro na tela. Porém, imagine que você deseja fazer isso denovo&#8230; ou cair no registro 2, como você faria?</p>
<p>Analize:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// voltou para registro zero</span>
<span style="color: #990000;">mysql_data_seek</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Passa para variável e imprime valor</span>
<span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'NOME DA COLUNA'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Adicionando isso, ele voltará para o primeiro registro, e o imprimira.</p>
<p><strong>Obs.</strong> Sei que talvez, esse artigo seja um tanto iniciante, porém pretendo postar aqui sobre diversos níveis e assuntos, para assim poder ajudar o maior número de pessoas possível. E a partir de hoje começo a criar meus Artigos. Então perdão pela falta de preparação que houve nesse, qualquer dúvida; sugestão ou contribuição comenta aí!</p>
<p>Abraço,<br />
Mello.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joaomello.net/?feed=rss2&amp;p=19</wfw:commentRss>
		</item>
		<item>
		<title>Consultar CEP direto pelo site dos correios</title>
		<link>http://blog.joaomello.net/?p=12</link>
		<comments>http://blog.joaomello.net/?p=12#comments</comments>
		<pubDate>Mon, 08 Sep 2008 03:32:07 +0000</pubDate>
		<dc:creator>joaomello</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Karmas]]></category>

		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.joaomello.net/?p=12</guid>
		<description><![CDATA[Olá pessoal!
Como muitas ja devem saber, o correios bloqueou o a consulta de CEP direto pelo site. Eu como um jovem aprendiz, descobri um caminho de como fazer a consulta direto pelo site no Delphi. É simples, não dei uma bela implementada&#8230;
Baixar o exemplo.
[ No exemplo a ordem dos botões deve ser clicada cada vez [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal!<br />
Como muitas ja devem saber, o correios bloqueou o a consulta de CEP direto pelo site. Eu como um jovem aprendiz, descobri um caminho de como fazer a consulta direto pelo site no Delphi. É simples, não dei uma bela implementada&#8230;</p>
<p><a class="alignleft" title="Baxar exemplo." href="http://www.4shared.com/file/62141145/93aed367/DesafioCEP.html?dirPwdVerified=ac4aa51b">Baixar o exemplo.</a></p>
<p>[ No exemplo a ordem dos botões deve ser clicada cada vez que a página for carregada. ] </p>
<p>Enfim, que der um encrementada no código (por que to sem tempo), diz ai que eu posto aqui ;]<br />
Bom proveito!</p>
<p>Abraço,<br />
Mello.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joaomello.net/?feed=rss2&amp;p=12</wfw:commentRss>
		</item>
		<item>
		<title>De volta, renovado!</title>
		<link>http://blog.joaomello.net/?p=7</link>
		<comments>http://blog.joaomello.net/?p=7#comments</comments>
		<pubDate>Fri, 08 Aug 2008 03:06:29 +0000</pubDate>
		<dc:creator>joaomello</dc:creator>
		
		<category><![CDATA[Cotidiano]]></category>

		<guid isPermaLink="false">http://blog.joaomello.net/?p=7</guid>
		<description><![CDATA[Olá pessoal?!
É&#8230; acabei perdendo meu blog anterior por &#8216;gurizagem&#8217;. ;/
Tah, mas tudo bem&#8230; ele precisava de uma mudada total, desde o conteúdo até a o design :]
Enfim, não vou postar nada hoje além de minhas desculpas e informar que agora esse &#8216;veículo&#8217; vai andar =P
Tenho que me ir, trabalho amanhã cedo&#8230; prometo escrever um post [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal?!<br />
É&#8230; acabei perdendo meu blog anterior por &#8216;gurizagem&#8217;. ;/<br />
Tah, mas tudo bem&#8230; ele precisava de uma mudada total, desde o conteúdo até a o design :]<br />
Enfim, não vou postar nada hoje além de minhas desculpas e informar que agora esse &#8216;veículo&#8217; vai andar =P</p>
<p>Tenho que me ir, trabalho amanhã cedo&#8230; prometo escrever um post neste fim-de-semana ;]</p>
<p>Abraço,<br />
Mello.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joaomello.net/?feed=rss2&amp;p=7</wfw:commentRss>
		</item>
	</channel>
</rss>
