<?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>查理布朗的倒楣世界 &#187; Windows</title>
	<atom:link href="http://clyang.net/blog/category/tech/windows/feed" rel="self" type="application/rss+xml" />
	<link>http://clyang.net/blog</link>
	<description>Clyang's Murmuring</description>
	<lastBuildDate>Thu, 01 Sep 2011 01:48:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>使用flashget 1.8以上的朋友請小心</title>
		<link>http://clyang.net/blog/2009/02/20/215</link>
		<comments>http://clyang.net/blog/2009/02/20/215#comments</comments>
		<pubDate>Fri, 20 Feb 2009 14:39:26 +0000</pubDate>
		<dc:creator>clyang</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[技術]]></category>
		<category><![CDATA[flashget]]></category>

		<guid isPermaLink="false">http://clyang.net/blog/?p=215</guid>
		<description><![CDATA[昨天在使用flashget下載自己在VPS上面的資料後，檢察apache log竟然發現一堆不速之客的連線，都在嘗試我之前抓過的那個檔案(還好我習慣不錯，抓完即砍)，後來網路上翻了一下才發現，flashget 1.8之後的版本，會非常"好心"的將你曾經下載過的連結都傳送到 stats.flashget.com 所以當其他user嘗試下載相同檔案時，便會使用連結到你的連結去下載。我目前的鴕鳥是解決法是，編輯c:\windows\system32\drivers\etc\hosts，在最後加上一行: 127.0.0.1 stats.flashget.com 來解決。如果你常使用這類的下載軟體，建議其他套來使用吧，才是永保安康之策。]]></description>
			<content:encoded><![CDATA[<p>昨天在使用flashget下載自己在VPS上面的資料後，檢察apache log竟然發現一堆不速之客的連線，都在嘗試我之前抓過的那個檔案(還好我習慣不錯，抓完即砍)，後來網路上翻了一下才發現，flashget 1.8之後的版本，會非常"<strong>好心</strong>"的將你曾經下載過的連結都傳送到</p>
<blockquote><p>stats.flashget.com</p></blockquote>
<p>所以當其他user嘗試下載相同檔案時，便會使用連結到你的連結去下載。我目前的鴕鳥是解決法是，編輯c:\windows\system32\drivers\etc\hosts，在最後加上一行:</p>
<blockquote><p>127.0.0.1 stats.flashget.com</p></blockquote>
<p>來解決。如果你常使用這類的下載軟體，建議其他套來使用吧，才是永保安康之策。</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://clyang.net/blog/2009/02/20/215/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BCB Form Create/Close Procedure Flow</title>
		<link>http://clyang.net/blog/2009/02/18/207</link>
		<comments>http://clyang.net/blog/2009/02/18/207#comments</comments>
		<pubDate>Tue, 17 Feb 2009 17:05:28 +0000</pubDate>
		<dc:creator>clyang</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[技術]]></category>
		<category><![CDATA[BCB]]></category>

		<guid isPermaLink="false">http://clyang.net/blog/?p=207</guid>
		<description><![CDATA[如果沒有搞清楚這些動作, 常常在不該cleanup的部份就先cleanup了，害得後面一些還會被callup的method想access的東西都access不到。然後程式就爆走啦 XDD，為了避免自己重蹈覆轍，還是寫一篇來記錄一下。[這是我自己測出來的結果，使用的是BCB 6.0，若有錯誤還請幫忙指正，謝謝 ] 只有單一Form: Create: OnCreate()-&#62; OnShow() -&#62; OnActivate() -&#62; OnCanResize() -&#62; OnConstrainedResize() -&#62; OnResize() Close: OnCloseQuery() -&#62; OnClose() -&#62; OnHide() -&#62; OnDestory() -&#62; ~Form1() 兩個Form: Form1, Form2 且互相沒有繼承關係: Create: Form1 Constructor -&#62; OnCreate() -&#62; Form1產生完成跳 -&#62; Form2 &#8230; <a href="http://clyang.net/blog/2009/02/18/207">繼續閱讀 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>如果沒有搞清楚這些動作, 常常在不該cleanup的部份就先cleanup了，害得後面一些還會被callup的method想access的東西都access不到。然後程式就爆走啦 XDD，為了避免自己重蹈覆轍，還是寫一篇來記錄一下。[這是我自己測出來的結果，使用的是BCB 6.0，若有錯誤還請幫忙指正，謝謝 <img src='http://clyang.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ]</p>
<p><span id="more-207"></span><strong>只有單一Form:</strong></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Create:</span></p>
<p style="padding-left: 60px;">OnCreate()-&gt; OnShow() -&gt; OnActivate() -&gt; OnCanResize() -&gt; OnConstrainedResize() -&gt; OnResize()</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Close:</span></p>
<p style="padding-left: 60px;">OnCloseQuery() -&gt; OnClose() -&gt; OnHide() -&gt; OnDestory() -&gt; ~Form1()</p>
<p><strong>兩個Form: Form1, Form2 且互相沒有繼承關係:</strong></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Create:</span></p>
<p style="padding-left: 60px;">Form1 Constructor -&gt; OnCreate() -&gt; Form1產生完成跳 -&gt; Form2 Constructor -&gt;回到Form1 -&gt; OnShow() -&gt; …… -&gt; OnResize()</p>
<p style="padding-left: 60px;"><span style="color: #ff0000;">Note: 這個時候Form2的OnCreate()不會被執行!!!</span></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Close:</span></p>
<p style="padding-left: 60px;">Form1的OnCloseQuery() -&gt; OnClose() -&gt; -&gt; Form2 Destructor -&gt; Form1的OnHide() -&gt; Form1的OnDestory() -&gt; ~Form1()的Destructor</p>
<p style="padding-left: 60px;"><span style="color: #ff0000;">Note: Form2的OnDestory()是沒有被執行的!!!</span></p>
<p><strong>兩個Form: Form1, Form2 且Form2繼承自Form1:</strong></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Create:</span></p>
<p style="padding-left: 60px;">Form1 Constructor -&gt; OnCreate() -&gt; Form1產生完成跳 -&gt; Form2 Constructor -&gt; Form2的OnCreate() -&gt; Form1 Constructor -&gt; Form2的Constructor -&gt; 回Form1-&gt; OnShow() -&gt; …… -&gt; OnResize()</p>
<p style="padding-left: 60px;"><span style="color: #ff0000;">Note: Form2的onCreate()是先執行Form2的constructor再執行Form1的constructor!!</span></p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Close:</span></p>
<p style="padding-left: 60px;"><em>如果Form2是在隱藏的狀態:</em></p>
<p style="padding-left: 90px;">Form1 OnCloseQuery() -&gt; OnClose() -&gt; Form2 Destructor -&gt; <span style="color: #008000;">Form1 Destructor</span> -&gt; Form2 OnDestory() -&gt; Form1 OnHide() -&gt; Form1 OnDestory() -&gt; <span style="color: #008000;">Form1 Destructor</span></p>
<p style="padding-left: 90px;"><span style="color: #ff0000;">Note: Form1的Destructor被執行兩次!!!</span></p>
<p style="padding-left: 60px;">
<p style="padding-left: 60px;"><em>如果Form2在顯示的狀態:</em></p>
<p style="padding-left: 90px;">Form1 OnCloseQuery() -&gt; OnClose() -&gt; <span style="color: #800080;">Form2 onHide()</span> -&gt; Form2 Destructor -&gt; <span style="color: #008000;">Form1 Destructor</span> -&gt; Form2 OnDestory() -&gt; Form1 OnHide() -&gt; Form1 OnDestory() -&gt; <span style="color: #008000;">Form1 Destructor</span></p>
<p style="padding-left: 90px;"><span style="color: #ff0000;">Note: Form1的Destructor被執行兩次!!!</span></p>
<p style="padding-left: 60px;">比較Form1跟Form2的隱藏以及顯示的過程，會發現只多了一個步驟，就是將Form2隱藏的過程(上面紫色的部份)</p>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://clyang.net/blog/2009/02/18/207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MFC下怎麼藏住console window</title>
		<link>http://clyang.net/blog/2009/02/17/202</link>
		<comments>http://clyang.net/blog/2009/02/17/202#comments</comments>
		<pubDate>Mon, 16 Feb 2009 18:47:56 +0000</pubDate>
		<dc:creator>clyang</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[技術]]></category>
		<category><![CDATA[hide console]]></category>
		<category><![CDATA[MFC]]></category>

		<guid isPermaLink="false">http://clyang.net/blog/?p=202</guid>
		<description><![CDATA[之前開發的某個自用的小程式程式，需要在程式裡面執行另外一支外部程式我很直覺的想到了system()，這function的確也很盡職的達到呼叫的目的，但是缺點是他會帶出一個黑黑醜醜的console window，畫面上實在非常不美觀，為了隱藏這個醜陋的視窗，我決定想盡辦法把那該死的console window給隱藏起來，結果因為我跟windows api的不熟，花了我不少功夫，所以特地紀錄一下。 隱藏方法就是使用ShellExecuteEx() + WaitForSingleObject() 就可以完美的達成目標, 詳細用法如下: SHELLEXECUTEINFO ShExecInfo = {0}; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = NULL; ShExecInfo.lpFile = &#34;c:\\xxx\\xxx.exe&#34;; // 外部呼叫的檔案路徑及名稱 ShExecInfo.lpParameters = &#34;&#34;; ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_HIDE; // &#8230; <a href="http://clyang.net/blog/2009/02/17/202">繼續閱讀 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>之前開發的某個自用的小程式程式，需要在程式裡面執行另外一支外部程式我很直覺的想到了system()，這function的確也很盡職的達到呼叫的目的，但是缺點是他會帶出一個黑黑醜醜的console window，畫面上實在非常不美觀，為了隱藏這個醜陋的視窗，我決定想盡辦法把那該死的console window給隱藏起來，結果因為我跟windows api的不熟，花了我不少功夫，所以特地紀錄一下。<br />
<span id="more-202"></span><br />
隱藏方法就是使用ShellExecuteEx() + WaitForSingleObject() 就可以完美的達成目標, 詳細用法如下:</p>
<pre class="brush: c">

SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = &quot;c:\\xxx\\xxx.exe&quot;;  // 外部呼叫的檔案路徑及名稱
ShExecInfo.lpParameters = &quot;&quot;;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;   // SW_HIDE就是把window給hide起
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&amp;ShExecInfo);  // 執行吧!!

//為了確定該支console程式完整執行完才繼續往下, 使用WaitForSingleObject
//去等待剛剛那個process, 等待timeout時間設為INFINITE (永久)
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
</pre>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><!-- Do not remove -->]]></content:encoded>
			<wfw:commentRss>http://clyang.net/blog/2009/02/17/202/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

