<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[188工作室]]></title>
<link>http://www.188bc.com/</link>
<description><![CDATA[188工作室，技术改变生产力。]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[greenic[at]163.com(greenic)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>188工作室</title>
	<url>http://www.188bc.com/images/logos.gif</url>
	<link>http://www.188bc.com/</link>
	<description>188工作室</description>
</image>

			<item>
			<link>http://www.188bc.com/article.asp?id=121</link>
			<title><![CDATA[冷干机状态监视器]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[自主软件]]></category>
			<pubDate>Mon,13 Feb 2012 22:55:28 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=121</guid>
		<description><![CDATA[<p><strong>主界面：</strong>&nbsp;</p>
<p><img alt="冷干机状态监视器" src="http://www.188bc.com/blog/softcover/dryer.png" /></p>
<p><strong>功能简介：</strong></p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;本作品是一款用来与冷干机通信，并定时将冷干机的温度、压力参数读取出来，以显示变化趋势的软件。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本软件具有自动识别机型与温度、压力参数个数，自动保存数据，自动调整坐标刻度，自动绘图并移动绘图区域，以显示最新曲线变化的功能，并且可以通过底部的滑块滚动条查看不同时间段的曲线。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据本项目对数据存储和读取的特点，设计了简单、高效的数据存储格式。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=120</link>
			<title><![CDATA[批量上传/批量发布/产品推广/信息发布-解决方案]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[技术文章]]></category>
			<pubDate>Fri,24 Jun 2011 17:27:18 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=120</guid>
		<description><![CDATA[<p><span style="font-size: 14px; "><span style="font-family: 微软雅黑; ">我们可以为您专门定制 批量上传/批量发布/产品推广/信息发布的软件</span></span></p>
<p><span style="font-size: 14px; "><span style="font-family: 微软雅黑; ">如有意向可电话联系：13426403029</span></span></p>
<p>QQ: 25879315</p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=119</link>
			<title><![CDATA[C#开发IE插件]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[技术文章]]></category>
			<pubDate>Fri,24 Jun 2011 15:29:02 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=119</guid>
		<description><![CDATA[<p><span class="Apple-style-span" style="font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px; ">
<h2 style="font-family: Verdana, Arial, sans-serif; font-size: 13pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">Introduction</h2>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">A browser extension software lives inside the browser and adds new features making the browser suitable for specific personal or business needs. The most common business needs that are easily accomplished with browser plug-ins are: modify default search, add side frames, inject new content into existing webpage, communicate with remote servers or Web Services, search highlight, show ads, and any other task that an installed software program can do. In this article, I will explain how to inject new static and dynamic content into an existing webpage.</p>
<h2 style="font-family: Verdana, Arial, sans-serif; font-size: 13pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">Background</h2>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">Browser extensions allow developers to provide easy access to their browser enhancements by adding elements (like an Explorer Bar) to the default user interface. Introduced in Microsoft Internet Explorer 4.0, this feature enables developers to create Explorer Bars and add entries into the standard context menus. Beginning with Internet Explorer 5, this feature allows developers to add entries into the Tools menu and buttons to the toolbar.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">A Browser Helper Object (BHO) runs within Internet Explorer and offers additional services, often without any obvious user interface. For example, a BHO might highlight terms of interest to the user, such as addresses.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">For more background information, see:&nbsp;<a title="Browser Helper Objects: The Browser the Way You Want It" href="http://msdn.microsoft.com/en-us/library/ms976373.aspx" style="text-decoration: none; color: rgb(0, 76, 213); ">http://msdn.microsoft.com/en-us/library/ms976373.aspx</a>.</p>
<h2 style="font-family: Verdana, Arial, sans-serif; font-size: 13pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">The Business Use Case</h2>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">You want to develop an Internet Explorer extension which shows some fixed layer containing promotional offers and discounts for the goods you are selling. To achieve that, you need to develop a custom IE plug-in using BHO that will track user browsing activities and display your discounts based on some content keywords filtering.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">So far so good. You know what should be done. Now let's discover how it is done.</p>
<h2 style="font-family: Verdana, Arial, sans-serif; font-size: 13pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">Step by Step Walk-Through</h2>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">I will explain here a step by step guide on how to accomplish this task as it is better to learn how to do it instead of just take a ready solution which you don't know how it works, and the moment you touch something to make it suit your needs, it breaks down and you have no idea why. I will use .NET C# as a programming framework and language.</p>
<h3 style="font-family: Verdana, Arial, sans-serif; font-size: 11pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">1. Open MS Visual Studio 2010 and create a new project &quot;Visual C#&quot; -&gt; &quot;Windows&quot; -&gt; &quot;Class Library&quot; named &quot;IEPlugin&quot;</h3>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">A new project is opened for you containing a single class&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">Class1</code>. Rename the class to&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">BHO</code>. You can use F2 on the CS file in the Solution Explorer.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">From this high-level overview of Browser Helper Objects, one concept emerges clearly: a BHO is a dynamic-link library (DLL) capable of attaching itself to any new instance of Internet Explorer and, under certain circumstances, also Windows Explorer. Such a module can get in touch with the browser through the container's site. In order to do that, we must implement the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IObjectWithSite</code>&nbsp;interface.</p>
<h3 style="font-family: Verdana, Arial, sans-serif; font-size: 11pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">2. Implement the IObjectWithSite interface</h3>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">Now you have to define the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IObjectWithSite</code>&nbsp;interface which the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">BHO</code>&nbsp;class will implement. The&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IObjectWithSite</code>interface provides simple objects with a lightweight siting mechanism (lighter than&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IOleObject</code>). Often, an object must communicate directly with a container site that is managing the object. Outside of<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IOleObject::SetClientSite</code>, there is no generic means through which an object becomes aware of its site. The<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IObjectWithSite</code>&nbsp;interface provides a siting mechanism. This interface should only be used when&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IOleObject</code>&nbsp;is not already in use. By using&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IObjectWithSite</code>, a container can pass the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IUnknown</code>&nbsp;pointer of its site to the object through&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">SetSite</code>. Callers can also get the latest site passed to&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">SetSite</code>&nbsp;by using&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">GetSite</code>.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">Add references and imports to the following components:</p>
<div class="small-text align-right" id="premain0" width="100%" style="font-size: 8pt !important; text-align: right !important; display: block; "><img id="preimg0" src="http://www.codeproject.com/images/minus.gif" height="9" width="9" preid="0" style="overflow-x: auto; overflow-y: auto; cursor: pointer; " alt="" /><span id="precollapse0" preid="0" style="cursor: pointer; margin-bottom: 0px; ">&nbsp;Collapse</span></div>
<pre lang="cs" id="pre0" style="background-color: rgb(251, 237, 187); padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font: normal normal normal 9pt/normal 'Courier New', Courier, mono; white-space: pre-wrap; overflow-x: auto; overflow-y: auto; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(251, 237, 187); border-right-color: rgb(251, 237, 187); border-bottom-color: rgb(251, 237, 187); border-left-color: rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; "><span class="code-keyword" style="color: blue; ">using</span> SHDocVw;
<span class="code-keyword" style="color: blue; ">using</span> mshtml;
<span class="code-keyword" style="color: blue; ">using</span> System.IO;
<span class="code-keyword" style="color: blue; ">using</span> Microsoft.Win32;
<span class="code-keyword" style="color: blue; ">using</span> System.Runtime.InteropServices; </pre>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">Define the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IOleObjectWithSite</code>&nbsp;interface just above your&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">BHO</code>&nbsp;class declaration like this:</p>
<div class="small-text align-right" id="premain1" width="100%" style="font-size: 8pt !important; text-align: right !important; display: block; "><img id="preimg1" src="http://www.codeproject.com/images/minus.gif" height="9" width="9" preid="1" style="overflow-x: auto; overflow-y: auto; cursor: pointer; " alt="" /><span id="precollapse1" preid="1" style="cursor: pointer; margin-bottom: 0px; ">&nbsp;Collapse</span></div>
<pre lang="cs" id="pre1" style="background-color: rgb(251, 237, 187); padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font: normal normal normal 9pt/normal 'Courier New', Courier, mono; white-space: pre-wrap; overflow-x: auto; overflow-y: auto; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(251, 237, 187); border-right-color: rgb(251, 237, 187); border-bottom-color: rgb(251, 237, 187); border-left-color: rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; ">
[
    ComVisible(<span class="code-keyword" style="color: blue; ">true</span>),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
    Guid(<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">FC4801A3-2BA9-11CF-A229-00AA003D7352&quot;</span>)
]
<span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">interface</span> IObjectWithSite
{
    [PreserveSig]
    <span class="code-keyword" style="color: blue; ">int</span> SetSite([MarshalAs(UnmanagedType.IUnknown)]<span class="code-keyword" style="color: blue; ">object</span> site);
    [PreserveSig]
    <span class="code-keyword" style="color: blue; ">int</span> GetSite(<span class="code-keyword" style="color: blue; ">ref</span> Guid guid, <span class="code-keyword" style="color: blue; ">out</span> <span class="code-SDKkeyword" style="color: rgb(51, 153, 153); ">IntPtr</span> ppvSite);
}</pre>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">Make sure you don't change the GUID!</p>
<h3 style="font-family: Verdana, Arial, sans-serif; font-size: 11pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">3. Make the BHO class implement the IOleObjectWithSite interface</h3>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">The&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">SetSite()</code>&nbsp;method is where the BHO is initialized and where you would perform all the tasks that happen only once. When you navigate to a URL with Internet Explorer, you should wait for a couple of events to make sure the required document has been completely downloaded and then initialized. Only at this point can you safely access its content through the exposed object model, if any. This means you need to acquire a couple of pointers. The first one is the pointer to&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">IWebBrowser2</code>, the interface that renders the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">WebBrowser</code>&nbsp;object. The second pointer relates to events. This module must register as an event listener with the browser in order to receive the notification of downloads and document-specific events.</p>
<div class="small-text align-right" id="premain2" width="100%" style="font-size: 8pt !important; text-align: right !important; display: block; "><img id="preimg2" src="http://www.codeproject.com/images/minus.gif" height="9" width="9" preid="2" style="overflow-x: auto; overflow-y: auto; cursor: pointer; " alt="" /><span id="precollapse2" preid="2" style="cursor: pointer; margin-bottom: 0px; ">&nbsp;Collapse</span></div>
<pre lang="cs" id="pre2" style="background-color: rgb(251, 237, 187); padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font: normal normal normal 9pt/normal 'Courier New', Courier, mono; white-space: pre-wrap; overflow-x: auto; overflow-y: auto; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(251, 237, 187); border-right-color: rgb(251, 237, 187); border-bottom-color: rgb(251, 237, 187); border-left-color: rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; ">
[
        ComVisible(<span class="code-keyword" style="color: blue; ">true</span>),
        Guid(<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">2159CB25-EF9A-54C1-B43C-E30D1A4A8277&quot;</span>),
        ClassInterface(ClassInterfaceType.None)
]

<span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">class</span> BHO : IObjectWithSite
{
  <span class="code-keyword" style="color: blue; ">private</span> WebBrowser webBrowser;

  <span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">int</span> SetSite(<span class="code-keyword" style="color: blue; ">object</span> site)
  {
    <span class="code-keyword" style="color: blue; ">if</span> (site != <span class="code-keyword" style="color: blue; ">null</span>)
    {
        webBrowser = (WebBrowser)site;
        webBrowser.DocumentComplete += 
          <span class="code-keyword" style="color: blue; ">new</span> DWebBrowserEvents2_DocumentCompleteEventHandler(
          <span class="code-keyword" style="color: blue; ">this</span>.OnDocumentComplete);
    }
    <span class="code-keyword" style="color: blue; ">else</span>
    {
        webBrowser.DocumentComplete -= 
          <span class="code-keyword" style="color: blue; ">new</span> DWebBrowserEvents2_DocumentCompleteEventHandler(
          <span class="code-keyword" style="color: blue; ">this</span>.OnDocumentComplete);
        webBrowser = <span class="code-keyword" style="color: blue; ">null</span>;
    }

    <span class="code-keyword" style="color: blue; ">return</span> <span class="code-digit" style="color: navy; ">0</span>;

  }

  <span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">int</span> GetSite(<span class="code-keyword" style="color: blue; ">ref</span> Guid guid, <span class="code-keyword" style="color: blue; ">out</span> <span class="code-SDKkeyword" style="color: rgb(51, 153, 153); ">IntPtr</span> ppvSite)
  {
    <span class="code-SDKkeyword" style="color: rgb(51, 153, 153); ">IntPtr</span> punk = Marshal.GetIUnknownForObject(webBrowser);
    <span class="code-keyword" style="color: blue; ">int</span> hr = Marshal.QueryInterface(punk, <span class="code-keyword" style="color: blue; ">ref</span> guid, <span class="code-keyword" style="color: blue; ">out</span> ppvSite);
    Marshal.Release(punk);
    <span class="code-keyword" style="color: blue; ">return</span> hr;
  }

  <span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">void</span> OnDocumentComplete(<span class="code-keyword" style="color: blue; ">object</span> pDisp, <span class="code-keyword" style="color: blue; ">ref</span> <span class="code-keyword" style="color: blue; ">object</span> URL)
  {
    HTMLDocument document = (HTMLDocument)webBrowser.Document;
  }

}</pre>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">The BHO site is the COM interface used to establish a communication. Define a GUID attribute for your BHO as it will be used later on during registration. We have implemented the&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">SetSite</code>&nbsp;and&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">GetSite</code>&nbsp;methods and added an empty event handler for the document loaded event. Thus, we will receive an event every time the document is loaded into the browser.</p>
<h3 style="font-family: Verdana, Arial, sans-serif; font-size: 11pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">4. Implement the OnDocumentComplete method to inject the JavaScript code and the div element</h3>
<div class="small-text align-right" id="premain3" width="100%" style="font-size: 8pt !important; text-align: right !important; display: block; "><img id="preimg3" src="http://www.codeproject.com/images/minus.gif" height="9" width="9" preid="3" style="overflow-x: auto; overflow-y: auto; cursor: pointer; " alt="" /><span id="precollapse3" preid="3" style="cursor: pointer; margin-bottom: 0px; ">&nbsp;Collapse</span></div>
<pre lang="cs" id="pre3" style="background-color: rgb(251, 237, 187); padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font: normal normal normal 9pt/normal 'Courier New', Courier, mono; white-space: pre-wrap; overflow-x: auto; overflow-y: auto; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(251, 237, 187); border-right-color: rgb(251, 237, 187); border-bottom-color: rgb(251, 237, 187); border-left-color: rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; "><span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">void</span> OnDocumentComplete(<span class="code-keyword" style="color: blue; ">object</span> pDisp, <span class="code-keyword" style="color: blue; ">ref</span> <span class="code-keyword" style="color: blue; ">object</span> URL)
{
    HTMLDocument document = (HTMLDocument)webBrowser.Document;

    IHTMLElement head = (IHTMLElement)((IHTMLElementCollection)
                           document.all.tags(<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">head&quot;</span>)).item(<span class="code-keyword" style="color: blue; ">null</span>, <span class="code-digit" style="color: navy; ">0</span>);
    IHTMLScriptElement scriptObject = 
      (IHTMLScriptElement)document.createElement(<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">script&quot;</span>);
    scriptObject.type = <span class="code-string" style="color: purple; ">@&quot;</span><span class="code-string" style="color: purple; ">text/javascript&quot;</span>;
    scriptObject.text = <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">\nfunction hidediv(){document.getElementById&quot;</span> + 
                        <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">('myOwnUniqueId12345').style.visibility = 'hidden';}\n\n&quot;</span>;
    ((HTMLHeadElement)head).appendChild((IHTMLDOMNode)scriptObject);

    <span class="code-keyword" style="color: blue; ">string</span> div = <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">&lt;div id=\&quot;myOwnUniqueId12345\&quot; style=\&quot;position:&quot;</span> + 
                 <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">fixed;bottom:0px;right:0px;z-index:9999;width=300px;&quot;</span> + 
                 <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">height=150px;\&quot;&gt; &lt;div style=\&quot;position:relative;&quot;</span> + 
                 <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">float:right;font-size:9px;\&quot;&gt;&lt;a &quot;</span> + 
                 <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">href=\&quot;javascript:hidediv();\&quot;&gt;close&lt;/a&gt;&lt;/div&gt;&quot;</span> +
        <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">My content goes here ...&lt;/div&gt;&quot;</span>;

    document.body.insertAdjacentHTML(<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">afterBegin&quot;</span>, div);
}</pre>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">First we inject the JavaScript that we will use to close the div popup. Then we inject the HTML for the div element in the body with style that is displayed in the bottom right corner of the browser. And that is it. You may want to filter our URLs and content for which you display the div. You can go like this:</p>
<div class="small-text align-right" id="premain4" width="100%" style="font-size: 8pt !important; text-align: right !important; display: block; "><img id="preimg4" src="http://www.codeproject.com/images/minus.gif" height="9" width="9" preid="4" style="overflow-x: auto; overflow-y: auto; cursor: pointer; " alt="" /><span id="precollapse4" preid="4" style="cursor: pointer; margin-bottom: 0px; ">&nbsp;Collapse</span></div>
<pre lang="cs" id="pre4" style="background-color: rgb(251, 237, 187); padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font: normal normal normal 9pt/normal 'Courier New', Courier, mono; white-space: pre-wrap; overflow-x: auto; overflow-y: auto; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(251, 237, 187); border-right-color: rgb(251, 237, 187); border-bottom-color: rgb(251, 237, 187); border-left-color: rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; "><span class="code-keyword" style="color: blue; ">if</span> (URL.ToString().Contains(<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">www.google.com&quot;</span>)) 
{
    <span class="code-comment" style="color: rgb(0, 128, 0); font-style: italic; ">//</span><span class="code-comment" style="color: rgb(0, 128, 0); font-style: italic; "> Show div only in here ... </span>} </pre>
<h3 style="font-family: Verdana, Arial, sans-serif; font-size: 11pt; line-height: 1.2em; font-weight: bold; color: rgb(255, 153, 0); ">5. Register your BHO to be loaded by Internet Explorer</h3>
<div class="small-text align-right" id="premain5" width="100%" style="font-size: 8pt !important; text-align: right !important; display: block; "><img id="preimg5" src="http://www.codeproject.com/images/minus.gif" height="9" width="9" preid="5" style="overflow-x: auto; overflow-y: auto; cursor: pointer; " alt="" /><span id="precollapse5" preid="5" style="cursor: pointer; margin-bottom: 0px; ">&nbsp;Collapse</span></div>
<pre lang="cs" id="pre5" style="background-color: rgb(251, 237, 187); padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font: normal normal normal 9pt/normal 'Courier New', Courier, mono; white-space: pre-wrap; overflow-x: auto; overflow-y: auto; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(251, 237, 187); border-right-color: rgb(251, 237, 187); border-bottom-color: rgb(251, 237, 187); border-left-color: rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; "><span class="code-keyword" style="color: blue; ">public</span> <span class="code-keyword" style="color: blue; ">const</span> <span class="code-keyword" style="color: blue; ">string</span> BHO_REGISTRY_KEY_NAME = 
   <span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">Software\\Microsoft\\Windows\\&quot; +     &quot;</span>CurrentVersion\\Explorer\\Browser Helper Objects<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">;  [ComRegisterFunction] public static void RegisterBHO(Type type) {     RegistryKey registryKey =        Registry.LocalMachine.OpenSubKey(BHO_REGISTRY_KEY_NAME, true);      if (registryKey == null)         registryKey = Registry.LocalMachine.CreateSubKey(                                 BHO_REGISTRY_KEY_NAME);      string guid = type.GUID.ToString(&quot;</span>B<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">);     RegistryKey ourKey = registryKey.OpenSubKey(guid);      if (ourKey == null)     {         ourKey = registryKey.CreateSubKey(guid);     }      ourKey.SetValue(&quot;</span>NoExplorer<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">, 1, RegistryValueKind.DWord);      registryKey.Close();     ourKey.Close(); }  [ComUnregisterFunction] public static void UnregisterBHO(Type type) {     RegistryKey registryKey =        Registry.LocalMachine.OpenSubKey(BHO_REGISTRY_KEY_NAME, true);     string guid = type.GUID.ToString(&quot;</span>B<span class="code-string" style="color: purple; ">&quot;</span><span class="code-string" style="color: purple; ">);      if (registryKey != null)         registryKey.DeleteSubKey(guid, false); }</span></pre>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">The&nbsp;<code style="color: rgb(153, 0, 0); font: normal normal normal 11pt/normal 'Courier New', Courier, mono; ">Register</code>&nbsp;method simply tells IE which is the GUID of your extension so that it could be loaded. The &quot;No Explorer&quot; value simply says that we don't want to be loaded by Windows Explorer.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">Now all you have to do is create a simple installation project that will install your IE plug-in or install it manually.</p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">That is all about it! Quick and simple.</p>
</span></p>
<p style="font-family: Verdana, Arial, sans-serif; font-size: 10pt; line-height: 1.2em; ">&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=118</link>
			<title><![CDATA[豆捞坊候位系统]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[自主软件]]></category>
			<pubDate>Sat,18 Jun 2011 11:18:35 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=118</guid>
		<description><![CDATA[<p><strong>&nbsp;主界面：</strong>&nbsp;<img alt="豆捞坊候位系统" src="http://www.188bc.com/blog/softcover/dolar.png" /></p>
<p><strong>功能简介：</strong></p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;本软件是豆捞坊店面和菜品的展示软件，用来让顾客对豆捞坊有个更好、更全面的了解，同时让顾客在等待用餐位的同时可以进行游戏、QQ聊天和冲浪等，以打发时间。</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;本软件采用内嵌Flash和网页的形式进行窗口设计，显示的内容可在后台修改。而且实现了SDI窗体中嵌入MDI窗体，让用户可以在软件内进行多标签窗口浏览网页。</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=117</link>
			<title><![CDATA[某国际贸易公司网站]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[自主软件]]></category>
			<pubDate>Wed,11 May 2011 21:45:21 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=117</guid>
		<description><![CDATA[<p><strong>网站主界面：</strong></p>
<p><img alt="国际贸易网站" src="http://www.188bc.com/blog/softcover/vanderhein.png" /></p>
<p>该网站建立上开源CMS系统上，界面有我们的创意也有客户的建议。</p>
<p>因为我是一名技术人员，所以总是想从技术上取得一些突破、发现一些亮点。但是此网站的建设过程中，我的工作也没啥可圈可点的。不过在此夸一下开源CMS系统，后台里的功能很强大、采用模块化的方式来组织页面，大大提高了我们的工作效率，抽时间要研究研究他的架构。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=116</link>
			<title><![CDATA[.Net 应用程序如何在32位操作系统下申请超过2G的内存]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[技术文章]]></category>
			<pubDate>Sun,08 May 2011 19:54:43 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=116</guid>
		<description><![CDATA[<p>&nbsp;<span class="Apple-style-span" style="font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; line-height: 18px; ">2008 年我写过一篇博客叫 《<a target="_blank" href="http://www.cnblogs.com/eaglet/archive/2008/11/06/1328061.html" style="color: rgb(29, 88, 209); text-decoration: none; ">让.Net 应用程序突破2G的内存访问限制</a>》这篇博客主要讲述了如何在32位操作系统下利用AWE 扩展访问超过2G的内存。AWE方式虽然可以访问超过2G的内存，但其本身也有一些问题，首先必须要锁定内存，其次需要自己写内存管理程序来管理这些内存，.net framework 无法在AWE 扩展的内存中创建托管堆。其实很多应用只是想申请比2G稍多一些的内存，最简单的方法还是采用/3GB开关来实现。本文将讲述如何利用 /3GB开关来让32位操作系统下.net 应用程序申请超过2GB的内存。
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">&nbsp;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><strong>首先简单说一下这个 /3GB 开关 (知道的可以不看)</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">默认情况下，Windows 可以对总计 4 千兆字节 (GB) 的虚拟地址空间进行寻址。默认情况下，此地址空间中的 2 GB 为内核（操作系统）保留，另外 2 GB 是为用户模式程序保留的。当你将 /3GB 开关放入操作系统的 Boot.ini 文件中时，你就重新分配了虚拟地址空间，给用户模式程序提供 3 GB 的空间，同时将内核限制为 1 GB。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">设置办法：C:\boot.ini 文件做如下修改：</p>
<pre style="margin-top: 0px; margin-bottom: 0px; margin-right: 0px; margin-left: 22px; font-size: 1em; ">
[boot loader]<br />timeout=30<br />default=multi(0)disk(0)rdisk(0)partition(2)\WINNT<br />[operating systems]<br />multi(0)disk(0)rdisk(0)partition(2)\WINNT=&quot;????&quot; /3GB<br /></pre>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">如下操作系统可以支持 /3GB 开关</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">Windows XP Professional<br />
Windows Server 2003<br />
Windows Server 2003, Enterprise Edition<br />
Windows Server 2003, Datacenter Edition<br />
Windows 2000 Advanced Server<br />
Windows 2000 Datacenter Server<br />
Windows NT Server 4.0, Enterprise Edition</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">Windows VISTA , Windows 7 和 Windows server 2008 也支持这个开关</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">&nbsp;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">详见</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><a target="_blank" title="http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx" href="http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx" style="color: rgb(29, 88, 209); text-decoration: none; ">http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">&nbsp;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><strong>设置完后重新启动系统，这时应用程序就可以申请超过3G的内存了。一切好像到这里就该结束了，然而并非如此。</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">当我运行我在.net framework 下做的测试程序时，我发现3GB开关打开后，这个测试程序依然无法申请超过2G的内存，内存申请到1.5G以上时就无法再分配内存了。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">查找资料后我发现，操作系统在支持/3GB参数后应用程序也要做相应的修改，告诉操作系统可以按照/3GB方式运行才行，我想这很可能是出于对应用程序兼容性方面的考虑。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">为了告知操作系统这个应用程序可以支持/3GB方式，我们需要往exe 文件头中添加一个&nbsp;<code>IMAGE_FILE_LARGE_ADDRESS_AWARE</code>&nbsp;标志。添加的方式很简单：</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">在你的系统的 Program Files\Microsoft Visual Studio 8\VC\bin 目录下找到&nbsp;<code>editbin</code>&nbsp;这个可执行文件，在命令行下执行：</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><code>editbin&nbsp;</code>/<code>LARGEADDRESSAWARE yourapplication.exe 这里的yourapplication.exe 需要输入的是你的.net 应用程序的路径名加文件名。</code></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><code>执行了这条语句后，我再次运行测试程序，内存可以申请到 2.5G了，比2GB模式下多了1G内存可以使用。</code></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">&nbsp;</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><strong>最后多罗嗦一句，为什么.net 应用程序在 2GB 情况下只能申请最多 1.4-1.6 GB 的内存？</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">这是因为.net 的垃圾回收器在工作时需要拷贝 live objects，.net framework 需要为它保留一定空间的内存来完成这些拷贝工作。这也是为什么Microsoft 建议asp.net 应用程序内存分配的上限最好设置为800M的原因.</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; ">.net 应用程序如何优化性能，参见下面链接，大家有兴趣可以去看看，这里不再多说了，离主题有点远了。</p>
<p style="margin-top: 5px; margin-right: auto; margin-left: auto; margin-bottom: 5px; text-indent: 0px; "><a href="http://msdn.microsoft.com/en-us/library/ms998530.aspx" target="_blank" style="color: rgb(29, 88, 209); text-decoration: none; ">Improving .NET Application Performance and Scalability</a></p>
</span></p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=115</link>
			<title><![CDATA[一个Bug 差点让服务器的文件系统崩溃]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[技术文章]]></category>
			<pubDate>Sun,08 May 2011 19:22:03 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=115</guid>
		<description><![CDATA[昨天，公司的美国客户发邮件给我，说我的软件出问题了，我查来查去，发现居然是服务器上一个目录无法删除，一删除就报 cannot read from the source file o&#114; disk. 如果用命令行方式删除，则报&nbsp;&nbsp;cannot find the specified path。一开始以为是文件系统遭破坏了，用 chkdsk 命令检查，没有发现问题，后来仔细一看，那个不能删除的目录名居然以一个空格字符结尾，而我尝试在资源管理器中创建一个目录以空格结尾结果资源管理器会自动将末尾的字符删除，用程序创建，结果也一样，这个美国佬是怎么创建这个古怪的目录的？出现这种情况后不但是无法删除这么简单，列目录什么的也会有问题，这样一来，系统的运行都会有问题，我想到的最坏结果就是可能不得不格式化服务器的硬盘，想到这里我几乎不敢再想下去了！Research了一天，后来终于找到了解决方案，并且由此还发现问题的起因是我程序上的一个Bug造成，可怕的Bug！<br/>Windows 的文件系统可以支持特殊字符的文件名，比如以空格结尾，以点号结尾等，有一篇英文的文章说NTFS 支持这些文件名，但FAT不支持，我试了一下，FAT也支持。但Windows API 却对这些特殊文件名进行了限制，也就是说，我们通过程序是无法创建一个以空格或点号结尾的文件名或路径名的。但Copy 和 Move的API 却不做这方面的限制，这导致我们可以从其他的文件系统拷贝或移动一个特殊文件名的文件到Windows 的文件系统，但一旦在Windows的文件系统上创建成功，就无法通过正常途径删除或改名。因为调用API 删除或改名时，API 会首先进行规则检查，如果发现不符合规则，则直接忽略。这两组API 在处理上的不一致，带来一个非常严重的安全问题，可惜微软到了Windows7 还没有去弥补这个问题。<br/>下面让我们用代码复现这个问题<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string dir = @&#34;C:\Temp\abc&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IO.Directory.Cr&#101;ateDirectory(dir); //在C:\Temp 目录下创建abc 这个目录<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string dir1 = @&#34;c:\Temp\Bcd \&#34;;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IO.Directory.Move(dir, dir1); //将ABC 移动到&#34;Bcd &#34;这个目录去，注意这里 Bcd后面有个空格<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show(ex.Message, &#34;Error&#34;, MessageBoxButtons.OK, MessageBoxIcon.Error);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>在运行这段代码前，你一定要有一点思想准备，因为一旦运行成功，你的 C:\temp 目录下就有了一个 “Bcd ”这样的古怪的目录，而且你用正常的方法根本无法删除它。如果我在此打住，你一定会为之抓狂。不过没关系，我已经找到了删除它的方法，下面就和大家共享：<br/> <br/>Windows 的命令行工具 Del 和 Rd 支持一种方式可以不对输入文件名的合法性进行检查，这种方式是在完整目录名前加一个 \\?\<br/>比如<br/>del “\\?\C:\Temp\xxx.” 删除xxx. 这个文件<br/>删除目录的话<br/>rd /s “\\?\C:\Temp\xxx.” 删除 xxx. 这个目录<br/>执行这个命令后，就可以删除这些古怪的文件了。注意，这里一定要输入完整的目录才可以，相对路径不行。<br/> <br/>讲到这里，我们知道了原因和解决方案，那么在这里我需要提醒大家我们以后在程序中调用 System.IO.Directory.Move 或者 System.IO.File.Copy , System.IO.File.Move 这些函数前，一定要注意先判断一下输入的目标文件名或目录名的结尾是不是空格或点号，可能还要判断其他情况，但目前我只知道这两种情况，而且结尾是空格非常有隐蔽性。]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=114</link>
			<title><![CDATA[XK3168地磅控制器]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[自主软件]]></category>
			<pubDate>Fri,18 Mar 2011 14:11:33 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=114</guid>
		<description><![CDATA[<p><strong>&nbsp;软件主界面：</strong></p>
<p><img alt="地磅控制器" src="http://www.188bc.com/blog/softcover/scaler.png" /></p>
<p><strong>软件简介：</strong></p>
<p>&nbsp;&nbsp; &nbsp; &nbsp;本软件用来接收地磅控制器端发来的数据、控制外接大屏幕的显示、记录与查询称重信息和打印称重结果等功能。</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp;本软件开发中的难点是对串口数据的接收与解析，避免数据丢帧而可能导致的结果错误，而且需要同时控制两个串口，以实现与控制器和外接大屏幕的通信。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=113</link>
			<title><![CDATA[CSDN网资源快速下载器]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[自主软件]]></category>
			<pubDate>Sat,05 Feb 2011 22:47:52 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=113</guid>
		<description><![CDATA[<p><strong>软件主界面：</strong></p>
<p>&nbsp;<img alt="CSDN网资源快速下载器" src="http://www.188bc.com/blog/softcover/csdn_autodownload.png" /></p>
<p><strong>软件简介：</strong></p>
<p>&nbsp;&nbsp;&nbsp; 本软件是用来快速下载Csdn网下载频道的资源，省去了下载时登录、点击下载、下载后再评分的麻烦，大大节约了下载时间。经常需要从CSDN网下载资源的朋友肯定了解此软件的作用。</p>
<p>&nbsp;&nbsp;&nbsp; 2010-12-28&nbsp; Ver 1.1&nbsp;&nbsp; 实现了自动下载，但下载后不只能提供评价，无法获取到返还的积分;<br />
&nbsp;&nbsp;&nbsp; 2011-2-5&nbsp; Ver 1.2&nbsp;&nbsp; 解决了无法获取到返还积分的问题;</p>
<p>&nbsp;&nbsp;&nbsp; <span style="color: #ff6600"><strong><a target="_blank" href="http://www.188bc.com/blog/softdown/csdn.rar">点此下载最新版软件</a></strong></span></p>]]></description>
		</item>
		
			<item>
			<link>http://www.188bc.com/article.asp?id=112</link>
			<title><![CDATA[土豆网视频上传辅助器[免费]]]></title>
			<author>greenic[at]163.com(greenic)</author>
			<category><![CDATA[自主软件]]></category>
			<pubDate>Thu,13 Jan 2011 22:42:25 +0800</pubDate>
			<guid>http://www.188bc.com/default.asp?id=112</guid>
		<description><![CDATA[<p><strong>&nbsp;软件截图：</strong></p>
<p><img alt="土豆网视频上传辅助器" src="http://www.188bc.com/blog/softcover/itudou1.png" /></p>
<p><img alt="土豆网视频上传辅助器" src="http://www.188bc.com/blog/softcover/itudou2.png" /></p>
<p><strong>软件简介：</strong></p>
<p>本软件用来辅助需要大量上传视频的网友，辅助器针对土豆网的视频上传软件iTudou，开启后会自动打开选择视频文件对话框，并在用户选择后自动填写标签、简介等信息，然后自动提交上传，在一定程度上节省了用户上传视频的工作量。</p>
<p>本软件采用了发送系统消息的方式对iTudou软件进行控制，主要是按钮的点击和文本的发送，其次就是运行逻辑的设置。目前欠缺的功能包括使用快捷键开始、停止监视，自动选择上传文件从而实现全面自动化，以后有时间再加上。</p>
<p><a title="土豆网视频上传辅助器" href="http://www.188bc.com/blog/softdown/itudou.rar">点此下载试用</a></p>]]></description>
		</item>
		
</channel>
</rss>

