<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_ＨＯＨ</title><subtitle type="text">五年的时间，依然一事无成，什么都在做，什么都做不好。</subtitle><id>http://feed.cnblogs.com/blog/u/13930/rss</id><updated>2011-08-08T14:15:03Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13930/rss"/><entry><id>http://www.cnblogs.com/HOH/archive/2011/05/27/2059672.html</id><title type="text">WinCE、Windows Mobile GPRS连接类</title><summary type="text">摘要：  在做手机应用程序开发的时候，我们经常需要手动建立GPRS连接，下面我提供一个经过简单改动过的GPRS连接类。 正文：  这个类核心的代码，在网上都可以找到，我只是在这个基础上，进行了简单的封装，让他可以在后台自动监视连接，在连接断开的时候，可以自动建立，让我们在做业务逻辑的时候，可以不必去管GPRS连接着一块。 /// &amp;lt;summary&amp;gt;/// GPRS自动连接服务/// &amp;lt;/summa...</summary><published>2011-05-27T03:21:00Z</published><updated>2011-05-27T03:21:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2011/05/27/2059672.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2011/05/27/2059672.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a16f3a5b-e55d-440b-89dd-6c3ea600fb68" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81%ef%bc%9a" rel="tag"&gt;摘要：&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在做手机应用程序开发的时候，我们经常需要手动建立GPRS连接，下面我提供一个经过简单改动过的GPRS连接类。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9146e638-a896-4798-a3e1-3e81ad3c649c" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87%ef%bc%9a" rel="tag"&gt;正文：&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 这个类核心的代码，在网上都可以找到，我只是在这个基础上，进行了简单的封装，让他可以在后台自动监视连接，在连接断开的时候，可以自动建立，让我们在做业务逻辑的时候，可以不必去管GPRS连接着一块。&lt;/p&gt;  &lt;div&gt;   &lt;pre&gt;&lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
&lt;span style="color: #808080"&gt;/// GPRS自动连接服务&lt;/span&gt;&#xD;
&lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ConnectionBLL&#xD;
{&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; ConnectionBLL _ConnectionBLL = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; _autoConnect = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; _interval = 30000;&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; ConnectState _connectState;&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; ConnectionBLL()&#xD;
    {&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; ConnectionBLL Instance&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (_ConnectionBLL == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;lock&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ConnectionBLL))&#xD;
                {&#xD;
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (_ConnectionBLL == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&#xD;
                    {&#xD;
                        _ConnectionBLL = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConnectionBLL();&#xD;
                    }&#xD;
                }&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _ConnectionBLL;&#xD;
        }&#xD;
    }&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 连接状态&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnectState ConnectState&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _connectState; }&#xD;
    }&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 是否自动连接&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; AutoConnect&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _autoConnect; }&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 监听频率&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; Interval&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _interval; }&#xD;
        &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; { _interval = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; S_OK = 0;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; CONNMGR_PARAM_GUIDDESTNET = 0x1;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; CONNMGR_PRIORITY_USERINTERACTIVE = 0x08000;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; INFINITE = 0xffffffff;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; CONNMGR_STATUS_CONNECTED = 0x10;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CONNMGR_MAX_DESC = 128;    &lt;span style="color: #008000"&gt;// @constdefine Max size of a network description&lt;/span&gt;&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CONNMGR_FLAG_PROXY_HTTP = 0x1; &lt;span style="color: #008000"&gt;// @constdefine HTTP Proxy supported&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CONNMGR_FLAG_PROXY_WAP = 0x2; &lt;span style="color: #008000"&gt;// @constdefine WAP Proxy (gateway) supported&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CONNMGR_FLAG_PROXY_SOCKS4 = 0x4; &lt;span style="color: #008000"&gt;// @constdefine SOCKS4 Proxy supported&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CONNMGR_FLAG_PROXY_SOCKS5 = 0x8; &lt;span style="color: #008000"&gt;// @constdefine SOCKS5 Proxy supported&lt;/span&gt;&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; UInt16 IDC_WAIT = 32514;&#xD;
    &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; UInt16 IDC_ARROW = 32512;&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; IntPtr m_hConnection = IntPtr.Zero;&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; ConnMgrStatus&#xD;
    {&#xD;
        AuthenticationFailed = 0x2b,&#xD;
        Connected = 0x10,&#xD;
        ConnectionCanceled = 0x22,&#xD;
        ConnectionDisabled = 0x23,&#xD;
        ConnectionFailed = 0x21,&#xD;
        ConnectionLinkFailed = 0x2a,&#xD;
        Disconnected = 0x20,&#xD;
        ExclusiveConflict = 40,&#xD;
        NoPathToDestination = 0x24,&#xD;
        NoPathWithProperty = 0x2c,&#xD;
        NoResources = 0x29,&#xD;
        PhoneOff = 0x27,&#xD;
        Suspended = 0x11,&#xD;
        Unknown = 0,&#xD;
        WaitingConnection = 0x40,&#xD;
        WaitingConnectionAbort = 0x81,&#xD;
        WaitingDisconnection = 0x80,&#xD;
        WaitingForNetwork = 0x42,&#xD;
        WaitingForPath = 0x25,&#xD;
        WaitingForPhone = 0x26,&#xD;
        WaitingForResource = 0x41&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnectionBLL()&#xD;
    {&#xD;
    }&#xD;
&#xD;
    ~ConnectionBLL()&#xD;
    {&#xD;
        ReleaseConnection();&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 开始连接&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Start()&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!_autoConnect)&#xD;
            {&#xD;
                _autoConnect = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                ThreadPool.QueueUserWorkItem(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WaitCallback(Connect));&#xD;
            }&#xD;
        }&#xD;
        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;&#xD;
        {&#xD;
        }&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 停止&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Stop()&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&#xD;
        {&#xD;
            _autoConnect = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ReleaseConnection();&#xD;
            _connectState = ConnectState.DisConnect;&#xD;
            _ConnectionBLL = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&#xD;
        }&#xD;
        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; { }&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 连接&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Connect(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; obj)&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AutoConnect)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; status = 0;&#xD;
            &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; result = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (m_hConnection != IntPtr.Zero)&#xD;
            {&#xD;
                result = WaitForConnected(10, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; status);&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!result)&#xD;
            {&#xD;
                _connectState = ConnectState.DisConnect;&#xD;
                &lt;span style="color: #008000"&gt;//枚举连接&lt;/span&gt;&#xD;
                List&amp;lt;CONNMGR_DESTINATION_INFO&amp;gt; lst = EnumConnDestinations();&#xD;
&#xD;
                &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = 0; i &amp;lt; lst.Count; i++)&#xD;
                {&#xD;
                    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; str = lst[i].Description;&#xD;
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (str.ToUpper().IndexOf(&amp;quot;&lt;span style="color: #8b0000"&gt;CMNET&lt;/span&gt;&amp;quot;) &amp;gt; -1 || str.ToUpper().IndexOf(&amp;quot;&lt;span style="color: #8b0000"&gt;CMWAP&lt;/span&gt;&amp;quot;) &amp;gt; -1)&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (EstablishConnection((&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt;)i))&#xD;
                        {&#xD;
                            _connectState = ConnectState.Connected;&#xD;
                            &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                        }&#xD;
                    }&#xD;
                }&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&#xD;
            {&#xD;
                _connectState = ConnectState.Connected;&#xD;
            }&#xD;
            Thread.Sleep(_interval);&#xD;
        }&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 枚举网络标识符信息&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;param name=&amp;quot;lstNetIdentifiers&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; List&amp;lt;CONNMGR_DESTINATION_INFO&amp;gt; EnumConnDestinations()&#xD;
    {&#xD;
        List&amp;lt;CONNMGR_DESTINATION_INFO&amp;gt; lstNetIdentifiers = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;CONNMGR_DESTINATION_INFO&amp;gt;();&#xD;
        &lt;span style="color: #008000"&gt;// 得到网络列表&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwEnumIndex = 0; ; dwEnumIndex++)&#xD;
        {&#xD;
            CONNMGR_DESTINATION_INFO networkDestInfo = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CONNMGR_DESTINATION_INFO();&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (ConnMgrEnumDestinations((&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)dwEnumIndex, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; networkDestInfo) != 0)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
            }&#xD;
            lstNetIdentifiers.Add(networkDestInfo);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; lstNetIdentifiers;&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 建立连接&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;param name=&amp;quot;nIndex&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; EstablishConnection(&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; nIndex)&#xD;
    {&#xD;
        ReleaseConnection();&#xD;
        &lt;span style="color: #008000"&gt;// 得到正确的连接信息&lt;/span&gt;&#xD;
        CONNMGR_DESTINATION_INFO DestInfo = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CONNMGR_DESTINATION_INFO();&#xD;
        &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; hResult = ConnMgrEnumDestinations((&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)nIndex, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; DestInfo);&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (hResult &amp;gt;= 0)&#xD;
        {&#xD;
            &lt;span style="color: #008000"&gt;// 初始化连接结构&lt;/span&gt;&#xD;
            CONNMGR_CONNECTIONINFO ConnInfo = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CONNMGR_CONNECTIONINFO();&#xD;
&#xD;
            ConnInfo.cbSize = (&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt;)Marshal.SizeOf(ConnInfo);&#xD;
            ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;&#xD;
            ConnInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_WAP | CONNMGR_FLAG_PROXY_SOCKS4 | CONNMGR_FLAG_PROXY_SOCKS5;&#xD;
            ConnInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;&#xD;
            ConnInfo.guidDestNet = DestInfo.DestID;&#xD;
            ConnInfo.bExclusive = 1;&#xD;
            ConnInfo.bDisabled = 0;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwStatus = 0;&#xD;
            hResult = ConnMgrEstablishConnectionSync(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; ConnInfo, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; m_hConnection, 10 * 1000, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; dwStatus);&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (hResult &amp;lt; 0)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
    }&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 连接状态&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;param name=&amp;quot;nTimeoutSec&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;param name=&amp;quot;pdwStatus&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; WaitForConnected(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; nTimeoutSec, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; pdwStatus)&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwStartTime = GetTickCount();&#xD;
        &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; bRet = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (GetTickCount() - dwStartTime &amp;lt; (&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt;)nTimeoutSec * 1000)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (m_hConnection.ToInt32() != 0)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwStatus = 0;&#xD;
                &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; hr = ConnMgrConnectionStatus(m_hConnection, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; dwStatus);&#xD;
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dwStatus != 0) pdwStatus = dwStatus;&#xD;
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (hr &amp;gt;= 0)&#xD;
                {&#xD;
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dwStatus == CONNMGR_STATUS_CONNECTED)&#xD;
                    {&#xD;
                        bRet = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                    }&#xD;
                }&#xD;
            }&#xD;
            Thread.Sleep(100);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; bRet;&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 释放所有连接&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ReleaseConnection()&#xD;
    {&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (m_hConnection.ToInt32() != 0)&#xD;
        {&#xD;
            ConnMgrReleaseConnection(m_hConnection, 0);&#xD;
            m_hConnection = IntPtr.Zero;&#xD;
        }&#xD;
    }&#xD;
&#xD;
    [StructLayout(LayoutKind.Sequential)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;struct&lt;/span&gt; CONNMGR_CONNECTIONINFO&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; cbSize;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwParams;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwFlags;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwPriority;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; bExclusive;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; bDisabled;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; GUID guidDestNet;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; IntPtr hWnd;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; uMsg;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; lParam;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; ulMaxCost;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; ulMinRcvBw;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; ulMaxConnLatency;&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 此结构的内容对应：注册表中：&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;struct&lt;/span&gt; CONNMGR_DESTINATION_INFO&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; GUID DestID;  &lt;span style="color: #008000"&gt;// @field GUID associated with network&lt;/span&gt;&#xD;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CONNMGR_MAX_DESC)]&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Description;  &lt;span style="color: #008000"&gt;// @field Description of network&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; Secure; &lt;span style="color: #008000"&gt;// @field Is it OK to allow multi-homing on the network&lt;/span&gt;&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;struct&lt;/span&gt; GUID&#xD;
    {          &lt;span style="color: #008000"&gt;// size is 16&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; Data1;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UInt16 Data2;&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UInt16 Data3;&#xD;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] Data4;&#xD;
    }&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;coredll.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; GetTickCount();&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;coredll.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; WaitForSingleObject(IntPtr hHandle, &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwMilliseconds);&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;cellcore.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrMapURL(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; pwszURL, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; GUID pguid, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; pdwIndex);&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;cellcore.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrEstablishConnectionSync(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; CONNMGR_CONNECTIONINFO ci, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; IntPtr phConnection, &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwTimeout, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; pdwStatus);&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;cellcore.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; IntPtr ConnMgrApiReadyEvent();&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;cellcore.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrReleaseConnection(IntPtr hConnection, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; bCache);&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;cellcore.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrEnumDestinations(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; nIndex, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; CONNMGR_DESTINATION_INFO pDestInfo);&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;cellcore.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrConnectionStatus(IntPtr hConnection,    &lt;span style="color: #008000"&gt;// @parm Handle to connection, returned from ConnMgrEstablishConnection&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; pdwStatus       &lt;span style="color: #008000"&gt;// @parm Returns current connection status, one of CONNMGR_STATUS_*&lt;/span&gt;&#xD;
        );&#xD;
&#xD;
    [DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;coredll.dll&lt;/span&gt;&amp;quot;)]&#xD;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CloseHandle(IntPtr hObject);&#xD;
}&#xD;
&#xD;
&lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
&lt;span style="color: #808080"&gt;/// 连接状态&lt;/span&gt;&#xD;
&lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; ConnectState&#xD;
{&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 断开&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    DisConnect = 0,&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// 已连接&lt;/span&gt;&#xD;
    &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
    Connected = 2&#xD;
}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;注意：为了加快连接速度，这里指定了连接移动的CMNET和CMWAP，可以根据需要修改，也可以不指定。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/2059672.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2011/05/27/2059672.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2011/01/25/1944333.html</id><title type="text">向Process传参数</title><summary type="text">摘要       有的时候，我们需要在一个进程启动另外一个进程，并传递一些参数过去。  正文      我们很容易会想到下面的代码：    然而你会发现，这样你根本得不到传递过来的参数，这也让我很是郁闷，后来才发现，原来传递过来的参数不在0位置，而在1位置，只要用下面的代码就可以得到：</summary><published>2011-01-25T02:28:00Z</published><updated>2011-01-25T02:28:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2011/01/25/1944333.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2011/01/25/1944333.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9804735c-af9e-4acd-8f63-739487f84be8" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 有的时候，我们需要在一个进程启动另外一个进程，并传递一些参数过去。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b796771e-c8b1-4912-99f2-8ed172810ae3" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 我们很容易会想到下面的代码：&lt;/p&gt;  &lt;div&gt;   &lt;pre&gt;ProcessStartInfo startInfo = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ProcessStartInfo();&#xD;
            startInfo.FileName = @&amp;quot;&lt;span style="color: #8b0000"&gt;d:\test.exe&lt;/span&gt;&amp;quot;;&#xD;
            startInfo.Arguments = &amp;quot;&lt;span style="color: #8b0000"&gt;sasasasasasasa&lt;/span&gt;&amp;quot;;&#xD;
            Process.Start(startInfo);&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; argument = Environment.GetCommandLineArgs()[0];&#xD;
            Application.EnableVisualStyles();&#xD;
            Application.SetCompatibleTextRenderingDefault(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&#xD;
            Application.Run(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Form1());&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;然而你会发现，这样你根本得不到传递过来的参数，这也让我很是郁闷，后来才发现，原来传递过来的参数不在0位置，而在1位置，只要用下面的代码就可以得到：&lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; argument = Environment.GetCommandLineArgs()[1];&#xD;
            Application.EnableVisualStyles();&#xD;
            Application.SetCompatibleTextRenderingDefault(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&#xD;
            Application.Run(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Form1());&lt;/pre&gt;&#xD;
&lt;/div&gt; &lt;img src="http://www.cnblogs.com/HOH/aggbug/1944333.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2011/01/25/1944333.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2011/01/05/1926131.html</id><title type="text">通过Windows Mobile连接管理器建立网络连接(转载)</title><summary type="text">原文 :http://www.cnblogs.com/Lisen/archive/2009/12/23/1630585.html   原文为Jim Wilson 的 Establishing Network Connectivity with the Windows Mobile Connection Manager。 概要 Summary      本文主要讲述在托管程序中怎样使用连接管理器建立...</summary><published>2011-01-05T03:08:00Z</published><updated>2011-01-05T03:08:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2011/01/05/1926131.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2011/01/05/1926131.html"/><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:430c3fe9-e416-4e48-95c3-29a189fea4c2" &gt;&lt;a href="http://technorati.com/tags/%e5%8e%9f%e6%96%87" rel="tag"&gt;原文&lt;/a&gt;&lt;/div&gt; :&lt;a href="http://www.cnblogs.com/Lisen/archive/2009/12/23/1630585.html"&gt;http://www.cnblogs.com/Lisen/archive/2009/12/23/1630585.html&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/prompt.gif" width="37" height="38" /&gt;&amp;#160; 原文为&lt;a href="http://www.pluralsight.com/community/blogs/jimw/"&gt;Jim Wilson&lt;/a&gt; 的 &lt;a href="http://msdn.microsoft.com/en-us/library/bb840031.aspx"&gt;Establishing Network Connectivity with the Windows Mobile Connection Manager&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;概要 Summary&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 本文主要讲述在托管程序中怎样使用连接管理器建立和释放网络连接。本文的重点是关于使用连接管理器建立和断开连接的概念，而不是如何封装连接管理器API。文章的目的在于涵盖概念使能够适用于任何连接管理器托管API。 &lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;适用 Applies to&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Mobile 6 Professional&lt;/p&gt;  &lt;p&gt;Windows Mobile 6 Standard&lt;/p&gt;  &lt;p&gt;Windows Mobile 6 Classic&lt;/p&gt;  &lt;p&gt;Windows Mobile 5.0 for Pocket PC Phone Edition&lt;/p&gt;  &lt;p&gt;Windows Mobile 5.0 for Smartphone&lt;/p&gt;  &lt;p&gt;Windows Mobile 5.0 for Pocket PC &lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;索引&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Introduction&lt;/p&gt;  &lt;p&gt;2. Accessing Connection Manager from Managed Code&lt;/p&gt;  &lt;p&gt;3. Establishing a Connection&lt;/p&gt;  &lt;p&gt;4. Conclusion &lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;介绍 Introduction&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 现代Windows Mobile设备包含了许多的网络连接选项，比如Wi-Fi和大量的cellular radios。而且，众所周知，所有Windows Mobile设备能够通过ActiveSync连接桌面计算机访问网络。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 所有这些网络选项提供不同的数据速度，并且，在任何时候，0、1或更多的网络连接可能都是可用的。当一个应用程序需要建立一个网络连接时，Windows Mobile提供了一个公共解决方案 —— 那就是连接管理器，而不必要求应用程序自己遍历所有可用的连接然后选择最合适的连接。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 就象名字表达的一样，连接管理器负责管理设备上所有的网络连接。当应用程序需要建立一个网络连接时，只需要简单的告诉连接管理器需要哪种连接（比如Internet），连接管理器自己会识别哪些连接可用、选择最佳连接并按照需要建立连接。连接管理器甚至可以在有相同连接需求的多个应用程序中共享一个连接。应用程序完全从细节中抽象出来并且无需考虑任何细节地使用连接。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 连接管理器功能强大并提供了大量不同的连接相关的性能。本文主要讲述怎样使用连接管理器建立一个网络连接并且在不需要的时候释放掉。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 虽然本文的例子直接p/invoke连接管理Native API，但是本文主要讲述关于使用连接管理建立和断开连接的概念，而不是如何封装连接管理器API。文章的目的在于涵盖概念使能够适用于任何连接管理器托管API。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;通过托管代码访问连接管理器 Accessing Connection Manager from Managed Code&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 连接管理器是Windows Mobile的基础部分，但是当前只以Native API的形式暴露。好消息是大多数API很简单并且能够通过.NET Compact Framework简单地访问。你需要定义一些枚举和结构，但大多数不必去定义，过程非常简单。&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;注意&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Microsoft Visual Studio 2008下.NET Compact Framework 3.5提供了连接管理器API的管理版本实现。即使你打算使用托管版本API，仍然鼓励你读完本文，因为无论是托管API还是P/Invoke本地API，他们的概念意义是一样的。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;【李森 - listen附：&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/fd46f61d-712c-44b7-b9c0-bdff10947366"&gt;Connection Manager wrapper&lt;/a&gt; 提及了：他本人向Jim Wilson 通过Email问及了Microsoft Visual Studio 2008下.NET Compact Framework 3.5 连接管理器的封装，Jim Wilson回答说微软放弃了添加连接管理器的封装，而Jim Wilson本人也多次要求微软方面删去本段，但是一直没有修改】&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right4.png" width="8" height="13" /&gt; 函数Connection Manager Functions&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Connection Manager API由11个函数组成，但是只需要使用其中的5个就能完成建立和释放网络连接的工作。在许多情况下，你的程序可能只要其中的2个函数就可以了。表1显示了这5个函数&lt;/p&gt;  &lt;p&gt;&lt;table style="border-bottom-style: none; border-right-style: none; border-collapse: collapse; border-top-style: none; border-left-style: none"  border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;         &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 182.6pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt" valign="top" width="243"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;函数&amp;#160;&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 519.65pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="693"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;描述&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 1"&gt;         &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 182.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="243"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;strong&gt;ConnMgrMapURL&lt;/strong&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 519.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="693"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;取回指定URL的网络标识(Internet or Work) 。&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 2"&gt;         &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 182.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="243"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;strong&gt;ConnMgrEstablishConnection&lt;/strong&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 519.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="693"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;为指定的网络标识选择和建立合适的连接。该方法直接返回，并不等待连接完整。使用ConnMgrConnectionStatus去判断网络状态。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 3"&gt;         &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 182.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="243"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;strong&gt;ConnMgrEstablishConnectionSync&lt;/strong&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 519.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="693"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;为指定的网络标识选择和建立合适的连接。该方法直到尝试连接完成了才返回。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 4"&gt;         &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 182.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="243"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;strong&gt;ConnMgrReleaseConnection&lt;/strong&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 519.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="693"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;释放指定连接，可能会关闭连接（并不保证一定关闭）。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;         &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 182.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="243"&gt;           &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;strong&gt;ConnMgrConnectionStatus&lt;/strong&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 519.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="693"&gt;           &lt;p &gt;取回指定连接的状态。 &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160; 表1 Connection Manager functions used to establish and release a network connection&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 要从 .NET Compact Framework程序中访问这5个函数，需要P/Invoke，如下： &lt;/p&gt;  &lt;div&gt;   &lt;pre&gt;[DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;CellCore.dll&lt;/span&gt;&amp;quot;)] &#xD;
&lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrMapURL(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; url, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; Guid networkGuid, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; passZero); &#xD;
[DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;CellCore.dll&lt;/span&gt;&amp;quot;)] &#xD;
&lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrEstablishConnection(ConnMgrConnectionInfo connectionInfo, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; IntPtr connectionHandle); &#xD;
[DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;CellCore.dll&lt;/span&gt;&amp;quot;)] &#xD;
&lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrEstablishConnectionSync(ConnMgrConnectionInfo connectionInfo, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; IntPtr connectionHandle, &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; dwTimeout, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; ConnMgrStatus dwStatus); &#xD;
[DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;CellCore.dll&lt;/span&gt;&amp;quot;)] &#xD;
&lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrReleaseConnection(IntPtr connectionHandle, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; cache); &#xD;
[DllImport(&amp;quot;&lt;span style="color: #8b0000"&gt;CellCore.dll&lt;/span&gt;&amp;quot;)] &#xD;
&lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ConnMgrConnectionStatus(IntPtr connectionHandle, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; ConnMgrStatus status); &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right4.png" width="8" height="13" /&gt; &lt;strong&gt;枚举和结构 &lt;/strong&gt;&lt;strong&gt;Connection Manager Enumerations and Structures&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 当使用连接管理器建立连接时，必须指定连接的特性。本地代码中需要使用&lt;strong&gt;CONNMGR_CONNECTIONINFO&lt;/strong&gt;和几组 #define 宏来指定连接的特性。为了使结构和.NET的特性相容，可以用托管的类来实现结构并命名为，比如&lt;strong&gt;ConnMgrConnectionInfo&lt;/strong&gt;。与其象.NET一样使用常量来定义宏，不如使用枚举来显式地定义每组相关的宏。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;注意&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160; 如果想查看所有连接管理器native声明，可参见%Program Files%\Windows Mobile 6 SDK\PocketPC\Include\Armv4i 下的connmgr.h头文件&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 有几个结构依赖于宏，因此首先要定义宏对应的枚举。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 第一个枚举对应CONNMGR_PARAM_* 宏集。这些值标识了结构中可用的标准字段，这些字段指定了请求连接中想要的特性。一个连接请求可以指定多个条件，因此，枚举声明应该包含Flags属性。通过表示Flags属性，可以对成员进行位或运算。 &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;[Flags] &#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; ConnMgrParam : &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; &#xD;
{ &#xD;
GuidDestNet = 0x1, &#xD;
MaxCost = 0x2, &#xD;
MinRcvBw = 0x4, &#xD;
MaxConnLatency = 0x8 &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 每个枚举变量就像结构中对应的字段一样拥有相同的名字。下面对于结构定义的讨论将满足每个字段的意义。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 下一个枚举对应CONNMGR_FLAG_PROXY_*宏。这些值指定代理服务器的类型，连接管理器使用该类型建立连接。就象&lt;strong&gt;ConnMgrParam&lt;/strong&gt;枚举一样，该声明包含Flags属性。 &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;[Flags] &#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; ConnMgrProxy : &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; &#xD;
{ &#xD;
NoProxy = 0x0, &#xD;
Http = 0x1, &#xD;
Wap = 0x2, &#xD;
Socks4 = 0x4, &#xD;
Socks5 = 0x8 &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 下面需要考虑的就是连接请求的优先级。连接管理器负责设备上的所有连接，并尝试服务尽量多连接请求。为了辅助连接管理器决定每个请求的顺序和重要性，每个请求必须指定优先级。连接管理器支持几个不同优先级水平，尽管如此，程序一般只使用几个值。下面的枚举声明显示了通常使用的值： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; ConnMgrPriority &#xD;
{ &#xD;
UserInteractive = 0x8000, &#xD;
HighPriorityBackground = 0x0200, &#xD;
LowPriorityBackground = 0x0008 &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;表2提供了每个优先级的描述：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;table style="border-bottom-style: none; border-right-style: none; border-collapse: collapse; border-top-style: none; border-left-style: none"  border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&#xD;
      &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 140.1pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt" valign="top" width="187"&gt;&#xD;
          &lt;p &gt;优先级&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 562.15pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="750"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;描述 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 1"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 140.1pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="187"&gt;&#xD;
          &lt;p &gt;UserInteractive&amp;#160; &lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 562.15pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="750"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;主动请求连接，用户接口等待连接。该优先级高于大多数其他优先级。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 2"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 140.1pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="187"&gt;&#xD;
          &lt;p &gt;HighPriorityBackground &lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 562.15pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="750"&gt;&#xD;
          &lt;p &gt;该请求为高优先级，但是应用程序在后台运行，因此并不影响用户接口。&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 140.1pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="187"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;LowPriorityBackground&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 562.15pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="750"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;该请求仅当更高优先级的程序已经使用了请求路径后才连接。使用该优先级，应用程序可能共享一个已经存在的连接而并不是建立一个新的连接。&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
    &lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160; 表2 Common Connection priorities&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 连接管理器支持了更多的枚举声明，connmgr.h中的CONNMGR_PRIORITY_*宏提供了完整的列表。 在表2中没有提及的优先级值，参考&lt;a href="http://msdn.microsoft.com/en-us/library/aa455862.aspx"&gt;Connection Manager Priority Constants&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 最后一个枚举是连接状态值。大多数状态值名称无需说明便能理解。对于每个状态值的描述，参见&lt;a href="http://msdn.microsoft.com/en-us/library/bb416274.aspx"&gt;Connection Manager Status Constants&lt;/a&gt;或者参见connmgr.h中的CONNMGR_STATUS_*宏。如下：&lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; ConnMgrStatus &#xD;
{ &#xD;
Unknown = 0x00, &#xD;
Connected = 0x10, &#xD;
Suspended = 0x11, &#xD;
Disconnected = 0x20, &#xD;
ConnectionFailed = 0x21, &#xD;
ConnectionCanceled = 0x22, &#xD;
ConnectionDisabled = 0x23, &#xD;
NoPathToDestination = 0x24, &#xD;
WaitingForPath = 0x25, &#xD;
WaitingForPhone = 0x26, &#xD;
PhoneOff = 0x27, &#xD;
ExclusiveConflict = 0x28, &#xD;
NoResources = 0x29, &#xD;
ConnectionLinkFailed = 0x2a, &#xD;
AuthenticationFailed = 0x2b, &#xD;
NoPathWithProperty = 0x2c, &#xD;
WaitingConnection = 0x40, &#xD;
WaitingForResource = 0x41, &#xD;
WaitingForNetwork = 0x42, &#xD;
WaitingDisconnection = 0x80, &#xD;
WaitingConnectionAbort = 0x81 &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 所有的枚举定义后，下面要做的就是理解连接请求结构体。可以使用结构或管理类来组织Native结构，一般，类比结构体更流畅，因为类允许提供默认构造函数和成员初始化。上面已经提过了，&lt;strong&gt;ConnMgrConnectionInfo&lt;/strong&gt;管理类代表&lt;strong&gt;CONNMGR_CONNECTIONINFO&lt;/strong&gt;，如下： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;[StructLayout(LayoutKind.Sequential)] &#xD;
&lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ConnMgrConnectionInfo &#xD;
{ &#xD;
Int32 cbSize;                          &lt;span style="color: #008000"&gt;// DWORD &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrParam dwParams = 0;      &lt;span style="color: #008000"&gt;// DWORD &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrProxy dwFlags = 0;       &lt;span style="color: #008000"&gt;// DWORD &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrPriority dwPriority = 0; &lt;span style="color: #008000"&gt;// DWORD &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Int32 bExclusive = 0;           &lt;span style="color: #008000"&gt;// BOOL &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Int32 bDisabled = 0;            &lt;span style="color: #008000"&gt;// BOOL &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Guid guidDestNet = Guid.Empty;  &lt;span style="color: #008000"&gt;// GUID &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; IntPtr hWnd = IntPtr.Zero;      &lt;span style="color: #008000"&gt;// HWND &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UInt32 uMsg = 0;                &lt;span style="color: #008000"&gt;// UINT &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Int32 lParam = 0;               &lt;span style="color: #008000"&gt;// LPARAM &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UInt32 ulMaxCost = 0;           &lt;span style="color: #008000"&gt;// ULONG &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UInt32 ulMinRcvBw = 0;          &lt;span style="color: #008000"&gt;// ULONG &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UInt32 ulMaxConnLatency = 0;    &lt;span style="color: #008000"&gt;// ULONG &lt;/span&gt;&#xD;
} ; &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 表3描述了各个字段的意义 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt"  border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&#xD;
      &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;字段&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;描述 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 1"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: verdana; font-size: 12px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px" &gt;cbSize&lt;/span&gt;&amp;#160;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;类的大小，按照字节计算 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 2"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;dwParams&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;连接管理器参数常量枚举值。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 3"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;dwFlags&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;连接请求的代理需求 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 4"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;dwPriority&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;连接请求的优先级 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 5"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;bExclusive &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;是否独占连接请求，非0值代表连接不能被其他程序共享 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 6"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;bDisabled &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;指定连接是否断开。非0值代表连接管理器决定连接是否进行，但并不真正执行连接。当连接管理器需要建立连接时，它会将连接状态设置为ConnMgrStatus.ConnectionDisabled。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 7"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;guidDestNet&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;目标GUID。如果该字段可用，那么dwParams字段必须包含ConnMgrParam.GuidDestNet值。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 8"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;hWnd &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;接受状态改变消息的窗口句柄，通常为MessageWindow派生类句柄。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 9"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;uMsg &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;当发送状态改变消息时，发送该消息到hWnd字段代表的窗口。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 10"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;lParam &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;发送给hWnd字段代表的窗口的状态改变消息中的值，该字段当且仅当hWnd字段被设置了一个可用窗口句柄时才可用。在消息中使用该参数包含应用程序指定的数据。&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 11"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;ulMaxCost&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;可接收的最大连接。如果dwParams字段包含 ConnMgrParam.MaxCost 属性，此字段才可用（大多数程序取消该字段）。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 12"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;ulMinRcvBw&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;可接收的最小带宽。如果dwParams字段包含 ConnMgrParam.MinRcvBw 属性，此字段才可用（大多数程序取消该字段）。 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 13; mso-yfti-lastrow: yes"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 104.65pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="140"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;ulMaxConnLatency&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 597.6pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="797"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;最大等待时间。如果dwParams字段包含 ConnMgrParam.MaxConnLatency 属性，此字段才可用（大多数程序取消该字段）。&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
    &lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;表3 ConnMgrConnectionInfo class members&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 为了简化ConnMgrConnectionInfo类的使用，该类定义了一组构造函数负责一些通用情况。第一个是默认构造函数，如下： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrConnectionInfo() &#xD;
{ &#xD;
cbSize = Marshal.SizeOf(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ConnMgrConnectionInfo)); &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 在给Connection Manager functions传递&lt;strong&gt;ConnMgrConnectionInfo&lt;/strong&gt;类参数时，需要指定ConnMgrConnectionInfo类的大小，因此构造函数自动存储&lt;strong&gt;cbSize&lt;/strong&gt;作为类的大小。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 虽然连接管理器类有许多成员，应用程序通常只需要设置目标GUID、优先级，如果需要，还要设置代理。如果包含目标GUDI，那么&lt;strong&gt;dwParams&lt;/strong&gt;字段必须要设置&lt;strong&gt;ConnMgrParam.GuidDestNet&lt;/strong&gt;值。如下：&lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrConnectionInfo(Guid destination, ConnMgrPriority priority, ConnMgrProxy proxy) &#xD;
    : &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;() &#xD;
{ &#xD;
guidDestNet = destination; &#xD;
dwParams = ConnMgrParam.GuidDestNet; &#xD;
dwPriority = priority; &#xD;
dwFlags = proxy; &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 方便起见，该类包含了2个其他的构造函数。第一个接受目标GUID和优先级，不需要代理。第二个参数接受目标GUID，并设置优先级为&lt;strong&gt;ConnMgrPriority.UserInteractive&lt;/strong&gt;，该优先级由程序用户接口等待。 &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrConnectionInfo(Guid destination, ConnMgrPriority priority) &#xD;
    : &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;(destination, priority, ConnMgrProxy.NoProxy) { } &#xD;
&#xD;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ConnMgrConnectionInfo(Guid destination) &#xD;
    : &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;(destination, ConnMgrPriority.UserInteractive) { } &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;建立连接 Establishing a Connection&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 使用Native方法，枚举和结构就可以通过连接管理器建立一个连接了。好消息是困难的工作已经做完了，使用连接管理器是非常容易的事情。建立实际的连接包括两步：确定网络目标标识和发送连接请求。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right4.png" width="8" height="13" /&gt; &lt;strong&gt;确定&lt;/strong&gt;&lt;strong&gt;目标网络标识&lt;/strong&gt; &lt;strong&gt;Determining a Network Destination Identifier&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 建立连接的第一步是标识你的程序是连接到Internet 还是单位网络（Work network）。每个网络目标有一个指定的GUID.Internet的GUID是436EF144-B4FB-4863-A041-8F905A62C572，单位网络（Work network）的GUID是A1182988-0D73-439e-87AD-2A5B369F808B。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 虽然我们都知道每个网络目标的GUID,但大多数程序并不直接使用这些GUID.相反，能够功过&lt;strong&gt;ConnMgrMapURL&lt;/strong&gt;函数确定合适的网络GUID.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 连接管理器压缩了逻辑来确定url请求哪个网络。因此，与其硬编码一个网络GUID，不如简单的传递一个目标url给&lt;strong&gt;ConnMgrMapURL&lt;/strong&gt;函数来返回一个合适的GUID。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;注意[说明，原文periods在此处翻译为：终结符。比如http:\\www.baidu.com，那么&amp;quot;.com&amp;quot;就是periods] &#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 连接管理器根据目标url中是否包含终结符决定请求Internet还是单位网络（Work network）。如果包含终结符，那么请求连接Internet；如果不包含则链接到单位网络（Work network）。如果你的公司在内部网络地址中使用终结符，那么你就必须把那些地址添加到工作URL异常列表中（Work URL exception list）。进入“Start - setting - connections”页面, 选择Connections图标，接着选择Advanced页面，最后选择Exceptions按钮，就可以添加那些URL到工作URL异常列表中了。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 下面的代码演示了使用ConnMgrMapURL去确定不同URL的目标GUID。&lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; url1 = &amp;quot;&lt;span style="color: #8b0000"&gt;http://msdn2.microsoft.com/en-us/netframework/bb495180.aspx&lt;/span&gt;&amp;quot;; &#xD;
&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; url2 = &amp;quot;&lt;span style="color: #8b0000"&gt;http://hedgydev02/test/default.aspx&lt;/span&gt;&amp;quot;; &#xD;
Guid destination1 = Guid.Empty; &#xD;
Guid destination2 = Guid.Empty; &#xD;
&#xD;
ConnMgrMapURL(url1, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; destination1, 0); &#xD;
ConnMgrMapURL(url2, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; destination2, 0); &#xD;
&#xD;
&lt;span style="color: #008000"&gt;// Write to debug window &lt;/span&gt;&#xD;
Debug.WriteLine(url1); &#xD;
Debug.WriteLine(destination1.ToString()); &#xD;
Debug.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;); &#xD;
Debug.WriteLine(url2); &#xD;
Debug.WriteLine(destination2.ToString()); &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 在上面例子中，有两个URL，第一个为Microsoft's MSDN网址，显然是在Internet上。另一个URL则指向内部网络上的某个电脑，因此是在单位网络（Work network）上。图一显示在运行上述代码后，Visual Studio输出窗口上显示的信息。就像看到的那样，Microsoft URL 返回Internet GUID (436EF144-B4FB-4863-A041-8F905A62C572)，而指向内部网的URL则返回Work GUID(A1182988-0D73-439e-87AD-2A5B369F808B)。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/DestNetworkIdentifiers4InternetURLandWorkURL.JPG" width="473" height="206" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;图一 The destination network identifiers for an Internet URL and a Work URL &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 多亏ConnMgrMapURL函数，这也许是你最后一次见到这些GUID了。以后，你只需让ConnMgrMapURL函数为你生成GUID即可。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right4.png" width="8" height="13" /&gt;&lt;strong&gt; 建立连接&lt;/strong&gt; &lt;strong&gt;Making the Connection &lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 在这里，只需使用合适的连接标准并且调用合适的连接管理器函数，你就可以创建一个ConnMgrConnectionInfo类实例了。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 当请求连接时，你只需调用&lt;strong&gt;ConnMgrEstablishConnectionSync&lt;/strong&gt;函数，该函数将保持阻塞直到连接过程完成；或者使用&lt;strong&gt;ConnMgrEstablishConnection&lt;/strong&gt;函数，该函数立即返回，调用线程无需等待连接过程完成。如果你的应用程序在后台运行，或者你在后台建立连接，可以使用&lt;strong&gt;ConnMgrEstablishConnectionSync&lt;/strong&gt;函数，因为当函数返回时你就能够知道是否成功地建立了连接。下面的代码演示了如何使用ConnMgrEstablishConnectionSync函数建立一个连接： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;IntPtr _connectionHandle = IntPtr.Zero; &lt;span style="color: #008000"&gt;// Class-level field &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; _syncConnectTimeout = 60000; &lt;span style="color: #008000"&gt;// 60 seconds &lt;/span&gt;&#xD;
&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DoConnect(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; url) &#xD;
{ &#xD;
Guid networkGuid = Guid.Empty; &#xD;
ConnMgrStatus status = ConnMgrStatus.Unknown; &#xD;
ConnMgrMapURL(url, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; networkGuid, 0); &#xD;
ConnMgrConnectionInfo info = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConnMgrConnectionInfo(networkGuid, ConnMgrPriority.HighPriorityBackground); &#xD;
ConnMgrEstablishConnectionSync(info, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; _connectionHandle, _syncConnectTimeOut, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; status); &#xD;
&#xD;
&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (status == ConnMgrStatus.Connected) &#xD;
Debug.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Connect Succeeded&lt;/span&gt;&amp;quot;); &#xD;
&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &#xD;
Debug.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Connect failed: &lt;/span&gt;&amp;quot; + status.ToString()); &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 注意，前面的代码给&lt;strong&gt;ConnMgrEstablishConnectionSync&lt;/strong&gt;函数传递了一个延时值。你应该提供一个足够大的延时值，因为，在建立连接时，尤其在一个很差的网络时，有时候要花上几十秒时间。如果函数因为时间到了而返回，相比于连接错误，此时的状态值为&lt;strong&gt;ConnMgrStatus.WaitingConnection&lt;/strong&gt;。当你取回&lt;strong&gt;ConnMgrStatus.WaitingConnection&lt;/strong&gt;状态值时，那么如果你提供了足够的延时值，连接就有可能成功。因此，你应该在尝试建立连接时给与足够的延时时间。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 为了测试前面的连接模式，我们使用Windows Mobile 6 Professional Device Emulator 和 Cellular Emulator。Cellular Emulator模拟cellular radio，给Device Emulator提供GPRS连接。开始前，你必须连接Device Emulator到Cellular Emulator，具体参照 &lt;a href="http://msdn.microsoft.com/en-us/library/bb630224.aspx"&gt;Cellular Emulator section&lt;/a&gt; 里的&lt;a href="http://msdn.microsoft.com/en-us/library/bb630224.aspx"&gt;Developer's Guide to the Arm&lt;/a&gt; 。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 你需要为模拟器定义GRPS连接，这和使用真实设备连接到服务网络的步骤一样。按照下面的步骤定义GPRS连接：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1. 在设备模拟器中 “Start - setting”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2. 在“setting”页面选择“Connections” 页面&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3. 点击“Connections”图标&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4. 然后，选择上面“My ISP”下的“Add a new modem connection”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5. 将连接命名为GPRS Internet。 该名字对连接行为并不起任何作用。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6. 从“Select a modem”下拉列表中选择“Cellular (GPRS) ”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7. 选择“Next”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8. 保持“Access point name”为空，选择Next&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 9. 保持本页面所有字段为空（User name, Password, Domain），选择“Finish”&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 现在就定义好了Internet GPRS连接。同样，定义一个单位网络（Work network）GPRS连接，和上面的一样，只需在第4步选择“My Work Network”下“Add a new modem connection”，接着在第5步将连接命名为“GPRS Work”即可。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;注意&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 之所以能将访问点（Access point）和登录信息设置为空，是因为我们通过Cellular Emulator连接GPRS。如果在真实设备上，你就需要将这些字段设置上信息了。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 运行之前的代码后，你就会在几秒后看到Cellular Emulator上“Data Channels”下面的列表有一行上显示有连接活动了。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/CellularEmulatorwithActiveGPRSConnection.JPG" width="442" height="405" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;图二 The Cellular Emulator with an active GPRS connection &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Cellular Emulator显示连接以后，ConnMgrEstablishConnectionSync函数就会立即返回了。你应该每次都检查返回状态以确定连接是否真的成功。一个成功的连接返回ConnMgrStatus.Connected状态。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;注意&amp;#160; 要关闭Cellular Emulator的连接，在“Network”下点击“Disconnect GPRS”按钮。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 因为&lt;strong&gt;ConnMgrEstablishConnectionSync&lt;/strong&gt;函数在连接进程完全完成以前一直在阻断进程，所以该连接并不适合在面向用户的程序主线程运行，否则将造成程序界面假死现象。为了避免这种情况，就要使用&lt;strong&gt;ConnMgrEstablishConnection&lt;/strong&gt;函数。ConnMgrEstablishConnection 函数并不等待连接完成就直接返回，它只是初始化连接。调用ConnMgrEstablishConnection函数和调用ConnMgrEstablishConnectionSync函数的操作非常相似，如下： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;Guid networkGuid = Guid.Empty; &#xD;
ConnMgrMapURL(url, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; networkGuid, 0); &#xD;
ConnMgrConnectionInfo info = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConnMgrConnectionInfo(networkGuid); &#xD;
ConnMgrEstablishConnection(info, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; _connectionHandle); &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 如上代码，&lt;strong&gt;ConnMgrEstablishConnection&lt;/strong&gt;函数只是初始化连接然后在连接管理器真正建立连接前就直接返回了。为了检测连接是否真的完成，应该使用&lt;strong&gt;SystemState&lt;/strong&gt;类和&lt;strong&gt;ConnMgrConnectionStatus&lt;/strong&gt;函数协同使用来监测。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 下面的代码显示了当连接数发生改变时，SystemState类如何通知应用程序： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;SystemState _connectionsCount; &#xD;
&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Form1_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e) &#xD;
{ &#xD;
_connectionsCount = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SystemState(SystemProperty.ConnectionsCount); &#xD;
_connectionsCount.Changed += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ChangeEventHandler(ConnectionsCount_Changed); &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 这段代码构造了_connectionsCount实例，并把它和&lt;strong&gt;ConnectionsCount&lt;/strong&gt;属性关联起来，将&lt;strong&gt;ConnectionsCount_Changed&lt;/strong&gt;方法和_connectionsCount.Changed事件关联起来。只要连接数量发生改变时，_connectionsCount实例就调用ConnectionsCount_Changed函数。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 一旦你知道活动连接的数量发生改变，你需要检测发生的改变是否是由于你请求的连接造成的。下面的代码描述了如何使用&lt;strong&gt;ConnMgrConnectionStatus&lt;/strong&gt;函数来决定连接数量的改变是否是由你之前通过&lt;strong&gt;ConnMgrEstablishConnection&lt;/strong&gt; 函数建立的连接引起的。 &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ConnectionsCount_Changed(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, ChangeEventArgs args) &#xD;
{ &#xD;
ConnMgrStatus status = ConnMgrStatus.Unknown; &#xD;
ConnMgrConnectionStatus(_connectionHandle, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; status); &#xD;
&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (status == ConnMgrStatus.Connected) &#xD;
    { &#xD;
&lt;span style="color: #008000"&gt;// Connection Established &lt;/span&gt;&#xD;
    } &#xD;
} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 通过上面的代码，当连接状态为&lt;strong&gt;ConnMgrStatus.Connected&lt;/strong&gt;时，你就知道你的连接已成准备好并可以使用了。必须要记住，系统在主线程里调用&lt;strong&gt;ConnectionsCount_Changed&lt;/strong&gt;方法，因此，你不能在该方法中执行任何长时间运行的任务。相反，你应该在后台线程执行任务或者使用异步方法，就像SqlCeReplication类中的BeginSynchronize方法一样。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 你可以使用Device Emulator和Cellular Emulator测试你的代码。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;注意&amp;#160;&amp;#160;&amp;#160; 有许多方法可以检测当前连接的状态。你可以在任何时间使用ConnMgrConnectionStatus 函数检测连接状态以确认连接没有遇到任何异常问题，这很必要。 你也可以创建MessageWindow派生类，并且将该类的窗口句柄赋值给ConnMgrConnectionInfo类的hWnd字段，这样，连接管理器每次都会在连接状态发生改变时给MessageWindow派生类发送一个消息。当然你也可以使用&lt;a href="http://msdn.microsoft.com/en-us/library/aa455875.aspx"&gt;ConnMgrRegisterForStatusNotification&lt;/a&gt; 函数（将MessageWindow派生类的窗口句柄传递给ConnMgrRegisterForStatusNotification函数的第二个参数，这样连接管理器在连接状态发生改变时也会给MessageWindow派生类发送一个消息）。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right4.png" width="8" height="13" /&gt; &lt;strong&gt;释放连接&lt;/strong&gt; &lt;strong&gt;Releasing the Connection &lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 释放连接的操作非常简单。大多数情况下，你只需要简单的给&lt;strong&gt;ConnMgrReleaseConnection&lt;/strong&gt;函数传递之前从ConnMgrEstablishConnectionSync或ConnMgrEstablishConnection 函数返回的连接句柄即可。ConnMgrReleaseConnection函数给连接管理器发送信号告诉它程序已经使用完连接，但是该函数并没有真正的关闭它。要理解什么时候连接才会真正的关闭，你需要理解ConnMgrReleaseConnection的&lt;strong&gt;lCache&lt;/strong&gt;参数以及连接管理器是如何管理连接缓存的。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right4.png" width="8" height="13" /&gt;&lt;strong&gt; 缓存连接&lt;/strong&gt; &lt;strong&gt;Caching the Connection&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 正如我们所知道的，建立连接会很消耗时间，为了避免在重复建立相同的连接上的花费，有时候在最后一个程序释放完连接以后，连接管理器还会继续维持该连接。这就是连接缓冲机制。应用程序能通过设置&lt;strong&gt;ConnMgrReleaseConnection &lt;/strong&gt;函数的&lt;strong&gt;lCache&lt;/strong&gt;参数来改变连接管理器缓冲一个连接的时间，但最终做决定的还是连接管理器。表4显示了lCache参数可能的值： &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt"  border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&#xD;
      &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 90.45pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt" valign="top" width="121"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;参数值 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 611.8pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="816"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;描述&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 1"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 90.45pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="121"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;0 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 611.8pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="816"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;不缓冲连接 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 2"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 90.45pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="121"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;1 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 611.8pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="816"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;默认的缓冲时间&amp;#160; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
&#xD;
      &lt;tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 90.45pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="121"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;大于 1 &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
&#xD;
        &lt;td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 611.8pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="816"&gt;&#xD;
          &lt;p &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;缓冲用户指定的时间，以秒为单位&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
        &lt;/td&gt;&#xD;
      &lt;/tr&gt;&#xD;
    &lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160; 表4 ConnMgrReleaseConnection cache parameter values&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 如表4所示，如果参数设置为0，那么连接管理器立即关闭连接。设置为1则缓冲默认的时间，如下： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #008000"&gt;// Release the connection and cache it for the default time period. &lt;/span&gt;&#xD;
ConnMgrReleaseConnection(_connectionHandle, 1); &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 默认的缓冲时间定义在[HKEY_LOCAL_MACHINE\Comm\ConnMgr\Planner\Settings]注册表下的某个键值中。默认缓冲时间依赖于连接是否以独占模式创建。&lt;strong&gt;CacheTime&lt;/strong&gt;键的值定义了非独占模式的默认缓冲时间，在大多数设备中被设置为600秒（10分钟）。对于独占模式，&lt;strong&gt;VPNCacheTime&lt;/strong&gt;键定义了缓冲时间，大多数设备中位60秒（1分钟）。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;注意&amp;#160;&amp;#160;&amp;#160; 独占连接只能被创建该连接的程序使用，而不能被其他程序使用。可以通过设置&lt;strong&gt;ConnMgrConnectionInfo.bExclusive&lt;/strong&gt;字段为非0值来设置独占模式。大多数情况下，可以通过设置连接为共享模式（非独占）来更高效的利用设备资源。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Windows Mobile 5.0以前，程序只能指定连接是否能够缓存。Windows Mobile 5.0和Windows Mobile 6以后，你能够指定连接管理器缓存连接的时间。而这些只需要简单给&lt;strong&gt;ConnMgrReleaseConnection&lt;/strong&gt;函数的&lt;strong&gt;lCache&lt;/strong&gt;参数设置想要的时间数，而不是设置为0或1。如下代码，设置缓冲时间为300秒（5分钟）。&lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;&lt;span style="color: #008000"&gt;// Release the connection and cache it for 5 minutes. &lt;/span&gt;&#xD;
ConnMgrReleaseConnection(_connectionHandle, 300); &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 应该时刻记住，应用程序给&lt;strong&gt;ConnMgrReleaseConnection&lt;/strong&gt;函数的&lt;strong&gt;lCache&lt;/strong&gt;参数传递值只是一个请求，而连接管理可以选择忽略该请求。大多数情况下连接管理器不会考虑你的缓冲请求，连接管理器会将连接保持更长的缓冲时间。比如，当通过Ethernet cable连接网络或设备通过ActiveSync连接到桌面网路，那么设备将会有一个持续的连接。象这些类型的连接，网络连接是由Ethernet cable或依托设备（cradled device）建立的，他们会一直保持连接直到物理设备断开了连接。连接管理器管理这些连接，但是实际上却不打开或关闭它们。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 另一种情况，连接管理器会在程序发送断开连接请求时保持更长的缓冲时间，那就是在维持该连接并不需要任何花费时。最普通的例子就是GPRS连接，GPRS radios并不消耗电源除非在进行数据传输时才会。而且，大多数情况下，移动运营商是根据连接的流量而不是连接时间来对GPRS收费的。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 你可以通过Cellular Emulator看到连接管理器缓冲GPRS连接的过程，此时要确保Device Emulator核Cellular Emulator时刻保持连接。如果Cellular Emulator仍然保持活动的连接，可以通过点击&lt;strong&gt;Network&lt;/strong&gt;页面下&lt;strong&gt;Disconnect GPRS&lt;/strong&gt;按钮来断开连接。现在，运行以下代码： &lt;/p&gt;&#xD;
&#xD;
&lt;div&gt;&#xD;
  &lt;pre&gt;Guid networkGuid = Guid.Empty; &#xD;
ConnMgrStatus status = ConnMgrStatus.Unknown; &#xD;
ConnMgrMapURL(url, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; networkGuid, 0); &#xD;
ConnMgrConnectionInfo info = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ConnMgrConnectionInfo(networkGuid, ConnMgrPriority.HighPriorityBackground); &#xD;
Debug.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Attempting Sync Connect&lt;/span&gt;&amp;quot;); &#xD;
ConnMgrEstablishConnectionSync(info, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; _connectionHandle, _syncConnectTimeOut, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; status); &#xD;
&#xD;
&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (status == ConnMgrStatus.Connected) &#xD;
ConnMgrReleaseConnection(_connectionHandle, 0); &#xD;
&lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &#xD;
Debug.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Connection failed: &lt;/span&gt;&amp;quot; + status.ToString()); &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;br /&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 代码先调用过&lt;strong&gt;ConnMgrEstablishConnectionSync &lt;/strong&gt;函数，然后紧接着调用&lt;strong&gt;ConnMgrReleaseConnection&lt;/strong&gt;函数。注意，我们给&lt;strong&gt;ConnMgrReleaseConnection&lt;/strong&gt;函数的&lt;strong&gt;Cache&lt;/strong&gt;参数传递0，来请求连接管理器立即关闭连接。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 运行该代码后，你会在Cellular Emulator发现，之前的连接和以前一样还是处于活动状态，你会发现连接根本就没终止。&lt;strong&gt;Time(s)&lt;/strong&gt;列的时间值一直保持增长，连接维持活动状态但是却不传输任何数据，而且，在真实设备中这并不会消耗任何电源。连接管理器忽略了断开请求中的不缓冲请求，而是继续连接而不消耗任何有效资源。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 这种连接类型有时被称作“suspend/resume”（挂起/恢复）连接，也就是，当不再使用连接时，连接仍然被保持，只是进入高效的挂起状态。GPRS连接一般会保持无限持续连接状态，直到连接管理器返回该连接给应用程序并使用它时才活动。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;结论 Conclusion &lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 连接管理器是Windows Mobile中最强大的因素之一，它压缩了管理连接的细节，自动选择最好的连接，甚至跨程序共享连接。它支持大量特性，有时这会吓到用户，但是，大多数程序不必关心连接管理器的扩展因素。只需使用其中几个函数就可以轻松的建立连接，而让连接管理器去处理内部的细节。 &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/jiantou_right5.png" width="8" height="13" /&gt; &lt;strong&gt;其他资源 See Also&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms849587.aspx"&gt;Connection Manager Reference&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb158495.aspx"&gt;Windows Mobile Cellular Emulator&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb158519.aspx"&gt;Windows Mobile Device Emulator&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lisen/%E5%B0%8F%E5%9B%BE%E6%A0%87/Prompt2.png" width="64" height="64" /&gt;翻译完了，有点累，呵呵！ 以上译文，如有错误，欢迎指出！&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;我将文章所有的代码添加到了下面的工程中，上面的文章在获取连接状态时使用的是SystemState，我在代码里做了添加。另外，我还添加了使用MessageWindow派生类来获取连接状态的方法，并将其窗口句柄传递给ConnMgrConnectionInfo类的hWnd字段。当然，如上所说，你也可以将窗口句柄传递给ConnMgrRegisterForStatusChangeNotification函数的第二个参数，也能达到同样的效果！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/1926131.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2011/01/05/1926131.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/11/08/1872095.html</id><title type="text">PDA开发系列：数据库的选择</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160;&amp;#160; 程序的最终运行环境是WINCE6.0，所以可以选择的数据库也相对比较的多，比方说：Access、SQLCE,当然还可以用XML来充当数据库，Access有个弊病，我想大家可能都知道，就是运行的时间一长，数据库文件会越来越大，尽管可以通过压缩的方式来释放掉，但是，这并不是一个好的选择；XML毕竟是个文本，效率不够高；SQLCE我不熟悉，在PD...</summary><published>2010-11-08T12:10:00Z</published><updated>2010-11-08T12:10:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/11/08/1872095.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/11/08/1872095.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b0083754-06b7-4b6b-80c8-7f7a6d8948b9" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 程序的最终运行环境是WINCE6.0，所以可以选择的数据库也相对比较的多，比方说：Access、SQLCE,当然还可以用XML来充当数据库，Access有个弊病，我想大家可能都知道，就是运行的时间一长，数据库文件会越来越大，尽管可以通过压缩的方式来释放掉，但是，这并不是一个好的选择；XML毕竟是个文本，效率不够高；SQLCE我不熟悉，在PDA上使用，好像还需要安装一些东西。我在这个项目中，选择的是SQLite数据库。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d516b308-8928-403b-8040-4040de63c5ed" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SQLite是一个十分小巧的数据库，安装使用都非常的简单。我将一一的介绍：&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;创建数据库&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;创建我们自己的数据库，我推荐大家用SQLite Developer来创建。打开SQLite Developer，选择&amp;#8220;数据库列表&amp;#8221;，右键选择&amp;#8220;创建数据库&amp;#8221;，打开&amp;#8220;创建数据库&amp;#8221;界面，在&amp;#8220;数据库&amp;#8221;中选择一个数据库文件存储的位置，在&amp;#8220;数据库别名&amp;#8221;中，输入数据库名字，这个名字就是我们在程序中用到的名字。然后&amp;#8220;确定&amp;#8221;，这样，一个SQLite数据库就创建完成了。要创建表，只需要在在左侧的树中，选择刚才创建的数据库，右键选择创建表就可以了。如下：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/PDA_ABD1/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/PDA_ABD1/image_thumb.png" width="176" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;连接数据库&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;在代码中连接SQLite数据库很简单，我们只需要添加对System.Data.SQLite.dll的引用，然后把SQLite.Interop.065.DLL放在运行目录下就可以了，然后就可以像操作我们属性的SQL Server一样去操作SQLite数据库。但是，在连接字符串的书写上，我们需要注意。我们需要给出绝对路径。如下面的写法：Data Source=\Userdata\ZFB.db3；通常，我们的数据库文件都是放在主程序所在文件夹下面，这就要求我们能够得到程序的启动路径，在wince6.0中，微软没有直接为我们提供获取程序启动路径的方法，这就要求我们自己去实现，我是这样获取的：&lt;/p&gt;  &lt;pre &gt;private static string _startPath = string.Empty;&#xD;
&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 获取应用程序启动的路径&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public static string StartPath&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (string.IsNullOrEmpty(_startPath))&#xD;
                {&#xD;
                    _startPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);&#xD;
                }&#xD;
                return _startPath;&#xD;
            }&#xD;
        }&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;在这里，还有一点需要注意，我们再操作SQLite数据库的时候，如果程序没有找到SQLite数据库的时候，程序不会报&amp;#8220;连接数据库失败&amp;#8221;，他会在对应的文件夹下面自动创建一个数据库文件，当我们进一步去访问表的时候，就会报类似于&amp;#8220;没有找到表&amp;#8221;的错误，所以，在编程过程中，如果遇到&amp;#8220;没有找到表&amp;#8221;的错误，就应该去检查一下，路径下面是否有SQLite数据库文件。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;相关下载：&lt;a href="http://files.cnblogs.com/HOH/SQLite.rar"&gt;SQLite.rar&lt;/a&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/HOH/aggbug/1872095.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/11/08/1872095.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/11/08/1872033.html</id><title type="text">PDA开发系列：GPS模块的调用</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160;&amp;#160; 在wince6.0中，要调用GPS模块，其实是一件很容易的事情。  正文  &amp;#160;&amp;#160;&amp;#160; 在wince6.0中，如果要调用GPS模块，其实很简单，微软已经为我们做好了这一切，我们只需要在自己的解决方案中，添加对Microsoft.WindowsMobile.Samples.Location.dll的引用就可以了，然后...</summary><published>2010-11-08T11:26:00Z</published><updated>2010-11-08T11:26:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/11/08/1872033.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/11/08/1872033.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a061fc43-df26-43ca-bdfb-7275d1f96c16" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在wince6.0中，要调用GPS模块，其实是一件很容易的事情。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eee69bb5-6cfa-4bba-a82b-752de84ebdcd" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 在wince6.0中，如果要调用GPS模块，其实很简单，微软已经为我们做好了这一切，我们只需要在自己的解决方案中，添加对Microsoft.WindowsMobile.Samples.Location.dll的引用就可以了，然后获取一个GPS的实例，如下：&lt;/p&gt;  &lt;pre &gt;static Gps _Gps = null;&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 获取GPS设备&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public Gps GpsDevice&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_Gps == null)&#xD;
                {&#xD;
                    lock (typeof(Gps))&#xD;
                    {&#xD;
                        if (_Gps == null)&#xD;
                        {&#xD;
                            _Gps = new Gps();&#xD;
                        }&#xD;
                    }&#xD;
                }&#xD;
                return _Gps;&#xD;
            }&#xD;
        }&lt;/pre&gt;&#xD;
&#xD;
&lt;pre &gt;然后注册LocationChanged的事件，打开GPS设备就可以了，如下：&lt;/pre&gt;&#xD;
&#xD;
&lt;pre &gt;GpsDevice.LocationChanged += new LocationChangedEventHandler(GpsDevice_LocationChanged);&#xD;
&#xD;
        void GpsDevice_LocationChanged(object sender, LocationChangedEventArgs args)&#xD;
        {&#xD;
            try&#xD;
            {&#xD;
                if (PdaServer.PDAServer.IsRun &amp;amp;&amp;amp; PdaServer.PDAServer.GpsDevice.Opened)&#xD;
                {&#xD;
                    //经度&#xD;
                    double Longitude = args.Position.Longitude;&#xD;
                    //纬度&#xD;
                    double Latitude = args.Position.Latitude;&#xD;
                    if (Longitude &amp;gt; 0 &amp;amp;&amp;amp; Latitude &amp;gt; 0)&#xD;
                    {&#xD;
                        //上传GPS&#xD;
                    }&#xD;
                }&#xD;
            }&#xD;
            catch { }&#xD;
        }&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;其他相关的属性和方法见该dll。&lt;/font&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;相关下载：&lt;a href="http://files.cnblogs.com/HOH/Microsoft.WindowsMobile.Samples.Location.rar"&gt;Microsoft.WindowsMobile.Samples.Location.rar&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/HOH/aggbug/1872033.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/11/08/1872033.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/10/31/1865465.html</id><title type="text">PDA开发系列：连接管理器</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160;&amp;#160; Windows CE6中的连接管理器为我们管理各种网络提供了极大的便利，让我们不必去接触底层的驱动。 正文 ConnMgrApiReadyEvent 这个函数返回一个事件的句柄用来检查连接管理器的接口是否准备好 Syntax Parameters  Return Value  返回一个事件的句柄用来检查连接管理器的接口是否准备好，函数的调用...</summary><published>2010-10-30T18:11:00Z</published><updated>2010-10-30T18:11:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865465.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865465.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:293fd717-6b3c-4c41-b9c8-a0137ccc43ae" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Windows CE6中的连接管理器为我们管理各种网络提供了极大的便利，让我们不必去接触底层的驱动。&lt;/p&gt;  &lt;p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:743f09c4-7d63-4636-b879-ee8f28c75116" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;ConnMgrApiReadyEvent&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;这个函数返回一个事件的句柄用来检查连接管理器的接口是否准备好&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;    &lt;pre&gt;HANDLE WINAPI ConnMgrApiReadyEvent (&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&amp;#160;&amp;#160; void&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;返回一个事件的句柄用来检查连接管理器的接口是否准备好，函数的调用者负责在使用完后关闭该事件句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;这个函数提供了一个方法来检查连接管理器的接口是否准备好&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrConnectionStatus&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数返回指定连接的连接状态&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrConnectionStatus(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; HANDLE&amp;#160; &lt;i&gt;hConnection&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160; *&lt;i&gt;pdwStatus&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;); &lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;hConnection&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] &lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/fe82372c-6279-42ce-b60d-3b1a2354579e.htm"&gt;ConnMgrEstablishConnection&lt;/a&gt;返回的连接句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pdwStatus&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 返回指定连接的连接状态&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrEnumDestinations&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数枚举出所有可用的网络&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrEnumDestinations(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;Index&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; CONNMGR_DESTINATION_INFO *&lt;i&gt;pDestInfo&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;Index &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 网络的序号。如果要获得所有的可用网络信息，需要在第一次调用的时候初始化为0，后面每次调用加1，知道返回一个错误值&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pDestInfo &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 指向&lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/fbb7921e-9895-436e-b2dd-837b85cd3768.htm"&gt;CONNMGR_DESTINATION_INFO&lt;/a&gt;结构体，其包含枚举出来的信息&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrEstablishConnection&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数创建一个异步连接请求&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;HRESULT WINAPI ConnMgrEstablishConnection(&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;CONNMGR_CONNECTIONINFO *&lt;i&gt;pConnInfo&lt;/i&gt;,&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;HANDLE *&lt;i&gt;phConnection&lt;/i&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;);&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pConnInfo&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 指向结构体&lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/7813dfd9-0521-4610-9708-80edc2c895dd.htm"&gt;CONNMGR_CONNECTIONINFO&lt;/a&gt;，其中包含请求连接的相关参数&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;phConnection&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 一个指针指向一个连接的句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它的值表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;同一个时刻在手机中只能有一个连接，（彩信与Wifi、彩信与PC连接可以共存）&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrEstablishConnectionSync&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数创建一个同步的连接请求，直到连接成功或者失败后才返回&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;HRESULT WINAPI ConnMgrEstablishConnectionSync(&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;CONNMGR_CONNECTIONINFO *&lt;i&gt;pConnInfo&lt;/i&gt;,&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;HANDLE *&lt;i&gt;phConnection&lt;/i&gt;,&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;DWORD &lt;i&gt;dwTimeout&lt;/i&gt;,&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;DWORD *&lt;i&gt;pdwStatus&lt;/i&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;); &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pConnInfo&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 指向结构体&lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/7813dfd9-0521-4610-9708-80edc2c895dd.htm"&gt;CONNMGR_CONNECTIONINFO&lt;/a&gt;，其中包含请求连接的相关参数&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;phConnection&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 一个指针指向一个连接的句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;dwTimeout&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 连接超时的时间&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pdwStatus&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 返回最终的连接状态，pdwStatus是&lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/2d2bb9fe-88d6-4697-936b-dcfa1b5bb283.htm"&gt;Connection Manager Status Constants&lt;/a&gt;中的一个状态&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;同一个时刻在手机中只能有一个连接，（彩信与Wifi、彩信与PC连接可以共存）&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;dwTimeout参数不支持&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrMapConRef&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数映射连接信息到一个GUID&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrMapConRef(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; ConnMgrConRefTypeEnum &lt;i&gt;e&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; LPCTSTR&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;szConRef&lt;/i&gt;, &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; GUID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *&lt;i&gt;pGUID&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;e &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 连接的类型&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;szConRef &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 与连接相关的信息&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pGUID&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 返回一个连接的GUID&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;e 不支持&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrMapURL&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数返回一个可以到达指定URL的目的网络的GUID&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrMapURL(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; LPTSTR&amp;#160;&amp;#160; &lt;i&gt;pwszURL&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; GUID&amp;#160;&amp;#160;&amp;#160;&amp;#160; *&lt;i&gt;pguid&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160;&amp;#160; *&lt;i&gt;pdwIndex&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;); &lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pwszURL &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 指向一个要隐射的URL&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pguid &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[out] 目标网络的GUID&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pdwIndex&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 序号&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pdwIndex不支持&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrProviderMessage&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数从连接管理器中获得一些信息&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrProviderMessage(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; HANDLE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;hConnection&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; const GUID&amp;#160;&amp;#160;&amp;#160;&amp;#160; *&lt;i&gt;pguidProvider&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *&lt;i&gt;pdwIndex&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;dwMsg1&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;dwMsg2&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; PBYTE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;pParams&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; ULONG&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;cbParamSize&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;hConnection&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] &lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/fe82372c-6279-42ce-b60d-3b1a2354579e.htm"&gt;ConnMgrEstablishConnection&lt;/a&gt;返回的连接句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pguidProvider &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 只支持IID_ConnPrv_IProxyExtension&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pdwIndex&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 不支持&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;dwMsg1&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 不支持&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;dwMsg2&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 不支持&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pParams&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] [out] 获取信息的相应结构体&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;cbParamSize&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] pParams的大小&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;只支持获得代理信息&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrQueryDetailedStatus&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数用来查询连接管理器中所有连接的状态&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrQueryDetailedStatus(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; CONNMGR_CONNECTION_DETAILED_STATUS *&lt;i&gt;pStatusBuffer&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *&lt;i&gt;pcbBufferSize&lt;/i&gt; &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pStatusBuffer &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 指向&lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/2b795dd1-186e-4835-899b-6224d2418dcd.htm"&gt;CONNMGR_CONNECTION_DETAILED_STATUS&lt;/a&gt;结构的内存空间，用来保存查询的结果&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;pcbBufferSize &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in][out] pStatusBuffer 的大小&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;这个函数只返回所有的数据连接，不会返回声音连接&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrRegisterForStatusChangeNotification&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数释放注册一个窗体句柄，当连接状态有变化时发送窗体消息通知&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrRegisterForStatusChangeNotification(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; BOOL&amp;#160;&amp;#160; &lt;i&gt;fEnable&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; HWND&amp;#160;&amp;#160; &lt;i&gt;hWnd&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;fEnable &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 注册或者取消窗体消息通知&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;hWnd &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 需要接收消息的窗体句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;当有连接状态改变时，连接管理器通过窗体消息WM_CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG 通知应用，其值为(WM_USER+0x1501) &lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrReleaseConnection&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数释放一个指定的连接&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrReleaseConnection(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; HANDLE&amp;#160;&amp;#160; &lt;i&gt;hConnection&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; LONG&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;lCache&lt;/i&gt; &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;hConnection&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] &lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/fe82372c-6279-42ce-b60d-3b1a2354579e.htm"&gt;ConnMgrEstablishConnection&lt;/a&gt;返回的连接句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;lCache&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 在真正断网前的延时时间&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;lCache不支持&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;b&gt;ConnMgrSetConnectionPriority&lt;/b&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
  &lt;p&gt;这个函数修改指定连接的优先级&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;pre&gt;HRESULT WINAPI ConnMgrSetConnectionPriority(&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; HANDLE&amp;#160;&amp;#160; &lt;i&gt;hConnection&lt;/i&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160; DWORD&amp;#160;&amp;#160;&amp;#160; &lt;i&gt;dwPriority&lt;/i&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;); &lt;/pre&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;hConnection&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] &lt;a href="mk:@MSITStore:E:\Work\9030连接管理器\资料\WindowsMobile6_Documentation_Sept23.2008.chm::/html/fe82372c-6279-42ce-b60d-3b1a2354579e.htm"&gt;ConnMgrEstablishConnection&lt;/a&gt;返回的连接句柄&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;dwPriority &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;[in] 新的优先级&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Return Value&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;S_OK表示成功,其它表示失败&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;b&gt;Remarks&lt;/b&gt;&lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;（以上函数说明来源自网络）&lt;/p&gt;&#xD;
&#xD;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d4ff2323-3ca5-4a0e-a9ae-c63e6b7bd95e" &gt;&lt;a href="http://technorati.com/tags/%e5%90%8e%e7%bb%ad" rel="tag"&gt;后续&lt;/a&gt;&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 从下节开始，将逐个介绍函数的用法。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/1865465.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865465.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/10/31/1865459.html</id><title type="text">AutoIt学习系列：下载与安装</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160; AutoIt学习系列的文档将从此揭开序幕。首先，我们来装学习环境。  正文  &amp;#160;&amp;#160;&amp;#160; 要学习AutoIt，我们首先需要安装基本的运行环境。AutoIt的官方地址是http://www.autoitscript.com/，目前的最新版本是V3版。安装文件的下载地址是：http://www.autoitscript.com/c...</summary><published>2010-10-30T17:37:00Z</published><updated>2010-10-30T17:37:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865459.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865459.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a24bf0bd-075f-479d-a0a8-3801395a3b65" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; AutoIt学习系列的文档将从此揭开序幕。首先，我们来装学习环境。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0224fc24-cee8-496c-aaa6-3b2182ed55df" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 要学习AutoIt，我们首先需要安装基本的运行环境。AutoIt的官方地址是&lt;a title="http://www.autoitscript.com/" href="http://www.autoitscript.com/"&gt;http://www.autoitscript.com/&lt;/a&gt;，目前的最新版本是V3版。安装文件的下载地址是：&lt;a title="http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe" href="http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe"&gt;http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="QQ截图未命名" border="0" alt="QQ截图未命名" src="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_thumb.png" width="403" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;然后根据提示，一直下一步，直到安装结束。安装结束之后，在开始菜单中，将会看到如下新加项：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="QQ截图未命名" border="0" alt="QQ截图未命名" src="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_thumb_1.png" width="546" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;其中AutoIt Window Info是以个相当于VS安装目下的Spy++的程序，运行界面如下：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="QQ截图未命名" border="0" alt="QQ截图未命名" src="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_thumb_2.png" width="371" height="336" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;拖动Finder Tool，就是界面上的那个圆盘，可以得到指定窗口相关的信息。Run Script是用来运行我们编写的脚本的，SciTE Script Editor就是我们后面用得最多的脚本编辑器。界面如下：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="QQ截图未命名" border="0" alt="QQ截图未命名" src="http://images.cnblogs.com/cnblogs_com/HOH/WindowsLiveWriter/AutoIt_16D9/QQ%E6%88%AA%E5%9B%BE%E6%9C%AA%E5%91%BD%E5%90%8D_thumb_3.png" width="640" height="473" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;至此，AutoIt的下载和安装部分就介绍到这里。从下节开始，将进入主题。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/1865459.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865459.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/10/31/1865453.html</id><title type="text">AutoIt学习系列：目录</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160;&amp;#160; AutoIt是一个类似于QTP的自动化工具。他可以模拟键盘在特定文本区输入，也可以模拟鼠标的点击以及拖动窗口。本系列将以官方的帮助文档为依据，力争还原每一个实例。下载安装部分，我将简要介绍。  正文  &amp;#160;&amp;#160;&amp;#160;&amp;#160; AutoIt学习系列：下载与安装  &amp;#160;&amp;#160;&amp;#160;&amp;#160; Au...</summary><published>2010-10-30T17:07:00Z</published><updated>2010-10-30T17:07:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865453.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865453.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:20db8d99-c15c-44b3-876a-0f67e1fa8ce6" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AutoIt是一个类似于QTP的自动化工具。他可以模拟键盘在特定文本区输入，也可以模拟鼠标的点击以及拖动窗口。本系列将以官方的帮助文档为依据，力争还原每一个实例。下载安装部分，我将简要介绍。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8af0f218-c7ba-4ff6-bc3c-927201a520f7" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865459.html"&gt;AutoIt学习系列：下载与安装&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AutoIt学习系列：基本语法&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:98e54e1c-3c6a-4ea6-abc3-bc4ac61c52b3" &gt;&lt;a href="http://technorati.com/tags/%e5%90%8e%e7%bb%ad" rel="tag"&gt;后续&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 目录持续更新中。。。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/1865453.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/10/31/1865453.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/10/27/1862932.html</id><title type="text">PDA开发系列：BackgroundWorker</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160;&amp;#160; 在.net compact framework中，没有BackgroundWorker，应该会让我们这些用惯了BackgroundWorker的人感到非常的不便。BackgroundWorker可以非常方便解决线程和控件之间的互操作问题，做出界面运行非常流畅的引用程序。  正文  &amp;#160;&amp;#160;&amp;#160; 在反编译了.net f...</summary><published>2010-10-27T12:51:00Z</published><updated>2010-10-27T12:51:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/10/27/1862932.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/10/27/1862932.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:048ff8af-3072-4e18-bc2c-b458f37256f7" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在.net compact framework中，没有BackgroundWorker，应该会让我们这些用惯了BackgroundWorker的人感到非常的不便。BackgroundWorker可以非常方便解决线程和控件之间的互操作问题，做出界面运行非常流畅的引用程序。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5e8bb287-de30-4911-b4a3-dc69502bb4b3" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 在反编译了.net framework的BackgroundWorker后，发现基本上95%以上的代码都可以直接COPY过来，唯一存在问题的就是下面这段代码： &lt;/p&gt;  &lt;pre &gt;if (this.asyncOperation != null)&#xD;
        {&#xD;
            this.asyncOperation.Post(this.progressReporter, arg);&#xD;
        }&#xD;
        else&#xD;
        {&#xD;
            this.progressReporter(arg);&#xD;
        }&#xD;
&#xD;
这段代实际上要做的事情是这样的：如果执行该方法的线程和控件所在的线程不是同一个线程，就把该委托交给控件所在的线程去执行，否则就直接执行，为了实现这个操作，我做了如下的改动，在构造函数中，我这样写：&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;public BackgroundWorker() &#xD;
  &lt;br /&gt;{ &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.threadStart = new WorkerThreadStartDelegate(this.WorkerThreadStart); &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.operationCompleted = new SendOrPostCallback(this.AsyncOperationCompleted); &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.progressReporter = new SendOrPostCallback(this.ProgressReporter); &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;this.Handler = Thread.CurrentThread.ManagedThreadId; &#xD;
    &lt;br /&gt;&lt;/strong&gt;}&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;所以，上面的代码我做了如下的改写：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;if (Thread.CurrentThread.ManagedThreadId!= this.Handler) &#xD;
  &lt;br /&gt;{ &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Post(this.progressReporter, arg); &#xD;
&#xD;
  &lt;br /&gt;} &#xD;
&#xD;
  &lt;br /&gt;else &#xD;
&#xD;
  &lt;br /&gt;{ &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; this.progressReporter(arg); &#xD;
&#xD;
  &lt;br /&gt;}&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;Post方法的代码如下：&lt;/font&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;public virtual void Post(SendOrPostCallback d, object state) &#xD;
  &lt;br /&gt;{ &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (d != null &amp;amp;&amp;amp; controlToSendTo != null) &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; controlToSendTo.Invoke(d, state); &#xD;
&#xD;
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &#xD;
&#xD;
  &lt;br /&gt;}&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;controlToSendTo 是调用该BackgroundWorker得用户控件。该BackgroundWorker得所有代码是这样的：&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;using System;&#xD;
using System.Collections.Generic;&#xD;
using System.Text;&#xD;
using System.ComponentModel;&#xD;
using System.Threading;&#xD;
using System.Windows.Forms;&#xD;
&#xD;
namespace ZFB.PDA.Dao&#xD;
{&#xD;
    public class BackgroundWorker : Component&#xD;
    {&#xD;
        private bool canCancelWorker;&#xD;
        private bool cancellationPending;&#xD;
        private static readonly object doWorkKey = new object();&#xD;
        private bool isRunning;&#xD;
        private readonly SendOrPostCallback operationCompleted;&#xD;
        private static readonly object progressChangedKey = new object();&#xD;
        private readonly SendOrPostCallback progressReporter;&#xD;
        private static readonly object runWorkerCompletedKey = new object();&#xD;
        private readonly WorkerThreadStartDelegate threadStart;&#xD;
        private readonly int Handler = 0;&#xD;
        private Control controlToSendTo = null;&#xD;
&#xD;
&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 开始后台任务&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public event DoWorkEventHandler DoWork&#xD;
        {&#xD;
            add&#xD;
            {&#xD;
                base.Events.AddHandler(doWorkKey, value);&#xD;
            }&#xD;
            remove&#xD;
            {&#xD;
                base.Events.RemoveHandler(doWorkKey, value);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 后台任务执行的进度&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public event ProgressChangedEventHandler ProgressChanged&#xD;
        {&#xD;
            add&#xD;
            {&#xD;
                base.Events.AddHandler(progressChangedKey, value);&#xD;
            }&#xD;
            remove&#xD;
            {&#xD;
                base.Events.RemoveHandler(progressChangedKey, value);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        /// &amp;lt;summary&amp;gt;&#xD;
        /// 后台任务完成&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        public event RunWorkerCompletedEventHandler RunWorkerCompleted&#xD;
        {&#xD;
            add&#xD;
            {&#xD;
                base.Events.AddHandler(runWorkerCompletedKey, value);&#xD;
            }&#xD;
            remove&#xD;
            {&#xD;
                base.Events.RemoveHandler(runWorkerCompletedKey, value);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public BackgroundWorker()&#xD;
        {&#xD;
            this.threadStart = new WorkerThreadStartDelegate(this.WorkerThreadStart);&#xD;
            this.operationCompleted = new SendOrPostCallback(this.AsyncOperationCompleted);&#xD;
            this.progressReporter = new SendOrPostCallback(this.ProgressReporter);&#xD;
            this.Handler = Thread.CurrentThread.ManagedThreadId;&#xD;
        }&#xD;
&#xD;
        private void AsyncOperationCompleted(object arg)&#xD;
        {&#xD;
            this.isRunning = false;&#xD;
            this.cancellationPending = false;&#xD;
            this.OnRunWorkerCompleted((RunWorkerCompletedEventArgs)arg);&#xD;
        }&#xD;
&#xD;
        public void CancelAsync()&#xD;
        {&#xD;
            this.cancellationPending = true;&#xD;
        }&#xD;
&#xD;
        protected virtual void OnDoWork(DoWorkEventArgs e)&#xD;
        {&#xD;
            DoWorkEventHandler handler = (DoWorkEventHandler)base.Events[doWorkKey];&#xD;
            if (handler != null)&#xD;
            {&#xD;
                handler(this, e);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        protected virtual void OnProgressChanged(ProgressChangedEventArgs e)&#xD;
        {&#xD;
            ProgressChangedEventHandler handler = (ProgressChangedEventHandler)base.Events[progressChangedKey];&#xD;
            if (handler != null)&#xD;
            {&#xD;
                handler(this, e);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)&#xD;
        {&#xD;
            RunWorkerCompletedEventHandler handler = (RunWorkerCompletedEventHandler)base.Events[runWorkerCompletedKey];&#xD;
            if (handler != null)&#xD;
            {&#xD;
                handler(this, e);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        private void ProgressReporter(object arg)&#xD;
        {&#xD;
            this.OnProgressChanged((ProgressChangedEventArgs)arg);&#xD;
        }&#xD;
&#xD;
        public void ReportProgress(int percentProgress)&#xD;
        {&#xD;
            this.ReportProgress(percentProgress, null);&#xD;
        }&#xD;
&#xD;
        public void ReportProgress(int percentProgress, object userState)&#xD;
        {&#xD;
            ProgressChangedEventArgs arg = new ProgressChangedEventArgs(percentProgress, userState);&#xD;
            if (Thread.CurrentThread.ManagedThreadId!= this.Handler)&#xD;
            {&#xD;
                Post(this.progressReporter, arg);&#xD;
            }&#xD;
            else&#xD;
            {&#xD;
                this.progressReporter(arg);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public void RunWorkerAsync(Control ctl)&#xD;
        {&#xD;
            this.RunWorkerAsync(ctl,null);&#xD;
        }&#xD;
&#xD;
        public void RunWorkerAsync(Control ctl,object argument)&#xD;
        {&#xD;
            if (this.isRunning)&#xD;
            {&#xD;
                throw new InvalidOperationException(&amp;quot;BackgroundWorker_WorkerAlreadyRunning&amp;quot;);&#xD;
            }&#xD;
            if (ctl == null)&#xD;
            {&#xD;
                throw new Exception();&#xD;
            }&#xD;
            controlToSendTo = ctl;&#xD;
            this.isRunning = true;&#xD;
            this.cancellationPending = false;&#xD;
            this.threadStart.Invoke(argument);&#xD;
        }&#xD;
&#xD;
        private void WorkerThreadStart(object argument)&#xD;
        {&#xD;
            object result = null;&#xD;
            Exception error = null;&#xD;
            bool cancelled = false;&#xD;
            try&#xD;
            {&#xD;
                DoWorkEventArgs e = new DoWorkEventArgs(argument);&#xD;
                this.OnDoWork(e);&#xD;
                if (e.Cancel)&#xD;
                {&#xD;
                    cancelled = true;&#xD;
                }&#xD;
                else&#xD;
                {&#xD;
                    result = e.Result;&#xD;
                }&#xD;
            }&#xD;
            catch (Exception exception2)&#xD;
            {&#xD;
                error = exception2;&#xD;
            }&#xD;
            RunWorkerCompletedEventArgs arg = new RunWorkerCompletedEventArgs(result, error, cancelled);&#xD;
            if (Thread.CurrentThread.ManagedThreadId != this.Handler)&#xD;
            {&#xD;
                Post(this.operationCompleted, arg);&#xD;
            }&#xD;
            else&#xD;
            {&#xD;
                this.operationCompleted(arg);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public bool CancellationPending&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                return this.cancellationPending;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public bool IsBusy&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                return this.isRunning;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public bool WorkerSupportsCancellation&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                return this.canCancelWorker;&#xD;
            }&#xD;
            set&#xD;
            {&#xD;
                this.canCancelWorker = value;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public virtual void Post(SendOrPostCallback d, object state)&#xD;
        {&#xD;
            if (d != null &amp;amp;&amp;amp; controlToSendTo != null)&#xD;
            {&#xD;
                controlToSendTo.Invoke(d, state);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        private delegate void WorkerThreadStartDelegate(object argument);&#xD;
        public delegate void SendOrPostCallback(object state);&#xD;
    }&#xD;
&#xD;
}&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:adc43c0c-41a1-48de-be73-b1ed394c4fd6" &gt;&lt;a href="http://technorati.com/tags/%e5%90%8e%e7%bb%ad" rel="tag"&gt;后续&lt;/a&gt;&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 如果大家有更好的办法，希望大家给我留言。。。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;代码下载：&lt;a href="http://files.cnblogs.com/HOH/BackgroundWorker.rar"&gt;BackgroundWorker&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/1862932.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/10/27/1862932.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HOH/archive/2010/10/23/1859540.html</id><title type="text">PDA开发系列：Google地图接口</title><summary type="text">摘要  &amp;#160;&amp;#160;&amp;#160;&amp;#160; Google的地图接口，相信大家都不陌生，N多人都比我这个菜鸟熟悉得多，我就不班门弄斧了，在这里我只介绍在我们项目中用到的几个实现。  正文  &amp;#160;&amp;#160;&amp;#160;&amp;#160; 在我们的项目中，需求很简单，主要有以下几个方面：  &amp;#160;&amp;#160;&amp;#160;&amp;#160; 1.在地图上描点，显示已经标注过的点的名字。 ...</summary><published>2010-10-23T14:44:00Z</published><updated>2010-10-23T14:44:00Z</updated><author><name>HOH</name><uri>http://www.cnblogs.com/HOH/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HOH/archive/2010/10/23/1859540.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HOH/archive/2010/10/23/1859540.html"/><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bb6605b3-8ae9-4bab-a2b4-be4ce01131fd" &gt;&lt;a href="http://technorati.com/tags/%e6%91%98%e8%a6%81" rel="tag"&gt;摘要&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Google的地图接口，相信大家都不陌生，N多人都比我这个菜鸟熟悉得多，我就不班门弄斧了，在这里我只介绍在我们项目中用到的几个实现。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cd1d04e3-1a81-48d6-a797-1127196f9440" &gt;&lt;a href="http://technorati.com/tags/%e6%ad%a3%e6%96%87" rel="tag"&gt;正文&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在我们的项目中，需求很简单，主要有以下几个方面：&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1.在地图上描点，显示已经标注过的点的名字。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2.在地图上用不同的点显示在线人员的位置。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3.显示人员的移动轨迹。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 我们用的Google的地图API的V3版本，因为V2版本要根据网址生成不同的密钥，很麻烦，而V3就不需要。下面是实现的效果：&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;pre id="codeSnippet" &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;!DOCTYPE HTML PUBLIC &amp;quot;-&lt;span &gt;//W3C//DTD HTML 4.0 Transitional//EN&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;HTML&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;HEAD&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;title&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Google Maps&lt;span &gt;&amp;lt;&lt;/span&gt;/&lt;span &gt;title&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;link&lt;/span&gt; href=&amp;quot;http:&lt;span &gt;//code.google.com/apis/maps/documentation/javascript/examples/default.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;script&lt;/span&gt; type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http:&lt;span &gt;//maps.google.com/maps/api/js?sensor=true&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;script&lt;/span&gt; type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http:&lt;span &gt;//code.google.com/apis/gears/gears_init.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;SCRIPT type=text/javascript&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;window&lt;span &gt;.onload&lt;/span&gt;=function()&lt;br /&gt;{&lt;br /&gt;    &lt;span &gt;var&lt;/span&gt; myLatlng = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.LatLng&lt;/span&gt;(31.165598, 121.519861); &lt;br /&gt;    &lt;span &gt;var&lt;/span&gt; myOptions = {   zoom: 15,   &lt;span &gt;center&lt;/span&gt;: myLatlng,   mapTypeId: google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.MapTypeId&lt;/span&gt;&lt;span &gt;.ROADMAP&lt;/span&gt; };&lt;br /&gt;    &lt;span &gt;var&lt;/span&gt; &lt;span &gt;map&lt;/span&gt; = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.Map&lt;/span&gt;(document&lt;span &gt;.getElementById&lt;/span&gt;(&amp;quot;map_canvas&amp;quot;), myOptions);&lt;br /&gt;&lt;br /&gt;      &lt;span &gt;var&lt;/span&gt; marker = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.Marker&lt;/span&gt;({       &lt;span &gt;position&lt;/span&gt;: myLatlng,       &lt;span &gt;title&lt;/span&gt;:&amp;quot;白宫&amp;quot;   });        &lt;br /&gt;      marker&lt;span &gt;.setMap&lt;/span&gt;(&lt;span &gt;map&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;      &lt;span &gt;var&lt;/span&gt; flightPlanCoordinates = [     new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.LatLng&lt;/span&gt;(31.165598, 121.519861),     new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.LatLng&lt;/span&gt;(31.166598, 121.518861),     new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.LatLng&lt;/span&gt;(31.163598, 121.516861),     new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.LatLng&lt;/span&gt;(31.164598, 121.517861)   ];   &lt;span &gt;var&lt;/span&gt; flightPath = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.Polyline&lt;/span&gt;({     path: flightPlanCoordinates,     strokeColor: &amp;quot;green&amp;quot;,     strokeOpacity: 1.0,     strokeWeight: 5   });    flightPath&lt;span &gt;.setMap&lt;/span&gt;(&lt;span &gt;map&lt;/span&gt;); &lt;br /&gt;&lt;br /&gt;      &lt;span &gt;var&lt;/span&gt; contentString &lt;span &gt;= '白宫';&lt;/span&gt;  &lt;span &gt;var&lt;/span&gt; infowindow = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.InfoWindow&lt;/span&gt;({     &lt;span &gt;content&lt;/span&gt;: contentString });  &lt;br /&gt;      google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.event&lt;/span&gt;&lt;span &gt;.addListener&lt;/span&gt;(marker, 'click', function() {   infowindow&lt;span &gt;.open&lt;/span&gt;(&lt;span &gt;map&lt;/span&gt;,marker); });&lt;br /&gt;&lt;br /&gt;      &lt;span &gt;var&lt;/span&gt; image = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.MarkerImage&lt;/span&gt;(&amp;quot;http:&lt;span &gt;//files.cnblogs.com/HOH/User.ico&amp;quot;);&lt;/span&gt;&lt;br /&gt;      &lt;span &gt;var&lt;/span&gt; myLatLng = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.LatLng&lt;/span&gt;(31.165798, 121.517861); &lt;br /&gt;      &lt;span &gt;var&lt;/span&gt; beachMarker = new google&lt;span &gt;.maps&lt;/span&gt;&lt;span &gt;.Marker&lt;/span&gt;({&lt;span &gt;position&lt;/span&gt;: myLatLng,&lt;span &gt;map&lt;/span&gt;: &lt;span &gt;map&lt;/span&gt;,icon: image,&lt;span &gt;title&lt;/span&gt;:&amp;quot;奥巴马&amp;quot;   });&lt;br /&gt;}&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;/SCRIPT&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;/HEAD&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;BODY &lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;DIV &lt;span &gt;style&lt;/span&gt;=&amp;quot;WIDTH: &lt;span &gt;500;&lt;/span&gt; HEIGHT: 500&amp;quot; id=map_canvas&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;/DIV&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;/BODY&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;/HTML&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&#xD;
&#xD;
    &lt;br /&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;下面是运行的效果：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;div style="z-index: 0; position: relative; background-color: #e5e3df; width: 500px; height: 500px; overflow: hidden" id="map_canvas"&gt;&#xD;
  &lt;div style="z-index: 0; position: absolute; width: 100%; height: 100%; overflow: hidden; top: 0px; left: 0px" __e3_="[object Object]" handleTouch="false"&gt;&#xD;
    &lt;div style="z-index: 1; position: absolute; top: 0px; cursor: url(http://maps.gstatic.com/intl/zh_cn/mapfiles/openhand_8_8.cur), default; left: 0px" __e3_="[object Object]" handleTouch="true"&gt;&#xD;
      &lt;div style="z-index: 100; position: absolute; top: 0px; left: 0px" handletouch="true"&gt;&lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 101; position: absolute; top: 0px; left: 0px" handletouch="true"&gt;&#xD;
        &lt;div style="z-index: 1; position: absolute; top: 0px; left: 0px"&gt;&#xD;
          &lt;div style="z-index: 1; position: absolute; top: 0px; left: 0px"&gt;&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -32px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53582)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 224px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53583)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
              &lt;shape style="position: absolute; width: 1px; height: 1px; top: 128px; cursor: pointer; behavior: url(#default#VML); left: 128px" dir="ltr" gmdispatcher="[object Object]"&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/shape&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -32px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53582)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 224px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53583)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
              &lt;shape style="position: absolute; width: 1px; height: 1px; top: 128px; cursor: pointer; behavior: url(#default#VML); left: 128px" dir="ltr" gmdispatcher="[object Object]"&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/shape&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -32px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53582)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 224px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53583)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -288px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53581)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 480px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53584)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
              &lt;shape style="position: absolute; width: 1px; height: 1px; top: 128px; cursor: pointer; behavior: url(#default#VML); left: 128px" dir="ltr" gmdispatcher="[object Object]"&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/shape&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -288px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53581)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 480px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53584)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
              &lt;shape style="position: absolute; width: 1px; height: 1px; top: 128px; cursor: pointer; behavior: url(#default#VML); left: 128px" dir="ltr" gmdispatcher="[object Object]"&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/shape&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -32px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53582)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 224px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53583)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -288px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53581)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 480px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53584)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
              &lt;shape style="position: absolute; width: 1px; height: 1px; top: 128px; cursor: pointer; behavior: url(#default#VML); left: 128px" dir="ltr" gmdispatcher="[object Object]"&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/shape&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: -288px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53581)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; width: 256px; height: 256px; overflow: hidden; top: 480px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53584)"&gt;&#xD;
              &lt;div style="filter: alpha(opacity=1); background-color: #000000; width: 256px; height: 256px"&gt;&lt;/div&gt;&#xD;
            &lt;/div&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 102; position: absolute; top: 0px; left: 0px" handletouch="true"&gt;&#xD;
        &lt;div style="z-index: 503; position: absolute; width: 37px; height: 34px; overflow: hidden; top: 469px; left: 273px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: auto; padding-right: 0px; height: auto; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: -20px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/markers/marker_sprite.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/markers/marker_sprite.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 103; position: absolute; top: 0px; left: 0px" handletouch="false"&gt;&#xD;
        &lt;div style="z-index: 503; position: absolute; width: 20px; height: 34px; overflow: hidden; top: 469px; left: 273px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: auto; padding-right: 0px; height: auto; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/markers/marker_sprite.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/markers/marker_sprite.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="z-index: 481; position: absolute; width: 16px; height: 16px; overflow: hidden; top: 465px; left: 89px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: auto; padding-right: 0px; height: auto; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px; -khtml-user-drag: none" src="http://files.cnblogs.com/HOH/User.ico" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://files.cnblogs.com/HOH/User.ico" __ticket__="1" gm_id="" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 104; position: absolute; top: 0px; left: 0px" handletouch="true"&gt;&lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 105; position: absolute; top: 0px; left: 0px" handletouch="false"&gt;&#xD;
        &lt;div style="z-index: 503; position: absolute; filter: alpha(opacity=1); width: 20px; height: 34px; overflow: hidden; top: 469px; cursor: pointer; left: 273px" title="白宫" __e3_="[object Object]"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: auto; padding-right: 0px; height: auto; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/markers/marker_sprite.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/markers/marker_sprite.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="z-index: 481; position: absolute; filter: alpha(opacity=1); width: 16px; height: 16px; overflow: hidden; top: 465px; cursor: pointer; left: 89px" title="奥巴马" __e3_="[object Object]"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: auto; padding-right: 0px; height: auto; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px; -khtml-user-drag: none" src="http://files.cnblogs.com/HOH/User.ico" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://files.cnblogs.com/HOH/User.ico" __ticket__="1" gm_id="" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 106; position: absolute; top: 0px; left: 0px" handletouch="false"&gt;&lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 0; position: absolute; top: 0px; left: 0px"&gt;&#xD;
        &lt;div style="width: 500px; height: 500px; overflow: hidden" __e3_="[object Object]"&gt;&lt;img style="width: 500px; height: 500px" src="http://maps.googleapis.com/maps/api/js/StaticMapService.GetMapImage?1m2&amp;amp;1i28103405&amp;amp;2i13717024&amp;amp;2e1&amp;amp;3u17&amp;amp;4m2&amp;amp;1u500&amp;amp;2u500&amp;amp;5m3&amp;amp;1e0&amp;amp;2b1&amp;amp;5szh-CN&amp;amp;token=10633" width="500" height="500" ontouchstart="function Xc(a){a=a||l.event;Yc(a);Zc(a);return k}" ontouchmove="function Xc(a){a=a||l.event;Yc(a);Zc(a);return k}" ontouchend="function Xc(a){a=a||l.event;Yc(a);Zc(a);return k}" ontouchcancel="function Xc(a){a=a||l.event;Yc(a);Zc(a);return k}" /&gt;&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 1; position: absolute; top: 0px; left: 0px"&gt;&#xD;
        &lt;div style="z-index: 1; position: absolute; top: 0px; left: 0px"&gt;&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -32px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53582)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Galileo" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Galileo" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 224px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53583)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -32px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53582)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Ga" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Ga" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 224px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53583)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=Gal" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=Gal" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -32px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53582)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Gali" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Gali" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 224px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53583)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=Galil" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=Galil" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -288px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53581)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=Galile" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=Galile" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 480px; left: 19px" __e3_="[object Object]" b="[object Object]" $="(109779, 53584)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=G" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109779&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=G" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -288px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53581)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=G" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=G" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 480px; left: 275px" __e3_="[object Object]" b="[object Object]" $="(109780, 53584)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=Gali" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109780&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=Gali" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -32px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53582)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Galil" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53582&amp;amp;z=17&amp;amp;s=Galil" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 224px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53583)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=Galile" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53583&amp;amp;z=17&amp;amp;s=Galile" __ticket__="6" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -288px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53581)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=Gal" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=Gal" __ticket__="4" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 480px; left: -237px" __e3_="[object Object]" b="[object Object]" $="(109778, 53584)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=Galile" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt0.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109778&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=Galile" __ticket__="4" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: -288px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53581)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=Gali" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53581&amp;amp;z=17&amp;amp;s=Gali" __ticket__="4" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
          &lt;div style="position: absolute; width: 256px; height: 256px; top: 480px; left: 531px" __e3_="[object Object]" b="[object Object]" $="(109781, 53584)"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 256px; padding-right: 0px; height: 256px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px" src="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=Galileo" width="1" height="1" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://mt1.google.com/vt?lyrs=m@135&amp;amp;src=apiv3&amp;amp;hl=zh-CN&amp;amp;x=109781&amp;amp;s=&amp;amp;y=53584&amp;amp;z=17&amp;amp;s=Galileo" __ticket__="4" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
    &lt;/div&gt;&#xD;
&#xD;
    &lt;div style="z-index: 12; position: absolute; margin: 2px 5px 2px 2px; bottom: 0px; left: 0px" __e3_="[object Object]"&gt;&lt;a style="position: static; display: inline; float: none; overflow: visible" title="点击以在 Google 地图上查看此区域" href="http://maps.google.com/maps?ll=31.167921,121.519507&amp;amp;z=17&amp;amp;t=m" target="_blank"&gt;&#xD;
        &lt;div style="border-bottom: 0px; filter: progid:dximagetransform.microsoft.alphaimageloader(sizingmethod=&amp;quot;scale&amp;quot;, src=&amp;quot;http://maps.gstatic.com/intl/zh_cn/mapfiles/poweredby.png&amp;quot;); border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 62px; padding-right: 0px; height: 29px; overflow: hidden; border-top: 0px; cursor: pointer; border-right: 0px; padding-top: 0px" hidewhileloading="true" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/poweredby.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/poweredby.png"&gt;&#xD;
          &lt;div style="filter: alpha(opacity=1); background-color: white; width: 100%; height: 100%"&gt;&lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
      &lt;/a&gt;&lt;/div&gt;&#xD;
&#xD;
    &lt;div style="z-index: 1000; position: absolute; bottom: 0px; right: 0px" __e3_="[object Object]"&gt;&#xD;
      &lt;div style="position: static; text-align: right; padding-bottom: 2px; padding-left: 2px; padding-right: 2px; display: block; font-family: arial,sans-serif; direction: ltr; white-space: nowrap; float: none; color: black; font-size: 11px; overflow: visible; padding-top: 2px" __e3_="[object Object]" unselectable="on"&gt;&lt;span style="color: #000000"&gt;地图数据 ©2010 Mapabc&lt;/span&gt;&lt;span style="color: #000000"&gt; - &lt;/span&gt;&lt;a style="color: #7777cc" href="http://www.google.com/intl/zh-CN_US/help/terms_maps.html" target="_blank"&gt;使用条款&lt;/a&gt;&lt;/div&gt;&#xD;
    &lt;/div&gt;&#xD;
&#xD;
    &lt;div style="z-index: 11; position: absolute; text-align: center; margin: 5px; width: 269px; top: 0px; cursor: pointer; right: 0px" __e3_="[object Object]"&gt;&#xD;
      &lt;div style="border-bottom: black 1px solid; position: relative; border-left: black 1px solid; width: 66px; float: left; overflow: hidden; border-top: black 1px solid; border-right: black 1px solid" __e3_="[object Object]"&gt;&#xD;
        &lt;div style="border-bottom: #d0d0d0 1px solid; border-left: #707070 1px solid; background-color: white; font-family: arial,sans-serif; color: black; font-size: 12px; border-top: #707070 1px solid; font-weight: bold; border-right: #d0d0d0 1px solid" title="显示街道地图" __e3_="[object Object]" unselectable="on"&gt;地图&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="border-bottom: black 1px solid; position: relative; border-left: black 0px solid; width: 66px; float: left; overflow: hidden; border-top: black 1px solid; border-right: black 1px solid" __e3_="[object Object]"&gt;&#xD;
        &lt;div style="border-bottom: #707070 1px solid; border-left: #d0d0d0 1px solid; background-color: white; font-family: arial,sans-serif; color: black; font-size: 12px; border-top: #d0d0d0 1px solid; border-right: #707070 1px solid" title="显示卫星图像" __e3_="[object Object]" unselectable="on"&gt;卫星&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="border-bottom: black 1px solid; position: relative; border-left: black 0px solid; width: 66px; float: left; overflow: hidden; border-top: black 1px solid; border-right: black 1px solid" __e3_="[object Object]"&gt;&#xD;
        &lt;div style="border-bottom: #707070 1px solid; border-left: #d0d0d0 1px solid; background-color: white; font-family: arial,sans-serif; color: black; font-size: 12px; border-top: #d0d0d0 1px solid; border-right: #707070 1px solid" title="显示带有街道名称的图像" __e3_="[object Object]" unselectable="on"&gt;混合&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="border-bottom: black 1px solid; position: relative; border-left: black 0px solid; width: 66px; float: left; overflow: hidden; border-top: black 1px solid; border-right: black 1px solid" __e3_="[object Object]"&gt;&#xD;
        &lt;div style="border-bottom: #707070 1px solid; border-left: #d0d0d0 1px solid; background-color: white; font-family: arial,sans-serif; color: black; font-size: 12px; border-top: #d0d0d0 1px solid; border-right: #707070 1px solid" title="显示带地形的街道地图" __e3_="[object Object]" unselectable="on"&gt;地形&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
    &lt;/div&gt;&#xD;
&#xD;
    &lt;div style="z-index: 10; position: absolute; margin: 5px; top: 0px; left: 0px" __e3_="[object Object]" unselectable="on" controlWidth="78" controlHeight="341"&gt;&#xD;
      &lt;div style="position: absolute; width: 78px; height: 78px; top: 0px; cursor: url(http://maps.gstatic.com/intl/zh_cn/mapfiles/openhand_8_8.cur), default; left: 0px" __e3_="[object Object]" controlWidth="78" controlHeight="80"&gt;&#xD;
        &lt;div style="position: absolute; width: 78px; height: 78px; top: 0px; left: 0px" __e3_="[object Object]" controlWidth="78" controlHeight="80"&gt;&#xD;
          &lt;div style="visibility: hidden"&gt;&lt;group style="position: absolute; width: 78px; height: 78px; behavior: url(#default#VML); rotation: 0"&gt;&lt;oval style="width: 70px; height: 70px; top: -35px; behavior: url(#default#VML); left: -35px; z-index: 1"&gt;&lt;fill style="behavior: url(#default#VML)"&gt;&lt;/fill&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/oval&gt;&lt;roundrect style="width: 12px; height: 11px; top: -39px; behavior: url(#default#VML); left: -6px; z-index: 2"&gt;&lt;/roundrect&gt;&lt;polyline style="behavior: url(#default#VML); z-index: 3"&gt;&lt;stroke style="behavior: url(#default#VML)"&gt;&lt;/stroke&gt;&lt;/polyline&gt;&lt;/group&gt;&lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: absolute; top: 11px; left: 10px" __e3_="[object Object]" controlWidth="59" controlHeight="59"&gt;&#xD;
          &lt;div style="position: relative; width: 59px; height: 59px; overflow: hidden"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 59px; padding-right: 0px; height: 492px; border-top: 0px; top: 0px; border-right: 0px; padding-top: 0px; left: 0px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; filter: alpha(opacity=1); background-color: white; width: 19px; height: 19px; top: 19px; cursor: pointer; left: 0px" title="向左平移" __e3_="[object Object]"&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; filter: alpha(opacity=1); background-color: white; width: 19px; height: 19px; top: 19px; cursor: pointer; left: 39px" title="向右平移" __e3_="[object Object]"&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; filter: alpha(opacity=1); background-color: white; width: 19px; height: 19px; top: 0px; cursor: pointer; left: 19px" title="向上平移" __e3_="[object Object]"&gt;&lt;/div&gt;&#xD;
&#xD;
            &lt;div style="position: absolute; filter: alpha(opacity=1); background-color: white; width: 19px; height: 19px; top: 39px; cursor: pointer; left: 19px" title="向下平移" __e3_="[object Object]"&gt;&lt;/div&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="z-index: 10; position: absolute; margin: 0px; top: 85px; cursor: url(http://maps.gstatic.com/intl/zh_cn/mapfiles/openhand_8_8.cur), default; left: 23px" __e3_="[object Object]" controlWidth="32" controlHeight="38"&gt;&#xD;
        &lt;div style="position: absolute; width: 32px; height: 38px; visibility: hidden; overflow: hidden; top: 0px; left: 0px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 1029px; padding-right: 0px; height: 255px; border-top: 0px; top: -102px; border-right: 0px; padding-top: 0px; left: -9px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: absolute; width: 32px; height: 38px; overflow: hidden; top: 0px; left: 0px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 1029px; padding-right: 0px; height: 255px; border-top: 0px; top: -102px; border-right: 0px; padding-top: 0px; left: -107px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: absolute; width: 32px; height: 38px; visibility: hidden; overflow: hidden; top: 0px; left: 0px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 1029px; padding-right: 0px; height: 255px; border-top: 0px; top: -102px; border-right: 0px; padding-top: 0px; left: -58px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: absolute; width: 32px; height: 38px; visibility: hidden; overflow: hidden; top: 0px; left: 0px"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 1029px; padding-right: 0px; height: 255px; border-top: 0px; top: -102px; border-right: 0px; padding-top: 0px; left: -205px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/cb/mod_cb_scout/cb_scout_sprite_api_002.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
&#xD;
      &lt;div style="position: absolute; top: 128px; left: 27px" __e3_="[object Object]" controlWidth="24" controlHeight="213"&gt;&#xD;
        &lt;div style="position: relative; width: 24px; height: 22px; overflow: hidden; cursor: pointer" title="放大" __e3_="[object Object]"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 59px; padding-right: 0px; height: 492px; border-top: 0px; top: -65px; border-right: 0px; padding-top: 0px; left: -17px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: relative; width: 24px; height: 169px; overflow: hidden; cursor: pointer" title="点击以缩放" __e3_="[object Object]"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 59px; padding-right: 0px; height: 492px; border-top: 0px; top: -87px; border-right: 0px; padding-top: 0px; left: -17px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: relative; width: 24px; height: 22px; overflow: hidden; cursor: pointer" title="缩小" __e3_="[object Object]"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 59px; padding-right: 0px; height: 492px; border-top: 0px; top: -360px; border-right: 0px; padding-top: 0px; left: -17px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
&#xD;
        &lt;div style="position: absolute; width: 20px; height: 12px; overflow: hidden; top: 45px; cursor: url(http://maps.gstatic.com/intl/zh_cn/mapfiles/openhand_8_8.cur), default; left: 2px" title="拖动以缩放" __e3_="[object Object]"&gt;&lt;img style="border-bottom: 0px; position: absolute; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 59px; padding-right: 0px; height: 492px; border-top: 0px; top: -384px; border-right: 0px; padding-top: 0px; left: 0px; -khtml-user-drag: none" src="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" width="1" height="1" imagefetcheropts="[object Object]" __src__="http://maps.gstatic.com/intl/zh_cn/mapfiles/mapcontrols3d6.png" __ticket__="1" gm_id="null" unselectable="on" galleryImg="no" /&gt;&lt;/div&gt;&#xD;
      &lt;/div&gt;&#xD;
    &lt;/div&gt;&#xD;
  &lt;/div&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/HOH/aggbug/1859540.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HOH/archive/2010/10/23/1859540.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
