锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲图片在线观看,亚洲一区二区高清视频,欧美69视频http://m.shnenglu.com/yishanhante/category/3735.htmlzh-cnThu, 22 May 2008 12:10:48 GMTThu, 22 May 2008 12:10:48 GMT60浣跨敤Delphi寮鍙慖E鎸夐挳鎵╁睍 銆愯漿銆?/title><link>http://m.shnenglu.com/yishanhante/articles/19751.html</link><dc:creator>jay</dc:creator><author>jay</author><pubDate>Tue, 13 Mar 2007 07:19:00 GMT</pubDate><guid>http://m.shnenglu.com/yishanhante/articles/19751.html</guid><wfw:comment>http://m.shnenglu.com/yishanhante/comments/19751.html</wfw:comment><comments>http://m.shnenglu.com/yishanhante/articles/19751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/yishanhante/comments/commentRss/19751.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/yishanhante/services/trackbacks/19751.html</trackback:ping><description><![CDATA[ <strong>浠嬬粛</strong> <p> </p>闄や簡鍙互鍚慖E涓坊鍔犺嚜瀹氫箟鑿滃崟澶栵紝鎴戜滑榪樺彲浠ュ悜IE鐨勫伐鍏鋒潯涓婃坊鍔犺嚜瀹氫箟鐨勬寜閽傝嚜瀹氫箟鎸夐挳鍚岃嚜瀹氫箟鑿滃崟COM鎵╁睍鐨勫疄鐜板嚑涔庝竴鏍鳳紝 闄や簡鍦ㄦ敞鍐屾椂闇瑕佹坊鍔犵殑娉ㄥ唽琛ㄩ」涓嶅悓銆?娉ㄦ剰錛氬悓鑿滃崟鎵╁睍涓鏍鳳紝鑷畾涔夌殑鎸夐挳鎵╁睍涔熷繀欏?ins cite="mailto:Han%20Lei" datetime="2003-09-11T19:16">鏄?/ins>IE5鍙婁互鍚庣殑鐗堟湰鎵嶆敮鎸併? <p></p>聽 <p></p><b>鍒涘緩COM</b><b>緇勪歡</b><p></p>聽 <p></p>涓嬮潰鎴戜滑瑕佸垱寤虹殑IE宸ュ叿鏉℃寜閽紼嶅井澶嶆潅涓浜涳紝褰撶偣鍑繪椂錛屼笉鍐嶅彧鏄樉紺轟竴涓畝鍗曠殑瀵硅瘽妗嗕簡錛岃屾槸璁╁綋鍓嶆祻瑙堝櫒嫻忚鎴戠殑涓漢緗戠珯<a target="_blank"> http://hubdog.csdn.net</a>銆傚悓鍓嶄竴鑺備竴鏍鳳紝 棣栧厛鍒涘緩ActiveX Library錛屼繚瀛樹負IEButton.dpr錛岀劧鍚庡啀鏂板緩涓涓悕涓篢IEHomeButton鐨?COM Object錛屼繚瀛樺悜瀵肩敓鎴愮殑鏂囦歡涓篊IEButton.pas銆? <p></p>聽 <p></p>鍚屾牱鐨勬寜閽墿灞曚篃闇瑕佸疄鐜癐OleCommandTarget鎺ュ彛錛屽悓鏃朵負浜嗚兘澶?a name="baidusnap1"></a><b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>IE鐨勫姛鑳斤紝鑳?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>嫻忚鍣ㄦ祻瑙堟寚瀹氱殑緗戝潃錛屾垜浠繕闇瑕佸疄鐜?IObjectWithSite鎺ュ彛銆傚畬鎴愮殑綾葷殑瀹氫箟濡備笅錛? <p></p><code><b>type</b></code><pre></pre><code><b>聽 </b>TIEHomeButton = <b>class</b>(TComObject, IOleCommandTarget, IObjectWithSite)</code><pre></pre><code>聽 <b>private</b></code><pre></pre><code><b>聽聽聽 </b>ShellBrowser: IShellBrowser;</code><pre></pre><code>聽聽聽 IE:IWebBrowser;</code><pre></pre><code>聽 <b>protected</b></code><pre></pre><code><b>聽聽聽 </b><i>//IOleCommandTarget鎺ュ彛瀹氫箟</i></code><pre></pre><code><i>聽聽聽 </i><b>function </b>QueryStatus(CmdGroup: PGUID; cCmds: Cardinal;</code><pre></pre><code>聽聽聽聽聽 prgCmds: POleCmd; CmdText: POleCmdText): HResult; <b>stdcall</b>;</code><pre></pre><code>聽聽聽 <b>function </b>Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD;</code><pre></pre><code>聽聽聽聽聽 <b>const </b>vaIn: OleVariant; <b>var </b>vaOut: OleVariant): HResult; <b>stdcall</b>;</code><pre></pre><code>聽聽聽 <i>//IObjectWithSite</i><i>鎺ュ彛瀹氫箟</i></code><pre></pre><code><i>聽聽聽 </i><b>function </b>SetSite(<b>const </b>pUnkSite: IUnknown): HResult; <b>stdcall</b>;</code><pre></pre><code>聽聽聽 <b>function </b><a name="baidusnap0"></a><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">GetSite</b>(<b>const </b>riid: TIID; <b>out </b>site: IUnknown): HResult; <b>stdcall</b>;</code><pre></pre><code>聽 <b>end</b>;</code><pre></pre><code>聽</code><pre></pre>聽 <p></p>鍏朵腑IObjectWithSite鎺ュ彛鏈塖etSite鍜?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">GetSite</b>鏂規硶銆傚叾涓璉E浼氬湪絎竴嬈″姞杞藉伐鍏鋒潯鎸夐挳鎵╁睍鏃?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>SetSite錛屽皢嫻忚鍣ㄧ殑<br />IShellBrowser浣滀負pUnkSite鍙傛暟浼犻掕繘鏉ワ紝 鎴戜滑鍙互浠巔UnkSite鍙傛暟鑾峰緱IServiceProvider鎺ュ彛錛屽茍<b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>IServiceProvider鎺ュ彛鐨凲ueryService鑾峰緱嫻忚鍣ㄧ殑IWebBrower2鎺ュ彛錛岀劧鍚庡皢IE鐨勬帴鍙d繚瀛樿搗鏉ワ紝鍚?闈㈠湪鐐瑰嚮鎸夐挳鏃訛紝<br />鎴戜滑闇瑕?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>IWebBrowser2鎺ュ彛鐨凬avigate鏂規硶嫻忚鎴戠殑鍝堝反鐙楃殑灝忕獫緗戠珯銆? <p></p>聽 <p></p><code><b>function </b>TIEHomeButton.SetSite(<b>const </b>pUnkSite: IInterface): HResult;</code><pre></pre><code><b>var</b></code><pre></pre><code><b>聽 </b>Service:IServiceProvider;</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 </b>ShellBrowser := pUnkSite <b>as </b>IShellBrowser;</code><pre></pre><code>聽 Service:=ShellBrowser <b>as </b>IServiceProvider;</code><pre></pre><code>聽 Service.QueryService(IWebBrowserApp,IWebBrowser2, IE);</code><pre></pre><code>聽 Result := S_OK;</code><pre></pre><code><b>end</b>;</code><pre></pre>聽 <p></p>IE鍚屾椂榪樹細涓嶆椂鐨?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">GetSite</b>鏂規硶鏉ヤ粠鎴戜滑淇濆瓨鐨刾UnkSite鎺ュ彛鑾峰緱鎸囧畾鐨剅iid鐨勬帴鍙o紝 <p></p><code><b>function </b>TIEHomeButton.<b style="COLOR: black; BACKGROUND-COLOR: #ffff66">GetSite</b>(<b>const </b>riid: TIID;</code><pre></pre><code>聽 <b>out </b>site: IInterface): HResult;</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 if </b>Supports(ShellBrowser, riid, site) <b>then</b></code><pre></pre><code><b>聽聽聽 </b>Result := S_OK</code><pre></pre><code>聽 <b>else</b></code><pre></pre><code><b>聽聽聽 </b>Result := E_NOTIMPL;</code><pre></pre><code><b>end</b>;</code><pre></pre>聽 <p></p>濡傛灉pUnkSite鎸囬拡鏀寔璇ユ帴鍙o紝鍒欒繑鍥濻_OK錛屽惁鍒欒繑鍥濫_<font face="鏂板畫浣?><code> NOTIMPL</code><code>琛ㄧず涓嶆敮鎸佽鎺ュ彛銆?/code></font><p></p><font face="鏂板畫浣?><code>鏈鍚庯紝鎴戜滑闇瑕佸湪</code><code>IOleCommandTarget</code><code>鎺ュ彛涓疄鐜?/code><code>Exec</code><code>鏂規硶鏉ユ墽琛屾祻瑙堢綉绔欑殑鍔熻兘錛?/code></font>IWebBrowser2鎺ュ彛鐨凬avigate鏂規硶鍙互澶氫釜鍙傛暟錛?榪欓噷鎴戜滑鍙渶瑕佹寚瀹氳嫻忚鐨刄rl灝卞彲浠ヤ簡錛屽叾瀹冨弬鏁伴兘璁劇疆涓虹┖錛堜嬌鐢‥mptyParam棰勫畾涔夊鹼級銆? <p></p><code><b>function </b>TIEHomeButton.Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD;</code><pre></pre><code>聽 <b>const </b>vaIn: OleVariant; <b>var </b>vaOut: OleVariant): HResult;</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 </b>Result := S_OK;</code><pre></pre><code><i>聽 </i>IE.Navigate(<i>''http://hubdog.csdn.net''</i>, emptyParam,emptyParam,emptyParam,emptyParam);</code><pre></pre><code><b>end</b>;</code><pre></pre>聽 <p></p>娉ㄥ唽鎵╁睍 <p></p>聽 <p></p>瑕佹兂璁㊣E鑳藉鍦ㄥ惎鍔ㄥ悗姝g‘鏄劇ず鑷畾涔夌殑宸ュ叿鏉℃寜閽墿灞曪紝闇瑕佸湪娉ㄥ唽琛ㄤ腑濉啓涓浜涢厤緗俊鎭? <p></p>1.聽聽聽聽聽聽聽聽 棣栧厛瑕佸湪HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\欏圭洰涓嬫柊寤轟竴涓叧閿瓧錛屽悕涓烘墿灞曠殑Guid鐨勫瓧絎︿覆褰㈠紡銆? <p></p>2.聽聽聽聽聽聽聽聽 鐒跺悗鍦ㄦ柊寤虹殑HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\<鎵╁睍鐨凣uid>鍏抽敭瀛椾笅鍐嶅垱寤轟竴涓悕涓篊LSID 欏圭洰錛岃瀹氬間負{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}銆? <p></p>3.聽聽聽聽聽聽聽聽 鐒跺悗鍦℉KEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\<鎵╁睍Guid>鍏抽敭瀛椾笅娣誨姞鍚嶄負ClsidExtension鐨勫瓧孌碉紝榪欏洖鍊間負鎸夐挳鎵╁睍鐨凣uid鐨勫瓧絎︿覆褰㈠紡銆? <p></p>4.聽聽聽聽聽聽聽聽 榛樿鏃訛紝涓涓柊鍔犵殑鎵╁睍鎸夐挳涓嶄細椹笂鏄劇ず鍦ㄥ伐鍏鋒潯涓婏紝浣嗘槸鎴戜滑鍙互鍦℉KEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\<鎵╁睍Guid>鍏抽敭瀛椾笅娣誨姞Default Visible瀛楁錛屽茍璁懼畾鍏跺間負Yes錛岃繖鏍稩E鍚姩鏃朵細鑷姩鏄劇ず鎴戜滑娣誨姞鐨勬寜閽紝浣嗘槸瑕佹敞鎰忓鏋滅敤鎴峰湪娣誨姞鎸夐挳鍓嶄嬌鐢ㄤ簡宸ュ叿鏉?鍙抽敭鑿滃崟涓殑鑷畾涔夆﹀懡浠よ皟鏁磋繃宸ュ叿鏉℃寜閽殑鏄劇ず璁劇疆錛屽垯鎴戜滑鐨勬墿灞曟寜閽笉浼氳嚜鍔ㄥ嚭鐜頒簡錛屽繀欏繪槸閫氳繃鑷畾涔夊璇濇鏉ユ墜宸ユ坊鍔犳垨鑰?b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>閲嶇疆鎸夐挳鎭㈠榛樿璁劇疆鏉ユ樉紺烘坊鍔犵殑鎸夐挳錛岃涓嬪浘錛? <p></p><img height="184" src="http://delphi.sharpplus.com/Delphi/delphi_ie_button.files/image001.jpg" width="395" border="0" /><p></p>5.聽聽聽聽聽聽聽聽 姣忎釜鎸夐挳閮借鏈変竴涓樉紺哄瓧絎︿覆錛屽湪HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer<br />\Extensions\<鎵╁睍Guid>鍏抽敭瀛椾笅娣誨姞ButtonText欏圭洰錛岃瀹氬叾鍊間負鎸夐挳鐨勬爣棰樸傚悓鏃舵寜閽繕闇瑕佹寚瀹氫袱涓?br />鍥炬爣錛屼竴涓槸鐑偣鍥炬爣褰撻紶鏍囧仠鐣欏湪鎸夐挳涓婃椂鏄劇ず錛屼竴涓甯稿浘鏍囩敤浜庡鉤鏃舵樉紺恒傚浘鏍囩殑鏂囦歡鍜岃礬寰勯渶瑕佸啓鍒?br />HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\<鎵╁睍Guid>鍏抽敭瀛椾笅鐨凥otIcon鍜?br />Icon瀛楁涓紝鍊煎搴斾簬Ico鏂囦歡錛屾垨鑰呭彲鎵ц鏂囦歡涓殑鍥炬爣璧勬簮錛屽鏋滃浘鏍囨槸鍙墽琛屾枃浠剁殑璧勬簮錛岃繕闇瑕佹寚瀹?br />鍥炬爣璧勬簮绱㈠紩鍊箋傜粨鏋滅ず渚嬪涓嬶細<pre></pre>C:\PROGRA~1\AbcSoft\IEPlugin.dll,209鎴栬?c:\IE.ico <p></p><b>聽</b><pre></pre><b>鍒涘緩宸ュ叿鏉″浘鏍?/b><pre></pre>聽<pre></pre>宸ュ叿鏉¢渶瑕佺殑鍥炬爣鏂囦歡鏄湁涓瀹氳姹傜殑銆傞鍏堟槸灝哄瑕佹眰錛屾瘡涓寜閽兘闇瑕佹彁渚?0X20鍜?6X16涓儚绱犵殑鍥炬爣錛屽叾涓?br />20X20鐨勫ぇ鍥炬爣鐢ㄤ簬騫蟲椂鏄劇ず錛?16X16鐨勫浘鏍囨槸鐢ㄤ簬IE澶勪簬鍏ㄥ睆騫曟樉紺虹姸鎬佹椂鐨勭晫闈㈡樉紺猴紝瑙佷笅琛ㄧず渚嬶細 <p></p><div align="center"><table class="MsoNormalTable" cellpadding="0" border="0"><tbody><tr><td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt"><b>澶у皬錛堝儚绱狅級</b><p></p></td><td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt"><b>紺轟緥</b><p></p></td></tr><tr><td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">20x20 <p></p></td><td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt"><img height="16" src="http://delphi.sharpplus.com/Delphi/delphi_ie_button.files/image002.jpg" width="17" border="0" /><p></p></td></tr><tr><td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt">16x16 <p></p></td><td style="PADDING-RIGHT: 0.75pt; PADDING-LEFT: 0.75pt; PADDING-BOTTOM: 0.75pt; PADDING-TOP: 0.75pt"><img height="12" src="http://delphi.sharpplus.com/Delphi/delphi_ie_button.files/image003.jpg" width="13" border="0" /><p></p></td></tr></tbody></table></div>鍏舵鏈夐鑹蹭笂鐨勮姹傦紝褰撳浘鏍囧浜庣儹鐐圭姸鎬佹椂錛屾帹鑽愪嬌鐢ㄥ僵鑹插浘鏍囷紝鑰屽綋鍥炬爣涓烘甯告樉紺虹姸鎬佹椂錛屾帹鑽愯瀹欼con瀛楁<br />瀵瑰簲鐨勫浘鏍囦負鐏板害鍥炬爣銆?鍚屾椂寰蔣鎺ㄨ崘鎻愪緵鐨勫浘鏍囧嵆鏈?56鑹茬殑錛屼篃鏈?6鑹茬殑銆傝繖閲屼負浜嗙畝渚胯搗瑙侊紝鎴戝彧浣跨敤涓涓浘<br />鏍囩敤浜庣儹鐐瑰拰姝e父鏄劇ず銆? <p></p>鍥炬爣鐨勫垱寤哄彲浠ヤ嬌鐢ㄤ笓涓氱殑鍥炬爣璁捐鍣ㄦ潵鍒涘緩錛屼笉鎺ㄨ崘浣跨敤Delphi鑷甫鐨処mage Editor宸ュ叿錛屽洜涓篒mage Editor鍙兘<br />鍒涘緩16X16, 32X32澶у皬鐨勫浘鏍囷紝 涓嶈兘鍒涘緩20X20澶у皬鐨勫浘鏍囥傛垜涓鑸槸浣跨敤Icon Cool Editor鏉ュ垱寤哄浘鏍囥? <p></p>榪欏氨鏄垜鍒涘緩鐨?0X20鐨勫浘鏍?img height="16" src="http://delphi.sharpplus.com/Delphi/delphi_ie_button.files/image002.jpg" width="17" border="0" />錛屾妸瀹冧繚瀛樹負Home.ico,涓轟簡鑳藉皢鍥炬爣鏂囦歡緙栬瘧榪涙渶鍚庣敓鎴怌OM Server鐨凞ll鏂囦歡涓紝<br />緙栧啓涓涓祫婧愯剼鏈枃浠禜ome.rc: <p></p>1234聽聽聽聽聽聽 ICON聽聽 Home.ICO <p></p>娉ㄦ剰錛氳繖閲屾垜浣跨敤1234浣滀負鍥炬爣鐨勬爣璇嗚屼笉鏄嬌鐢ㄤ竴涓洿濂借鐨勬枃鏈覆姣斿Home<ins cite="mailto:Han%20Lei" datetime="2003-09-11T19:18">錛?/ins>鏄洜涓篒E鍙兘浣跨敤鏁板瓧鏍囪瘑鐨勫浘鏍?br />浣滀負鎸夐挳鐨勫浘鏍囥備嬌鐢╞rcc32 緙栬瘧Home.rc涓篐ome.res銆傛敞鎰忥紝鍦↖EButton.dpr涓凡緇忔湁浜?code>{$R *.RES}榪欏彞璇濊〃紺虹紪<br />璇慍OM Server鏃朵細灝嗘墍鏈夌殑璧勬簮鏂囦歡緙栬瘧榪涚敓鎴愮殑DLL涓?/code><pre></pre><code>聽</code><pre></pre><code><b>娉ㄥ唽榪囩▼</b></code><pre></pre>鎺ヤ笅鏉ユ槸緙栧啓鍚庣殑娉ㄥ唽浠g爜錛岄兘鏄竴浜涘娉ㄥ唽琛ㄧ殑鎿嶄綔,娉ㄦ剰鍒犻櫎鏃舵槸鏍規嵁Guid榪涜鍒犻櫎鐨勶紝鍥犱負Guid鏄敮涓鐨勫鹼細 <p></p><code><i>//娣誨姞宸ュ叿鏉℃寜閽?</i></code><pre></pre><code><b>procedure </b>AddToolbarBtn(Visible: Boolean; BtnText, HotIcon,</code><pre></pre><code>聽 Icon, Guid: <b>string</b>);</code><pre></pre><code><b>var</b></code><pre></pre><code><b>聽 </b>Reg: TRegistry;</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 </b>Reg := TRegistry.Create;</code><pre></pre><code>聽 <b>with </b>Reg <b>do</b></code><pre></pre><code><b>聽 try</b></code><pre></pre><code><b>聽聽聽 </b>RootKey := HKEY_LOCAL_MACHINE;</code><pre></pre><code>聽聽聽 OpenKey(<i>''\Software\Microsoft\Internet Explorer\Extensions\'' </i>+ Guid, True);</code><pre></pre><code>聽聽聽 <b>if </b>Visible <b>then</b></code><pre></pre><code><b>聽聽聽聽聽 </b>WriteString(<i>''Default Visible''</i>, <i>''Yes''</i>)</code><pre></pre><code>聽聽聽 <b>else</b></code><pre></pre><code><b>聽聽聽聽聽 </b>WriteString(<i>''Default Visible''</i>, <i>''No''</i>);</code><pre></pre><code>聽聽聽 WriteString(<i>''ButtonText''</i>, BtnText);</code><pre></pre><code>聽聽聽 WriteString(<i>''HotIcon''</i>, HotIcon);</code><pre></pre><code>聽聽聽 WriteString(<i>''Icon''</i>, Icon);</code><pre></pre><code>聽聽聽 WriteString(<i>''CLSID''</i>, <i>''{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}''</i>);</code><pre></pre><code>聽聽聽 WriteString(<i>''ClsidExtension''</i>, Guid);</code><pre></pre><code>聽聽聽 CloseKey;</code><pre></pre><code>聽 <b>finally</b></code><pre></pre><code><b>聽聽聽 </b>Free;</code><pre></pre><code>聽 <b>end</b>;</code><pre></pre><code><b>end</b>;</code><pre></pre><code>聽</code><pre></pre><code><i>//鎸塆uid鍒犻櫎鎸夐挳</i></code><pre></pre><code><b>procedure </b>RemoveToolbarBtn(Guid: <b>string</b>);</code><pre></pre><code><b>var</b></code><pre></pre><code><b>聽 </b>Reg: TRegistry;</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 </b>Reg := TRegistry.Create;</code><pre></pre><code>聽 <b>with </b>Reg <b>do</b></code><pre></pre><code><b>聽 begin</b></code><pre></pre><code><b>聽聽聽 </b>RootKey := HKEY_LOCAL_MACHINE;</code><pre></pre><code>聽聽聽 DeleteKey(<i>''\Software\Microsoft\Internet Explorer\Extensions\'' </i>+ Guid);</code><pre></pre><code>聽聽聽 free;</code><pre></pre><code>聽 <b>end</b>;</code><pre></pre><code><b>end</b>;</code><pre></pre>鐒跺悗緙栧啓COM緇勪歡宸ュ巶綾伙紝<b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>娉ㄥ唽鍜屽垹闄ゆ敞鍐岃〃欏圭殑鏂規硶鏉ュ疄鐜癈OM緇勪歡鐨勬敞鍐屽拰鍙嶆敞鍐岋細 <p></p><code><b>type</b></code><pre></pre><code><b>聽 </b>TIEHomeButtonFactory = <b>class</b>(TComObjectFactory)</code><pre></pre><code>聽 <b>public</b></code><pre></pre><code><b>聽聽聽 procedure </b>UpdateRegistry(<b>Register</b>: Boolean); <b>override</b>;</code><pre></pre><code>聽 <b>end</b>;</code><pre></pre><code>鈥?/code><pre></pre><code><b>function </b>GetDllName: <b>string</b>;</code><pre></pre><code><b>var</b></code><pre></pre><code><b>聽 </b>Buffer: <b>array</b>[0..261] <b>of </b>Char;</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 </b>GetModuleFileName(HInstance, Buffer, SizeOf(Buffer));</code><pre></pre><code>聽 Result := <b>string</b>(Buffer);</code><pre></pre><code><b>end</b>;</code><pre></pre><code>聽</code><pre></pre><code><b>procedure </b>TIEHomeButtonFactory.UpdateRegistry(<b>Register</b>: Boolean);</code><pre></pre><code><b>begin</b></code><pre></pre><code><b>聽 inherited</b>;</code><pre></pre><code>聽 <b>if Register then</b></code><pre></pre><code><b>聽聽聽 </b>AddToolbarBtn(true, <i>''HomeButton''</i>, GetDllName+<i>'',1234''</i>, GetDllName+<i>'',1234''</i>, GuidToString(classid))</code><pre></pre><code>聽 <b>else</b></code><pre></pre><code><b>聽聽聽 </b>RemoveToolbarBtn(GuidToString(classid));</code><pre></pre><code><b>end</b>;</code><pre></pre><font face="鏂板畫浣?><code>涓婇潰鐨?/code><code>GetDllName</code><code>鍑芥暟浼氳繑鍥炵紪璇戝悗鐨?/code><code>Dll</code><code>鍚嶇О錛屽湪</code><code>Dll</code><code>鍚嶇О鍔犱笂</code><code>'',1234''</code><code>琛ㄧず浣跨敤</code><code>Dll</code><code>涓爣璇嗕負</code><code>1234</code></font><font face="鏂板畫浣?><code>鐨勫浘鏍囦綔涓?br />鎸夐挳鍥炬爣錛岃繖閲屼負浜嗙畝渚胯搗瑙侊紝</code><code>HotIcon</code><code>鍜?/code><code>Icon</code><code>浣跨敤鐨勬槸鍚屼竴涓浘鏍囥?/code></font><p></p><font face="鏂板畫浣?><code>鑷蟲錛屾垜浠殑鎸夐挳鎵╁睍綆楁槸澶у姛鍛婃垚浜嗭紝娉ㄥ唽鎵╁睍鍚庯紝榪愯</code><code>IE</code><code>錛岀偣鍑繪垜浠殑鎸夐挳錛屾晥鏋滃涓嬶細</code></font><p></p><font face="鏂板畫浣?><img height="269" src="http://delphi.sharpplus.com/Delphi/delphi_ie_button.files/image004.jpg" width="504" border="0" /></font><pre></pre><font face="鏂板畫浣?></font>聽 <p></p><b>鎬葷粨</b><p></p>鏈妭涓垜浠富瑕佽璁轟簡濡備綍鍙互鍚屾墿灞曠殑瀹夸富IE嫻忚鍣ㄨ繘琛屼氦浜掞紝<b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>嫻忚鍣ㄧ殑鍔熻兘瀹屾垚鎴戜滑鐨勯渶瑕侊紝閫氳繃<b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璋冪敤</b>嫻忚鍣ㄧ殑鎺ュ彛鎴戜滑鍙互瀹炵幇涓浜涙洿鍔犲疄鐢ㄦ洿鍔犲鏉傜殑鍔熻兘錛屽悗闈㈡垜浠皢榪涗竴姝ユ帰璁ㄣ?img src ="http://m.shnenglu.com/yishanhante/aggbug/19751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/yishanhante/" target="_blank">jay</a> 2007-03-13 15:19 <a href="http://m.shnenglu.com/yishanhante/articles/19751.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Windows鍖哄璞?Bands)鐨勫垱寤轟笌瀹氬埗http://m.shnenglu.com/yishanhante/articles/19638.htmljayjayMon, 12 Mar 2007 08:07:00 GMThttp://m.shnenglu.com/yishanhante/articles/19638.htmlhttp://m.shnenglu.com/yishanhante/comments/19638.htmlhttp://m.shnenglu.com/yishanhante/articles/19638.html#Feedback0http://m.shnenglu.com/yishanhante/comments/commentRss/19638.htmlhttp://m.shnenglu.com/yishanhante/services/trackbacks/19638.html 嫻忚鏍忓尯瀵硅薄
嫻忚鏍忓尯瀵硅薄綆縐版祻瑙堟爮錛屽畠鏄粠IE4.0寮曞叆鐨勶紝瀹冩槸閭昏繎嫻忚鍣ㄧ獥鏍肩殑涓涓樉紺哄尯鍩熴傚疄闄呬笂瀹冩槸IE紿楀彛涓殑涓涓瓙紿楀彛錛屽彲浠ョ敤瀹冩潵鏄劇ず淇℃伅鍙婁笌鐢ㄦ埛浜や簰銆傛祻瑙堟爮鍗沖彲浠ユ槸浠ュ瀭鐩存柟寮忓畾浣嶅湪嫻忚鍣ㄧ獥鏍肩殑宸﹁竟銆備篃鍙互姘村鉤鏂瑰紡瀹氫綅鍦ㄦ祻瑙堝櫒紿楁牸涓嬮潰銆傦紙濡傚浘涓錛?

鍥句竴
鍦ㄦ祻瑙堟爮涓彲浠ュ垱寤哄緢澶氬瓙鑿滃崟鎴栭夐」錛岀敤鎴瘋兘浠ヤ笉鍚屾柟寮忛夋嫨榪欎簺瀛愯彍鍗曟垨閫夐」鎻愪緵鐨勫姛鑳斤紝鎵撳紑IE鎴栬呰祫婧愮鐞嗗櫒錛屼粠鈥滄煡鐪嬧濊彍鍗曚腑閫夋嫨鈥滄祻瑙堟爮鈥濓紝鍙互鐪嬪埌Windows鎻愪緵浜嗗嚑縐嶆爣鍑嗙殑嫻忚鏍忚彍鍗曪紝濡傗滄悳绱紙Search錛夆?鈥滄敹钘忓す錛團avorites錛夆濓紝 鍜屸滃巻鍙茶褰曪紙History錛夆?浠ュ強鈥滄枃浠跺す錛圓ll Folders錛夆濄傦紙濡傚浘浜岋級

鍥句簩
涓轟簡鍒涘緩瀹氬埗鐨勬祻瑙堟爮錛屽繀欏葷紪紼嬪疄鐜幫紝鐒跺悗娉ㄥ唽瀹冧滑銆俉indows鍦ㄥ澹籌紙Shell錛?.71涓紩鍏ヤ簡鍖哄璞°傚畠鎻愪緵涓庢櫘閫氱獥鍙d竴鏍風殑鍔熻兘銆備絾鍥犱負瀹冩槸浠E鎴栧澹充負瀹瑰櫒鐨凜OM瀵硅薄錛屾墍浠ュ疄鐜拌搗鏉ュ氨涓庢櫘閫氱獥鍙f湁鎵涓嶅悓銆傚浘涓涓樉紺虹殑灝辨槸涓涓畝鍗曠殑嫻忚鏍忎緥瀛愩傚浘涓湁涓涓瀭鐩寸殑嫻忚鏍忓拰涓涓按騫崇殑嫻忚鏍忋?br />
宸ュ叿鏍忓尯瀵硅薄
宸ュ叿鏍忓尯瀵硅薄綆縐板伐鍏鋒爮錛屽畠鏄湪IE5.0涓紩鍏ョ敤浠ユ敮鎸佸崟閫夊伐鍏鋒爮錛坮adio toolbar錛夌壒鎬х殑銆侷E宸ュ叿鏍忓疄闄呬笂鏄竴涓猂ebar鎺т歡錛屽畠鍖呭惈浜嗗嚑涓伐鍏鋒爮錛坱oolbar錛夋帶浠躲傞氳繃鍒涘緩宸ュ叿鏍忥紝浣犲彲浠ュ皢鏌愪釜鍖哄璞″姛鑳芥坊鍔犲埌Rebar鎺т歡涓備笉璁烘槸鍦↖E涓繕鏄湪璧勬簮綆$悊鍣ㄤ腑錛屽尯瀵硅薄閮芥槸涓鏍風殑錛屾墍浠ュ伐鍏鋒爮涔熸槸涓涓氱敤紿楀彛銆傦紙濡傚浘涓夛級

鍥句笁

鐢ㄦ埛鍙互浠庘滄煡鐪嬧濊彍鍗曚腑鐨勨滃伐鍏鋒爮鈥濆瓙鑿滃崟涓夋嫨鏄劇ず鍗曢夊伐鍏鋒爮錛屼篃鍙互鍦ㄥ伐鍏鋒爮鍖哄煙鍗曞嚮榧犳爣鍙抽敭浠庡畠鐨勪笂涓嬫枃鑿滃崟涓夋嫨鏄劇ず鍗曢夊伐鍏鋒爮銆?br />

鍥懼洓

妗岄潰鍖虹殑鍒濆嫻姩浣嶇疆鍦ㄤ換鍔℃爮錛氾紙濡傚浘浜?br />
鍥句簲

鐢ㄦ埛鍙互灝嗘闈㈠尯鎷栧埌妗岄潰涓婏紝榪欐椂瀹冨氨鎴愪簡涓涓櫘閫氱獥鍙o細錛堝鍥懼叚錛?br />
鍥懼叚
浜屻佸疄鐜板尯瀵硅薄
灝界鍙互鍍忎嬌鐢ㄦ櫘閫氱獥鍙d竴鏍蜂嬌鐢ㄥ尯瀵硅薄錛屼絾瀹冧滑姣曠珶鏄疌OM瀵硅薄錛屽瓨鍦ㄤ簬鏌愪釜瀹瑰櫒涔嬩腑銆傚嫻忚鏍忓拰宸ュ叿鏍忎綅浜嶪E涔嬩腑錛屾闈㈠尯浣嶄簬澶栧3涔嬩腑銆傝櫧鐒跺畠浠殑鍔熻兘涓嶅悓錛屼絾鍏跺熀鏈疄鐜伴潪甯哥浉浼箋備竴涓富瑕佺殑宸埆鏄畠浠殑娉ㄥ唽鏂瑰紡涓嶅悓錛岃屾敞鍐屾柟寮忕殑涓嶅悓鍙堝喅瀹氫簡瀵硅薄鐨勭被鍨嬪強鍏跺鍣ㄣ傝繖涓閮ㄥ垎鎴戜滑鍏堣璁烘墍鏈夊尯瀵硅薄瀹炵幇鐨勫叡鎬с傚叾瀹冪殑瀹炵幇緇嗚妭鍙弬鑰?a target="_self">鍨傜洿嫻忚鏍忎緥瀛愮▼搴?/a>銆?br />鍖哄璞¢櫎浜嗚瀹炵幇 IUnknown 鍜?IClassFactory 涓や釜鎺ュ彛涔嬪錛屾墍鏈夌殑鍖哄璞¤繕蹇呴』瀹炵幇浠ヤ笅榪欏嚑涓帴鍙o細
  • 聽IDeskBand聽
  • 聽IObjectWithSite聽
  • 聽IPersistStream
鍙﹀錛屽湪娉ㄥ唽鏃墮櫎浜嗘敞鍐屽畠浠殑CLSID涔嬪錛屾祻瑙堟爮鍜屾闈㈠尯瀵硅薄榪樺繀欏昏繘琛岀粍浠剁被鍒紙category錛夌殑娉ㄥ唽銆傚畠鍐沖畾浜嗗璞$殑綾誨瀷鍙婂叾瀹瑰櫒銆傚伐鍏鋒爮涓嶉渶瑕佽繘琛岀綾繪敞鍐屻傚綊綰寵搗鏉ワ紝闇瑕佽繘琛孋ATID娉ㄥ唽鐨勪笁縐嶅尯瀵硅薄鏄細
鍖哄璞$被鍨?/b>緇勪歡綾誨瀷
鍨傜洿嫻忚鏍?/td>CATID_InfoBand
姘村鉤嫻忚鏍?/td>CATID_CommBand
妗岄潰鍖?/td>CATID_DeskBand

瀵逛簬濡備綍娉ㄥ唽鍖哄璞$殑榪涗竴姝ヨ璁鴻鍙傝娉ㄥ唽閮ㄥ垎銆?br />濡傛灉鏌愪釜鍖哄璞℃帴鍙楃敤鎴瘋緭鍏ワ紝瀹冭繕蹇呴』瀹炵幇IInputObject鎺ュ彛銆傚鏋滆寰涓婁笅鏂囪彍鍗曚腑娣誨姞鑿滃崟欏圭洰錛岃繕蹇呴』瀹炵幇IContextMenu鎺ュ彛銆傛敞鎰忥細宸ュ叿鏍忓尯瀵硅薄涓嶆敮鎸佷笂涓嬫枃鑿滃崟銆?br />聽聽聽 鍥犱負鍖哄璞″疄鐜扮殑鏄瓙紿楀彛錛屾墍浠ュ畠浠繕蹇呴』鏈夌獥鍙h繃紼嬫潵澶勭悊Windows鐨勬秷鎭?br />聽聽聽 鍖哄璞″彲浠ラ氳繃鍏禝OleCommandTarget鎺ュ彛鍙戦佸懡浠ゅ埌瀹冪殑瀹瑰櫒銆備負浜嗗緱鍒拌繖涓帴鍙g殑鎸囬拡錛屽繀欏昏皟鐢ㄥ鍣ㄧ殑IInputObjectSite::QueryInterface鏂規硶鏉?/xxxxime>璇鋒眰IID_IoleCommandTarget銆傜劧鍚庣敤IOleCommandTarget::Exec鎶婂懡浠ゅ彂閫佸埌瀹瑰櫒銆傚懡浠ょ粍鏄疌GID_DeskBand銆傚綋鏌愪釜鍖哄璞$殑IDeskBand::GetBandInfo鏂規硶琚皟鐢ㄦ椂錛屽鍣ㄧ敤dwBandID鍙傛暟灝嗕竴涓爣紺虹璧嬬粰榪欎釜瀵硅薄銆傝繖涓爣紺虹琚敤浜嶪OleCommandTarget::Exec鏂規硶璋冪敤鏃舵墍鐢ㄥ懡浠ょ粍涓殑涓変釜鍛戒護銆傜洰鍓嶅懡浠ょ粍鍏辨敮鎸佸洓涓狪OleCommandTarget::Exec鍛戒護IDs銆傝繖鍥涗釜鍛戒護鐨勮В閲婂涓嬶細
DBID_BANDINFOCHANGED鈥斺擝and鐨勪俊鎭凡鏀瑰彉銆傚弬鏁皃vaIn鐨勫煎簲璇ユ槸鏈榪戜竴嬈¤皟鐢ㄦ墍鐢ㄧ殑band鏍囩ず絎︺傚鍣ㄥ皢璋冪敤榪欎釜鏍囩ず絎︽墍鎸囩殑band瀵硅薄鐨処DeskBand::GetBandInfo鏂規硶璇鋒眰鏇存柊鐨勪俊鎭?br />DBID_MAXIMIZEBAND鈥斺斿鍣ㄥ皢鏈澶у寲band銆傚弬鏁皃vaIn鐨勫煎簲璇ユ槸鏈榪戜竴嬈¤皟鐢ㄦ墍鐢ㄧ殑band鏍囩ず絎︺?br />DBID_SHOWONLY鈥斺斿叧闂垨鎵撳紑瀹瑰櫒涓叾瀹僢and銆傚弬鏁皃vaIn鐨勫間負VT_UNKNOWN綾誨瀷錛屽彲浠ュ彇涓嬪垪鍊間箣涓錛?br />
鍊?/td>鎻忚堪
pUnk榪欎釜瀵硅薄IUnknown鎺ュ彛鐨勬寚閽堛傛墍鏈夊叾瀹冪殑妗岄潰band灝嗚闅愯棌銆?/td>
0闅愯棌鎵鏈夋闈and銆?/td>
1鏄劇ず鎵鏈夋闈and銆?/td>
DBID_PUSHCHEVRON鈥斺旂洰鍓嶆病鏈夊疄鐜般?br />
娉ㄥ唽
鍖哄璞″繀欏諱綔涓鴻繘紼嬪唴鏈嶅姟鍣紙in-process錛夋敞鍐屻傚叾綰跨▼妯″瀷蹇呴』涓衡淎partment鈥濄備篃灝辨槸璇村尯瀵硅薄蹇呴』浠LL鐨勫艦寮忔潵瀹炵幇銆傜敤鏉ユ弿榪版湇鍔″櫒娉ㄥ唽鏉$洰鐨勭己鐪佸兼槸涓涓彍鍗曟枃鏈覆銆傚氨鎷挎祻瑙堟爮鏉ヨ銆傝繖涓彍鍗曞嚭鐜板湪璧勬簮綆$悊鍣ㄦ垨IE 鈥滄煡鐪嬶紙View錛夆濊彍鍗曠殑鈥滄祻瑙堟爮錛圗xplorer Bar錛夆濆瓙鑿滃崟涓傝屽伐鍏鋒爮鐨勮彍鍗曞垯鍑虹幇鍦ㄨ祫婧愮鐞嗗櫒鎴朓E 鈥滄煡鐪嬶紙View錛夆濊彍鍗曠殑鈥滃伐鍏鋒爮錛圱oolbars錛夆濆瓙鑿滃崟涓傛闈㈠尯鍑虹幇鍦ㄤ換鍔℃爮涓婁笅鏂囪彍鍗曠殑鈥滃伐鍏鋒爮錛圱oolbars錛夆濆瓙鑿滃崟涓備綔涓鴻彍鍗曡祫婧愶紝鎻愪緵閿洏蹇嵎鐨勬柟娉曚笌涓鑸彍鍗曞揩鎹烽敭鐩稿悓銆備篃灝辨槸灝嗏?amp;鈥濆瓧絎︽斁鍦ㄦ煇涓崟璇嶅瓧姣嶅墠琛ㄧず榪欎釜瀛楁瘝鏄劇ず涓嬪垝綰挎潵鎸囩ず蹇嵎閿?br />閫氬父鍖哄璞$殑娉ㄥ唽鏉$洰濡備笅:
HKEY_CLASSES_ROOT
...
    CLSID
	...
        {Band 瀵硅薄鐨?CLSID GUID} = "鑿滃崟鏂囨湰涓?
            InProcServer32 = "DLL 璺緞鍚?
                ThreadingModel = "Apartment"
宸ュ叿鏍忓尯瀵硅薄蹇呴』榪樿娉ㄥ唽瀵硅薄鐨凜LSID銆備負姝ゅ繀欏誨湪HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Toolbar涓嬪垱寤轟竴涓猂EG_SZ鍊鹼紝鐢ㄥ伐鍏鋒爮鍖哄璞$殑CLSID GUID涓插懡鍚嶃傚錛?br />
HKEY_LOCAL_MACHINE
    Software
        Microsoft
            Internet Explorer
                Toolbar
                    { Band 瀵硅薄鐨?CLSID GUID }

闄ゆ涔嬪錛岃繕鏈夊嚑涓彲閫夌殑娉ㄥ唽鍊煎彲浠ュ姞鍒版敞鍐岃〃涓紝鏈枃鐨勪緥瀛愪腑鏈嬌鐢ㄨ繖浜涘箋?
  • HKEY_CLASSES_ROOT\CLSID\{Band 瀵硅薄鐨?CLSID GUID}\Instance\CLSID, 瀹冨簲璇ヨ璁劇疆涓?"{4D5C8C2A-D075-11D0-B416-00C04FB90376}".聽
  • HKEY_CLASSES_ROOT\CLSID\{Band瀵硅薄鐨凜LSID GUID}\Instance\InitPropertyBag\Url 瀹冨簲璇ヨ璁劇疆涓鴻鍦ㄦ祻瑙堟爮鏄劇ず鐨勫寘鍚獺TML鍐呭鐨勬枃浠朵綅緗?br />
  • \HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Explorer Bars\{Band 瀵硅薄鐨?CLSID GUID}\BarSize 瀹冨簲璇ヨ璁劇疆涓烘爮鐩殑楂樺拰瀹斤紝瀹冮渶瑕佸叓涓瓧鑺傛墠鑳戒綔涓轟覆鏀懼叆娉ㄥ唽琛紝瀛楄妭涔嬮棿鐢ㄩ楀彿鍒嗗紑銆傚紑濮嬬殑鍥涗釜瀛楄妭涓鍍忕礌涓哄崟浣嶆寚瀹氬ぇ灝忥紝鏍煎紡瑕佺敤鍗佸叚榪涘埗錛屼粠鏈宸﹁竟瀛楄妭寮濮嬨傛渶鍚庡洓涓瓧鑺傛槸淇濈暀瀛楄妭錛屽簲璇ュ皢瀹冪疆涓洪浂銆備緥濡傦紝鍨傜洿嫻忚鏍忕殑緙虹渷瀹藉害涓?91錛?x123錛夊儚绱狅紝鍒橞arSize 鐨勫煎簲璇ユ槸"23,01,00,00,00,00,00,00"聽
濡傛灉瑕佺敤嫻忚鏍忔樉紺篐TML錛屽垯鍓嶄袱涓敞鍐岄」鏄繀欏葷殑銆傛渶鍚庝竴涓敞鍐岄」鍒欐牴鎹瀭鐩寸殑鎴栬呮按騫崇殑嫻忚鏍忓畾涔夌浉搴旂殑緙虹渷瀹藉害鍜岄珮搴︺?br />鑳芥樉紺篐TML鐨勬祻瑙堟爮錛堢己鐪佸搴︿負291鍚勫儚绱犲崟浣嶏級娉ㄥ唽琛ㄦ潯鐩殑褰㈠紡濡備笅錛?br />
HKEY_CLASSES_ROOT
...
    CLSID
	...
        {Band 瀵硅薄鐨?CLSID GUID} = "鑿滃崟鏂囨湰涓?
            InProcServer32 = "DLL 璺緞鍚?
                ThreadingModel = "Apartment"
            Instance
                CLSID = "{4D5C8C2A-D075-11D0-B416-00C04FB90376}"
                InitPropertyBag
                    Url = "HTML鏂囦歡"
...
HKEY_CURRENT_USER
...
    Software
    ...
        Microsoft
        ...
            Internet Explorer
            ...
                Explorer Bars
                    { Band 瀵硅薄鐨?CLSID GUID }
                        BarSize = "23,01,00,00,00,00,00,00"

浣犲彲浠ラ氳繃緙栫▼鐨勬柟寮忔潵澶勭悊鍖哄璞$被鍒?CATID 鐨勬敞鍐屻傚垱寤轟竴涓粍浠剁被鍒鐞嗗櫒瀵硅薄(CLSID_StdComponentCategoriesMgr)騫惰姹備竴涓寚鍚慖CatRegister鎺ュ彛鐨勬寚閽堛傚皢鍖哄璞$殑CLSID鍜孋ATID浼犻掑埌ICatRegister::RegisterClassImplCategories銆?br />涓夈佸畾鍒舵祻瑙堟爮鐨勪竴涓畝鍗曚緥瀛?/a>
榪欎釜渚嬪瓙灞曠ず浜嗗墠闈㈡墍浠嬬粛榪囩殑鍨傜洿嫻忚鏍忕殑鏁翠釜瀹炵幇榪囩▼銆傚畠鍊熷姪浜嗗鉤鍙癝DK錛圥latform SDK鈥斺斿湪msdn涓彲浠ユ壘鍒幫級涓叧浜巄and瀵硅薄紺鴻寖浠g爜銆傚叾涓繕鍖呮嫭浜嗘按騫蟲祻瑙堟爮鍜屾闈and鐨勫疄鐜頒唬鐮併傝緇嗗疄鐜扮粏鑺傝鍙傝錛欳ommBand.cpp鍜孌eskBand.cpp銆?br />鍒涘緩瀹氬埗嫻忚鏍忕殑鍩烘湰榪囩▼鏄繖鏍風殑錛?br />
  1. 瀹炵幇DLL闇瑕佺殑鍑芥暟銆?
  2. 瀹炵幇蹇呴』鐨凜OM鎺ュ彛銆?
  3. 瀹炵幇浠諱綍鎯寵鐨勫彲閫夋帴鍙c?
  4. 娉ㄥ唽瀵硅薄鐨凜LSID銆?
  5. 榪涜鎭板綋鐨勭粍浠剁綾繪敞鍐屻?
  6. 鍒涘緩IE瀛愮獥鍙o紝璋冩暣紿楀彛澶у皬閫傚悎嫻忚鏍忕殑鏄劇ず鍖哄煙銆?
  7. 浣跨敤瀛愮獥鍙f樉紺轟俊鎭茍涓庣敤鎴蜂氦浜掋?
瀹為檯涓婏紝鍙閫氳繃鎭板綋鐨勭粍浠剁綾繪敞鍐岋紝嫻忚鏍忎緥瀛愪唬鐮佷究鏃㈠彲鐢ㄤ簬嫻忚鏍忕殑瀹炵幇錛屼篃鑳界敤浜庢闈and瀹炵幇銆傛洿鍔犲鏉傜殑瀹炵幇灝嗛渶瑕佸畾鍒舵瘡縐嶅璞$被鍨嬬殑鏄劇ず鍖哄煙鍜屽鍣ㄣ備絾澶у鏁扮殑瀹氬埗宸ヤ綔閮借兘閫氳繃鑼冧緥浠g爜浠ュ強Windows瀛愮獥鍙g殑緙栫▼鎶鏈潵瀹屾垚銆備緥濡傦紝浣犲彲浠ユ坊鍔犵敤鎴蜂氦浜掓帶鍒舵垨鑰呰繘琛岃壊褰╀赴瀵岀殑鍥懼艦鏄劇ず澶勭悊銆?br />
DLL鍑芥暟
鎵鏈変笁縐嶅尯瀵硅薄琚墦鍖呭湪涓涓狣LL涓紝瀹冭緭鍑轟互涓嬬殑鍑芥暟錛?br />
  • DllMain
  • DllCanUnloadNow聽
  • DllGetClassObject聽
  • DllRegisterServer聽
榪欎簺鍑芥暟鍙互鍦˙andObjs.cpp涓壘鍒幫紝瀹冧滑鏈嶅姟浜庢墍鏈変笁縐嶅尯瀵硅薄銆傚墠涓変釜鍑芥暟涔冩爣鍑嗙殑瀹炵幇錛屾垜浠笉鍐嶆湰鏂囦腑璁ㄨ銆傜被宸ュ巶涔熸槸鏍囧噯瀹炵幇錛屼唬鐮佸彲浠ュ湪ClsFact.cpp涓壘鍒?br />
娉ㄥ唽瀹氬埗鐨勬祻瑙堟爮

鏈変簡COM瀵硅薄鍚庯紝蹇呴』瀵規祻瑙堟爮鐨凜LSID榪涜娉ㄥ唽銆傚彟澶栧鏋滆涓嶪E鎴栬祫婧愮鐞嗗櫒
鍗忚皟榪愯錛岃繕蹇呴』榪涜鐨勬伆褰撶殑緇勪歡縐嶇被錛圕ATID_InfoBand錛夋敞鍐屻傝繖涓伐浣滅敱DllRegisterServer澶勭悊銆傛祻瑙堟爮渚嬪瓙浠g爜鏈夊叧鐨勫鐞嗛儴鍒嗗涓嬶細
...
//娉ㄥ唽嫻忚鏍忓璞?
if(!RegisterServer(CLSID_SampleExplorerBar, TEXT("鍨傜洿嫻忚鏍忎緥瀛?)))
return SELFREG_E_CLASS;

//娉ㄥ唽嫻忚鏍忕殑瀵硅薄緇勪歡縐嶇被
if(!RegisterComCat(CLSID_SampleExplorerBar, CATID_InfoBand))
return SELFREG_E_CLASS;
...
鍖哄璞$殑娉ㄥ唽浣跨敤閫氬父鐨凜OM榪囩▼錛屽畠鐢辯鏈夊嚱鏁癛egisterServer澶勭悊銆?br />闄や簡CLSID涔嬪錛岃繖涓尯瀵硅薄鏈嶅姟鍣ㄨ繕蹇呴』娉ㄥ唽涓涓互涓婄殑緇勪歡縐嶇被銆傝繖瀹為檯涓婃槸鍨傜洿嫻忚鏍忓拰姘村鉤嫻忚鏍忓疄鐜頒箣闂寸殑涓昏宸埆銆傝繖涓繃紼嬬殑澶勭悊鏄氳繃鍒涘緩涓涓粍浠剁綾葷鐞嗗櫒瀵硅薄錛圕LSID_StdComponentCategoriesMgr錛夛紝騫剁敤ICatRegister::RegisterClassImplCategories鏂規硶鏉ユ敞鍐屽尯瀵硅薄鏈嶅姟鍣ㄣ傚湪榪欎釜渚嬪瓙涓紝緇勪歡縐嶇被娉ㄥ唽鐨勫鐞嗘槸閫氳繃灝嗘祻瑙堟爮鐨凜LSID鍜孋ATID浼犻掑埌縐佹湁鍑芥暟RegisterComCat瀹屾垚鐨勶細
BOOL RegisterComCat(CLSID clsid, CATID CatID)
{
ICatRegister   *pcr;
HRESULT        hr = S_OK ;
    
CoInitialize(NULL);

hr = CoCreateInstance(  CLSID_StdComponentCategoriesMgr, 
                        NULL, 
                        CLSCTX_INPROC_SERVER, 
                        IID_ICatRegister, 
                        (LPVOID*)&pcr);
if(SUCCEEDED(hr))
   {
   hr = pcr->RegisterClassImplCategories(clsid, 1, &CatID);
   pcr->Release();
   }
        
CoUninitialize();

return SUCCEEDED(hr);
}

IUnknown
鏋勯犲嚱鏁幫紝鏋愭瀯鍑芥暟鍜孖Unknown瀹炵幇姣旇緝綆鍗曪紝鏈枃鍦ㄦ涓嶈璁恒傜粏鑺傝鍙傝婧愪唬鐮併?br />IObjectWithSite鎺ュ彛
褰撶敤鎴烽夋嫨鏌愪釜嫻忚鏍忔椂錛屽鍣ㄨ皟鐢ㄧ浉搴攂and瀵硅薄鐨処ObjectWithSite::SetSite鏂規硶銆傚弬鏁板皢琚緗垚榪欎釜鐜板満錛圫ite錛夌殑IUnknown鎸囬拡銆?br />閫氬父錛孲etSite瀹炵幇搴旇瀹屾垚涓嬪垪姝ラ錛?br />
  1. 閲婃斁褰撳墠鎵鎶婃寔鐨勪換浣曠幇鍦烘寚閽堛?
  2. 濡傛灉浼犻掑埌SetSite鐨勬寚閽堣緗負NULL錛屾鍒欏尯瀵硅薄琚垹闄ゃ係etSite鍙互榪斿洖S_OK銆?
  3. 濡傛灉浼犻掑埌SetSite鐨勬寚閽堣緗負闈濶ULL錛屽垯寤虹珛鏂扮殑鐜板満銆係etSite搴旇鍋氫互涓嬬殑浜嬫儏錛?br />
  1. 璋冪敤鐜板満QueryInterface鏂規硶璇鋒眰IOleWindow鎺ュ彛銆?
  2. 璋冪敤IOleWindow::GetWindow鑾峰彇鐖剁獥鍙e彞鏌勶紝騫跺瓨鍌ㄥ畠錛屼互渚夸互鍚庝嬌鐢ㄣ傚鏋滀笉鍐嶄嬌鐢ㄧ殑璇濓紝灝遍噴鏀綢OleWindow鎺ュ彛銆?
  3. 鍒涘緩姝and瀵硅薄鐨勭獥鍙d負涓涓瓙紿楀彛錛屽叾鐖剁獥鍙e氨鏄笂涓姝ヨ幏寰楃殑閭d釜紿楀彛銆傛敞鎰忓湪姝や笉鑳藉皢瀹冨垱寤烘垚鍙紿楀彛銆?
  4. 濡傛灉姝and瀵硅薄瀹炵幇IInputObject錛岃皟鐢ㄧ幇鍦篞ueryInterface鏂規硶璇鋒眰IInputObjectSite鎺ュ彛錛屽瓨鍌ㄨ繖涓帴鍙g殑鎸囬拡浠ュ鍚庣敤銆?
  5. 濡傛灉鎵鏈夋楠ら兘鎴愬姛錛屽垯榪斿洖S_OK錛屽惁鍒欒繑鍥濷LE瀹氫箟鐨勯敊璇唬鐮佷互鎸囩ず閿欒綾誨瀷銆?
浠ヤ笅鏄祻瑙堟爮瀹炵幇SetSite鐨勬柟娉曘俶_pSite鏄鏈夋垚鍛樺彉閲忥紝鐢ㄥ畠鏉ヤ繚瀛業InputObjectSite鎸囬拡錛岃宮_hwndParent淇濆瓨鐖剁獥鍙e彞鏌勩?br />
STDMETHODIMP CExplorerBar::SetSite(IUnknown* punkSite)
{
//濡傛灉鏌愪釜鐜板満琚妸鎸侊紝鍒欓噴鏀懼畠
if(m_pSite)
   {
   m_pSite->Release();
   m_pSite = NULL;
   }

//濡傛灉punkSite 涓嶄負NULL, 寤虹珛涓涓柊鐨勭幇鍦?
if(punkSite)
   {
   //鑾峰彇鐖剁獥鍙?
   IOleWindow  *pOleWindow;

   m_hwndParent = NULL;
   
   if(SUCCEEDED(punkSite->QueryInterface(IID_IOleWindow, (LPVOID*)&pOleWindow)))
      {
      pOleWindow->GetWindow(&m_hwndParent);
      pOleWindow->Release();
      }

   if(!m_hwndParent)
      return E_FAIL;

   if(!RegisterAndCreateWindow())
      return E_FAIL;

   //鑾峰彇鏌勪繚瀛業InputObjectSite鎸囬拡
   if(SUCCEEDED(punkSite->QueryInterface(IID_IInputObjectSite, (LPVOID*)&m_pSite)))
      {
      return S_OK;
      }  
   return E_FAIL;
   }
return S_OK;
}
榪欎釜渚嬪瓙鐨凣etSite鍙畝鍗曞湴鐢⊿etSite淇濆瓨鐨勭幇鍦烘寚閽堝疄鐜頒簡瀵圭幇鍦篞ueryInterface鏂規硶鐨勮皟鐢ㄣ?br />
STDMETHODIMP CExplorerBar::GetSite(REFIID riid, LPVOID *ppvReturn)
{
*ppvReturn = NULL;

if(m_pSite)
   return m_pSite->QueryInterface(riid, ppvReturn);

return E_FAIL;
}
紿楀彛鍒涘緩鐢辯鏈夋柟娉昍egisterAndCreateWindow璐熻矗銆傚鏋滆繖涓獥鍙d笉瀛樺湪錛屾鏂規硶灝嗘祻瑙堟爮紿楀彛鍒涘緩鎴愪竴涓ぇ灝忛傚綋鐨勫瓙紿楀彛錛屽畠鐨勭埗紿楀彛灝辨槸鐢盨etSite鑾峰緱鐨勯偅涓獥鍙c傚瓙紿楀彛鐨勫彞鏌勫瓨鍌ㄥ湪m_hwnd鍙橀噺涓?br />
BOOL CExplorerBar::RegisterAndCreateWindow(void)
{
//濡傛灉榪欎釜紿楀彛涓嶅瓨鍦紝鍒欏垱寤哄畠
if(!m_hWnd)
   {
   //瀛愮獥鍙d笉鑳芥病鏈夌埗紿楀彛
   if(!m_hwndParent)
      {
      return FALSE;
      }

   //濡傛灉紿楀彛綾繪病鏈夋敞鍐岋紝鍒欏繀欏繪敞鍐?
   WNDCLASS wc;
   if(!GetClassInfo(g_hInst, EB_CLASS_NAME, &wc))
      {
      ZeroMemory(&wc, sizeof(wc));
      wc.style          = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
      wc.lpfnWndProc    = (WNDPROC)WndProc;
      wc.cbClsExtra     = 0;
      wc.cbWndExtra     = 0;
      wc.hInstance      = g_hInst;
      wc.hIcon          = NULL;
      wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
      wc.hbrBackground  = (HBRUSH)CreateSolidBrush(RGB(0, 0, 192));
      wc.lpszMenuName   = NULL;
      wc.lpszClassName  = EB_CLASS_NAME;
      
      if(!RegisterClass(&wc))
         {
         //濡傛灉娉ㄥ唽澶辮觸錛屼笅闈㈢殑CreateWindow鍑芥暟灝嗗け璐?
         }
      }

   RECT  rc;

   GetClientRect(m_hwndParent, &rc);

   //鍒涘緩榪欎釜紿楀彛銆俉ndProc 灝嗗緩绔媘_hWnd鍙橀噺
   CreateWindowEx(   0,
                     EB_CLASS_NAME,
                     NULL,
                     WS_CHILD | WS_CLIPSIBLINGS | WS_BORDER,
                     rc.left,
                     rc.top,
                     rc.right - rc.left,
                     rc.bottom - rc.top,
                     m_hwndParent,
                     NULL,
                     g_hInst,
                     (LPVOID)this);
      
   }
return (NULL != m_hWnd);
}
IPersistStream鎺ュ彛
IE灝嗚皟鐢ㄦ祻瑙堟爮鐨処PersistStream鎺ュ彛錛屼互渚垮厑璁歌繖涓祻瑙堟爮鍔犺澆鎴栧瓨鍌ㄦ寔涔呮ф暟鎹傚鏋滄病鏈夋寔涔呮ф暟鎹紝榪欎釜鏂規硶浠嶇劧蹇呴』榪斿洖涓涓垚鍔熶唬鐮併侷PersistStream鎺ュ彛浠嶪Persist緇ф壙鑰屾潵錛屾墍浠ヨ瀹炵幇浜斾釜鏂規硶錛?br />GetClassID, IsDirty, Load, Save, GetSizeMax銆?br />鏈枃鐨勮繖涓祻瑙堟爮渚嬪瓙涓嶄嬌鐢ㄦ寔涔呮ф暟鎹紝騫朵笖鍙湁IPersistStream鐨勬渶灝忓疄鐜般侴etClassID榪斿洖瀵硅薄鐨凜LSID錛圕LSID_SampleExplorerBar錛夛紝鍏朵綑鐨勬柟娉曡繑鍥濻_OK, 鎴栬匰_FALSE, 鎴栬?E_NOTIMPL銆傛湁鍏崇粏鑺傝鍙傝IPersistStream鐨勫疄鐜般?br />
IDeskBand鎺ュ彛
IDeskBand鎺ュ彛鏄尯瀵硅薄涓撶敤鎺ュ彛銆傚畠鍙湁涓涓柟娉曘侷DeskBand鎺ュ彛浠嶪DockingWindow緇ф壙鑰屾潵錛岃孖DockingWindow鍙堜粠IOleWindow緇ф壙鑰屾潵銆?br />IOleWindow鏈変袱涓柟娉曪細GetWindow 鍜?ContextSensitiveHelp銆傛祻瑙堟爮渚嬪瓙鐨凣etWindow瀹炵幇榪斿洖嫻忚鏍忕殑瀛愮獥鍙e彞鏌刴_hwnd銆傚洜涓轟笉瀹炵幇涓婁笅鏂囨晱鎰熷府鍔╋紝鎵浠ontextSensitiveHelp榪斿洖E_NOTIMPL銆?br />IDockingWindow鎺ュ彛鏈変笁涓柟娉曪細ShowDW, CloseDW, 鍜?ResizeBorder銆俁esizeBorder涓嶅湪浠諱綍鍖哄璞′腑浣跨敤錛屽簲璇ヨ繑鍥濫_NOTIMPL銆係howDW鏂規硶鏍規嵁鍏朵笉鍚岀殑鍙傛暟鍊兼帶鍒舵祻瑙堟爮紿楀彛鐨勬樉紺烘垨闅愯棌錛?br />
STDMETHODIMP CExplorerBar::ShowDW(BOOL fShow)
{
if(m_hWnd)
   {
   if(fShow)
      {
      //鏄劇ず紿楀彛
      ShowWindow(m_hWnd, SW_SHOW);
      }
   else
      {
      //闅愯棌紿楀彛
      ShowWindow(m_hWnd, SW_HIDE);
      }
   }

return S_OK;
}

CloseDW鏂規硶鎽ф瘉嫻忚鏍忕獥鍙o細
STDMETHODIMP CExplorerBar::CloseDW(DWORD dwReserved)
{
ShowDW(FALSE);

if(IsWindow(m_hWnd))
   DestroyWindow(m_hWnd);

m_hWnd = NULL;
   
return S_OK;
}
鍏朵綑鐨勬柟娉曪紝濡侴etBandInfo鏄疘DeskBand涓撶敤鐨勩侷E浣跨敤瀹冩潵鎸囧畾嫻忚鏍忕殑鏍囩ず絎︿互鍙婅鍥炬ā寮忋侷E榪樺彲鑳藉~鍐橠ESKBANDINFO緇撴瀯鐨刣wMask鎴愬憳浠庢祻瑙堟爮璇鋒眰鏇村鐨勪俊鎭紝榪欎釜緇撴瀯鐢ㄧ涓変釜鍙傛暟浼犻掋侴etBandInfo搴旇瀛樺偍榪欎釜鏍囩ず絎﹀拰瑙嗗浘妯″紡騫剁敤鎵璇鋒眰鐨勬暟鎹~鍐橠ESKBANDINFO緇撴瀯銆備笅闈㈡槸鏈枃嫻忚鏍忎緥瀛愭墍瀹炵幇GetBandInfo錛?br />
STDMETHODIMP CExplorerBar::GetBandInfo(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi)
{
if(pdbi)
   {
   m_dwBandID = dwBandID;
   m_dwViewMode = dwViewMode;

   if(pdbi->dwMask & DBIM_MINSIZE)
      {
      pdbi->ptMinSize.x = MIN_SIZE_X;
      pdbi->ptMinSize.y = MIN_SIZE_Y;
      }
   if(pdbi->dwMask & DBIM_MAXSIZE)
      {
      pdbi->ptMaxSize.x = -1;
      pdbi->ptMaxSize.y = -1;
      }
   if(pdbi->dwMask & DBIM_INTEGRAL)
      {
      pdbi->ptIntegral.x = 1;
      pdbi->ptIntegral.y = 1;
      }
   if(pdbi->dwMask & DBIM_ACTUAL)
      {
      pdbi->ptActual.x = 0;
      pdbi->ptActual.y = 0;
      }
   if(pdbi->dwMask & DBIM_TITLE)
      {
      lstrcpyW(pdbi->wszTitle, L"嫻忚鏍忎緥瀛?);
      }
   if(pdbi->dwMask & DBIM_MODEFLAGS)
      {
      pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
      }
   if(pdbi->dwMask & DBIM_BKCOLOR)
      {
      //閫氳繃縐誨紑榪欎釜鏍囧織鏉ヤ嬌鐢ㄩ粯璁ょ殑鑳屾櫙棰滆壊
      pdbi->dwMask &= ~DBIM_BKCOLOR;
      }
   return S_OK;
   }
return E_INVALIDARG;
}
IInputObject鎺ュ彛
濡傛灉鏌愪釜band瀵硅薄瑕佹帴鍙楃敤鎴瘋緭鍏ャ傞偅灝卞繀欏誨疄鐜癐InputObject鎺ュ彛銆侷E瀹炵幇IInputObjectSite騫剁敤IInputObject緇存姢鐢ㄦ埛鐨勮緭鍏ョ劍鐐廣傛祻瑙堟爮闇瑕佸疄鐜頒笁涓柟娉曪細UIActivateIO, HasFocusIO, 鍜?TranslateAcceleratorIO銆?br />IE璋冪敤UIActivateIO閫氱煡嫻忚鏍忓畠浠ヨ嬋媧繪垨鑰呰緗伆銆傚綋琚縺媧繪椂錛屾祻瑙堟爮渚嬪瓙璋冪敤SetFocus鏉ヨ緗獥鍙h緭鍏ョ劍鐐廣?br />褰撹紜畾鍝釜紿楀彛鏈夎緭鍏ョ劍鐐規椂錛孖E璋冪敤HasFocusIO銆傚鏋滄祻瑙堟爮鐨勭獥鍙f垨瀹冪殑瀛愮獥鍙d箣涓鏈夎緭鍏ョ劍鐐癸紝HasFocusIO榪斿洖S_OK銆傚惁鍒欙紝瀹冭繑鍥濻_FALSE銆?br />TranslateAcceleratorIO鍏佽瀵硅薄澶勭悊閿洏鍔犻熼敭銆傛湰鏂囨祻瑙堟爮渚嬪瓙娌℃湁瀹炵幇榪欎釜鏂規硶錛屾墍浠ュ畠榪斿洖S_FALSE銆?br />嫻忚鏍忎緥瀛愬疄鐜癐InputObjectSite鐨勭粏鑺傚涓嬶細
STDMETHODIMP CExplorerBar::UIActivateIO(BOOL fActivate, LPMSG pMsg)
{
if(fActivate)
   SetFocus(m_hWnd);

return S_OK;
}

STDMETHODIMP CExplorerBar::HasFocusIO(void)
{
if(m_bFocus)
   return S_OK;

return S_FALSE;
}

STDMETHODIMP CExplorerBar::TranslateAcceleratorIO(LPMSG pMsg)
{
return S_FALSE;
}
紿楀彛榪囩▼
鍥犱負鍖哄璞$殑鏄劇ず鐢ㄧ殑鏄瓙紿楀彛錛屾墍浠ュ畠蹇呴』瀹炵幇紿楀彛榪囩▼鏉ュ鐞哤indows娑堟伅銆傛祻瑙堟爮渚嬪瓙瀹炵幇浜嗕竴涓渶綆鍗曠殑鐗堟湰錛屽畠鐨勭獥鍙h繃紼嬪彧澶勭悊浜嗕簲涓秷鎭細WM_NCCREATE, WM_PAINT, WM_COMMAND, WM_SETFOCUS, 鍜?WM_KILLFOCUS銆傚鏋滆瀹炵幇鏇村鐨勫姛鑳斤紝寰堝鏄撴墿鍏呬嬌瀹冨鐞嗗叾瀹冪殑娑堟伅銆?br />
LRESULT CALLBACK CExplorerBar::WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
CExplorerBar  *pThis = (CExplorerBar*)GetWindowLong(hWnd, GWL_USERDATA);

switch (uMessage)
   {
   case WM_NCCREATE:
      {
      LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam;
      pThis = (CExplorerBar*)(lpcs->lpCreateParams);
      SetWindowLong(hWnd, GWL_USERDATA, (LONG)pThis);

      //璁劇疆紿楀彛鍙ユ焺
      pThis->m_hWnd = hWnd;
      }
      break;  
   case WM_PAINT:
      return pThis->OnPaint();  
   case WM_COMMAND:
      return pThis->OnCommand(wParam, lParam);  
   case WM_SETFOCUS:
      return pThis->OnSetFocus();
   case WM_KILLFOCUS:
      return pThis->OnKillFocus();
   }
return DefWindowProc(hWnd, uMessage, wParam, lParam);
}
榪欓噷WM_COMMAND娑堟伅澶勭悊鍣ㄧ畝鍗曞湴榪斿洖闆躲俉M_PAINT娑堟伅澶勭悊鍣ㄥ垱寤烘枃鏈茍鏄劇ず鍦ㄨ祫婧愮鐞嗗櫒鎴朓E鐨勫尯瀵硅薄涓?br />
LRESULT CExplorerBar::OnPaint(void)
{
PAINTSTRUCT ps;
RECT        rc;

BeginPaint(m_hWnd, &ps);
GetClientRect(m_hWnd, &rc);
SetTextColor(ps.hdc, RGB(255, 255, 255));
SetBkMode(ps.hdc, TRANSPARENT);
DrawText(ps.hdc, TEXT("嫻忚鏍忎緥瀛?), -1, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(m_hWnd, &ps);
return 0;
}
WM_SETFOCUS 鍜?WM_KILLFOCUS娑堟伅澶勭悊鍣ㄩ氳繃璋冪敤鏈幇鍦虹殑IInputObjectSite::OnFocusChangeIS鏂規硶閫氱煡杈撳叆鐒︾偣鐜板満鏀瑰彉錛?br />
LRESULT CExplorerBar::OnSetFocus(void)
{
FocusChange(TRUE);

return 0;
}

LRESULT CExplorerBar::OnKillFocus(void)
{
FocusChange(FALSE);
return 0;
}

void CExplorerBar::FocusChange(BOOL bFocus)
{
m_bFocus = bFocus;

//閫氱煡鐒︾偣宸叉敼鍙樼殑杈撳叆瀵硅薄鐜板満
if(m_pSite)
   {
   m_pSite->OnFocusChangeIS((IDockingWindow*)this, bFocus);
   }
}
鍥涖佹葷粨

鍖哄璞℃彁渚涗簡鐏墊椿鍜屽己澶х殑鎵╁睍鏂瑰紡錛岄氳繃瀹氬埗嫻忚鏍忎嬌寰桰E鐨勫姛鑳藉ぇ涓哄寮恒傛闈㈠尯鐨勫疄鐜版墿灞曚簡鏅氱獥鍙g殑鑳藉姏銆傚敖綆¢渶瑕佷竴浜涘COM鐨勭紪紼嬶紝浣嗙粓絀朵互瀛愮獥鍙g殑褰㈠紡鎻愪緵浜嗕竴縐嶇敤鎴風晫闈€備粠鑰屼嬌浠婂悗鐨勮澶氳繖縐嶇紪紼嬪疄鐜伴兘鑳界敤綾諱技鐨刉indows緙栫▼鎶鏈傝櫧鐒舵湰鏂囨墍璁ㄨ鐨勪緥瀛愬彧鎻愪緵浜嗘湁闄愮殑鍔熻兘錛屼絾瀹冪ず鑼冧簡鍖哄璞″叏閮ㄧ殑鐗規э紝騫朵笖鍙互鍦ㄦ鍩虹涓婅繘琛屾墿鍏呮潵鍒涘緩鐙壒鍜屽姛鑳藉己澶х殑鐨勭敤鎴風晫闈€?


jay 2007-03-12 16:07 鍙戣〃璇勮
]]>
ATL 瀹炵幇瀹氬埗鐨?IE 嫻忚鍣ㄦ爮銆佸伐鍏鋒爮鍜屾闈㈠伐鍏鋒爮http://m.shnenglu.com/yishanhante/articles/19566.htmljayjaySun, 11 Mar 2007 06:35:00 GMThttp://m.shnenglu.com/yishanhante/articles/19566.htmlhttp://m.shnenglu.com/yishanhante/comments/19566.htmlhttp://m.shnenglu.com/yishanhante/articles/19566.html#Feedback0http://m.shnenglu.com/yishanhante/comments/commentRss/19566.htmlhttp://m.shnenglu.com/yishanhante/services/trackbacks/19566.html涓銆佸紩璦
銆銆鏈榪戯紝鐢變簬宸ヤ綔鐨勮姹傦紝鎴戦渶瑕佸湪 IE 涓婂仛涓浜涘紑鍙戝伐浣溿備簬鏄湪 MSDN 涓婄炕闃呬簡涓浜涜祫鏂欙紝鏍規嵁 MSDN 涓婄殑璇存槑鎴戠敤 ATL 鑳滃埄瀹屾垚浜嗏滆祫鏈鑰佹澘鈥濆垎閰嶇殑浠誨姟銆?br />錛堝茍涓斿湪鐧藉ぉ鐫¤鐨勮繃紼嬩腑姊﹀埌浜嗚佹澘緇欐垜鍔犲伐璧勫暒......錛?br />鐜板湪錛屾垜鎶?MSDN 涓婄殑鍘熸枃璧勬枡錛岀粡榪囩炕璇戞暣鐞嗗茍鎶婁竴涓?ATL 鐨勫疄鐜板璐ょ粰 VCKBASE 涓婄殑鏈嬪弸浠?


鍥句竴

銆銆鍥句竴涓敾綰㈠湀鐨勫湴鏂癸紝鍒嗗埆縐頒綔鈥滃瀭鐩寸殑嫻忚鍣ㄦ爮鈥濄佲滄按騫崇殑嫻忚鍣ㄦ爮鈥濄佲滃伐鍏鋒爮鈥濆拰鈥滄闈㈠伐鍏鋒爮鈥濄傝繖浜涒滄爮鈥濓紝閮藉彲浠ュ湪 IE 鐨勨滄煡鐪嬧濊彍鍗曚腑鎴栭紶鏍囧彸閿殑涓婁笅鏂囧揩鎹鋒柟寮忚彍鍗曚腑鏄劇ず鎴栭殣钘忚搗鏉ャ傝繖浜涚晫闈㈢獥鍙g殑瀹炵幇錛屽叾瀹炲氨鏄疄鐜頒竴縐?COM 鎺ュ彛瀵硅薄錛岃岃繖涓璞″彨 band銆傝繖涓蹇靛疄鍦ㄦ槸鍙兘鎰忎細鑰屾棤娉曡█浼犵殑錛屾垜鎬諱笉鑳藉湪鏂囩珷涓妸瀹冪炕璇戜負鈥滄繪槸闈犲湪 IE 涓葷獥鍙h竟涓婄殑瀵硅薄鈥濆惂錛焇_^
銆銆鍙﹀錛岃繕鏈変竴涓瘝鍙?site銆傝繖涓緢濂界炕璇戯紝鍙滅珯鐐光濓紒銆傚懙鍛碉紝鎴戞暍鎵撳寘紲紝濡傛灉浣犺鑳界悊瑙h繖涓炕璇戝湪璁$畻鏈虹被鏂囩珷涓殑鍚箟錛岄偅灝卞彧鑳芥伃鍠滀綘浜嗭紝浣犵殑鏅烘収澶珮浜嗐傦紙閮芥槸瀛﹁綆楁満杞歡鐨勪漢錛屽仛浜虹殑宸窛鍜嬪氨榪欎箞澶у憿錛燂級鍦ㄦ湰綃囨枃绔犱腑錛宻ite 鍙互榪欐牱鐞嗚В錛欼E 鐨勪富妗嗘灦鍥涘懆錛屽氨濂芥瘮鏄滄苯杞︾珯鈥濓紝閭d簺 band 瀵硅薄錛屽氨濂芥瘮鏄滄苯杞︹濄俠and 姹借濺鎬繪槸鍙互鍋滈潬鍦ㄢ滄苯杞︾珯鈥濅笂銆傛墍浠ワ紝site 灝辨槸鈥滅珯鐐光濓紝瀹冧篃鏄?COM 鎺ュ彛鐨勫璞★紙IObjectWithSite銆両InputObjectSite錛夈?br />
3.1銆鍩烘湰 band 瀵硅薄
銆銆Band 瀵硅薄錛屼粠 Shell 4.71(IE 5.0) 寮濮嬫彁渚涙敮鎸併侭and 鏄竴涓?COM 瀵硅薄錛屽繀欏繪斁鍦ㄤ竴涓鍣ㄤ腑鍘諱嬌鐢紝褰撶劧浣跨敤瀹冧滑灝卞ソ璞′嬌鐢ㄦ櫘閫氱獥鍙f槸涓鏍風殑銆侷E 灝辨槸涓涓鍣紝妗岄潰 Shell 涔熸槸涓涓鍣紝瀹冧滑鎻愪緵涓嶅悓鐨勫嚱鏁板姛鑳斤紝浣嗗熀鏈殑瀹炵幇鏄浉浼肩殑銆?br />銆銆Band 瀵硅薄鍒嗕笁縐嶇被鍨嬶紝嫻忚鍣ㄦ爮 band錛圗xplorer bands錛夈佸伐鍏鋒爮 band錛圱ool Bands錛夊拰妗岄潰宸ュ叿鏍?Desk bands)錛岃屾祻瑙堝櫒鏍?band 鍙堟湁涓ょ琛ㄧ幇褰㈠紡錛氬瀭鐩村拰姘村鉤鐨勩傞偅涔?IE 鍜?Shell 濡備綍鍖哄垎騫跺姞杞借繖浜?bands 瀵硅薄鍛紵鏂規硶鏄細浣犺瀵逛笉鍚岀殑 band 瀵硅薄錛屽湪娉ㄥ唽琛ㄤ腑娉ㄥ唽涓嶅悓鐨勭粍浠剁被鍨嬶紙CATID錛夈?br />

Band 鏍峰紡

緇勪歡綾誨瀷

CATID

鍨傜洿鐨勬祻瑙堝櫒鏍?/td>CATID_InfoBand00021493-0000-0000-C000-000000000046
姘村鉤鐨勬祻瑙堝櫒鏍?/td>CATID_CommBand00021494-0000-0000-C000-000000000046
妗岄潰鐨勫伐鍏鋒爮CATID_DeskBand00021492-0000-0000-C000-000000000046

銆銆IE 宸ュ叿鏍忎笉浣跨敤緇勪歡綾誨瀷娉ㄥ唽錛岃屾槸浣跨敤鍦ㄦ敞鍐岃繘琛?CLSID 鐨勭櫥璁版柟寮忋傝緇嗘儏鍐佃 3.3銆?br />銆銆鍦ㄤ緥瀛愮▼搴忎腑錛屽疄鐜頒簡鍏ㄩ儴鍥涗釜綾誨瀷鐨?band 瀵硅薄錛屽瀭鐩存祻瑙堝櫒鏍?CVerticalBar)鏄劇ず浜嗕竴涓?HTML 鏂囦歡錛屽茍涓斿疄鐜頒簡瀵?IE 涓葷獥鍙f祻瑙堢綉欏電殑瀵艱埅絳夊姛鑳斤紱姘村鉤鐨勬祻瑙堝櫒鏍?CHorizontalBar)鏄竴涓紪杈戠獥錛屽畠鍚屾鏄劇ず褰撳墠緗戦〉鐨?BODY 婧愭枃浠跺唴瀹癸紱IE 宸ュ叿鏍?CToolBar)鏈綆鍗曪紝鍙槸娣誨姞浜嗕竴涓┖鐨勫伐鍏鋒爮錛涙闈㈠伐鍏鋒爮(CDeskBar)瀹炵幇浜嗕竴涓崟琛岀紪杈戠獥鍙o紝浣犲彲浠ュ湪涓婇潰杈撳叆鍛戒護琛屾垨鏂囦歡鍚嶇О錛屽洖杞﹀悗瀹冧細鎵ц Shell 鐨勬墦寮鍔ㄤ綔銆?br />
3.2銆蹇呴』瀹炵幇鐨?COM 鎺ュ彛
銆銆Band 瀵硅薄鏄?IE 鎴?Shell 鐨勮繘紼嬪唴鏈嶅姟鍣紝鎵浠ュ畠琚寘瑁呭湪 DLL 涓傝屼綔涓?COM 瀵硅薄錛屽畠蹇呴』瑕佸疄鐜?IUnknown 鍜?IClassFactory 鎺ュ彛銆傦紙澶у鍙互涓嶅悓鎿嶅績錛屽洜涓烘垜浠敤 ATL 鍐欑▼搴忥紝榪欎袱涓帴鍙f槸涓嶇敤鎴戜滑鑷繁鍐欎唬鐮佺殑銆傦級鍙﹀錛孊and 瀵硅薄榪樺繀欏誨疄鐜?IDeskBand銆両ObjectWithSite 鍜?IPersistStream 涓変釜鎺ュ彛錛?br />銆銆IPersistStream 鏄寔緇ф帴鍙g殑涓縐嶃傚綋 IE 鍔犺澆 band 瀵硅薄鐨勬椂鍊欙紝瀹冮氳繃榪欎釜鎺ュ彛鐨?Load 鏂規硶浼犻掑睘鎬у肩粰瀵硅薄錛岃鍏惰繘琛屽垵濮嬪寲錛涜屽綋鍗歌澆鍓嶏紝IE 鍒欒皟鐢ㄨ繖涓帴鍙g殑 Save 鏂規硶淇濆瓨瀵硅薄鐨勫睘鎬с傜敤 ATL 瀹炵幇榪欎釜鎺ュ彛寰堢畝鍗曪細
class ATL_NO_VTABLE Cxxx : 
	......
	public IPersistStreamInitImpl, // 娣誨姞緇ф壙
	......
{
public:
	BOOL m_bRequiresSave; // IPersistStreamInitImpl 鎵蹇呴』鐨勫彉閲?
......
BEGIN_COM_MAP(CVerticalBar)
	......
	COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
	COM_INTERFACE_ENTRY2(IPersistStream, IPersistStreamInit)
	COM_INTERFACE_ENTRY(IPersistStreamInit)
	......
END_COM_MAP()

BEGIN_PROP_MAP(Cxxx)
...... // 娣誨姞闇瑕佹寔緇х殑灞炴?
END_PROP_MAP()		
銆銆涓婇潰鐨勪唬鐮侊紝鍏跺疄瀹炵幇鐨勬槸 IPersistStreamInit 鎺ュ彛錛屼笉榪囨病鏈夊叧緋伙紝鍥犱負 IPersistStreamInit 媧劇敓鑷?IPersistStream錛屽疄渚嬪寲浜嗘淳鐢熺被錛岃嚜鐒跺氨瀹炰緥鍖栦簡鍩虹被銆傚湪渚嬪瓙紼嬪簭涓紝鎴戝彧鍦ㄦ闈㈠伐鍏鋒爮瀵硅薄涓坊鍔犱簡鎸佺畫鎬у睘鎬э紝鐢ㄦ潵淇濆瓨鍜屽垵濮嬪寲鈥滃懡浠よ鈥濄傚彟澶?COM_INTERFACE_ENTRY2(A錛孊)琛ㄧず鐨勫惈涔夋槸錛氬鏋滄兂鏌ヨA鎺ュ彛鐨勬寚閽堬紝鍒欐彁渚汢鎺ュ彛鎸囬拡鏉ヤ唬鏇褲備負浠涔堝彲浠ヨ繖鏍烽偅錛熷洜涓築鎺ュ彛媧劇敓鑷狝鎺ュ彛錛岄偅涔圔鎺ュ彛鐨勫墠鍑犱釜鍑芥暟蹇呯劧灝辨槸A鎺ュ彛鐨勫嚱鏁頒簡錛岃嚜鐒禕鎺ュ彛鐨勫湴鍧鍏跺疄鍜孉鎺ュ彛鐨勫湴鍧鏄竴鏍風殑浜嗐?br />銆銆IObjectWithSite 鏄?IE 鐢ㄦ潵瀵規彃浠惰繘琛岀鐞嗗拰閫氳鐢ㄧ殑涓涓帴鍙c傚繀欏昏瀹炵幇榪欎釜鎺ュ彛鐨?涓嚱鏁幫細SetSite() 鍜?GetSite()銆傚綋 IE 鍔犺澆 band 瀵硅薄鍜岄噴鏀?band 瀵硅薄鐨勬椂鍊欙紝閮借璋冪敤 SetSite()鍑芥暟錛岄偅涔堝湪榪欎釜鍑芥暟閲屾濂芥槸鍐欏垵濮嬪寲鍜岄噴鏀炬搷浣滀唬鐮佺殑鍦版柟錛?
STDMETHODIMP Cxxx::SetSite(IUnknown *pUnkSite)
{
	if( NULL == pUnkSite )	// 閲婃斁 band 鐨勬椂鍊?
	{
		// 濡傛灉鍔犺澆鐨勬椂鍊欙紝淇濆瓨浜嗕竴浜涙帴鍙?
		// 閭d箞鐜板湪錛氶噴鏀懼畠
	}
	else	// 鍔犺澆 band 鐨勬椂鍊?
	{
		m_hwndParent = NULL;	// 瑁呰澆 band 鐨勭埗紿楀彛(灝辨槸甯︽湁鏍囬鐨勯偅涓鏋剁獥鍙?

		// 榪欎釜紿楀彛鐨勫彞鏌勶紝鏄皟鐢?IUnknown::QueryInterface() 寰楀埌 IOleWindow
		// 鐒跺悗璋冪敤 IOleWindow::GetWindow() 鑰岃幏寰楃殑銆?
		CComQIPtr< IOleWindow, &IID_IOleWindow > spOleWindow(pUnkSite);
		if( spOleWindow )	spOleWindow->GetWindow(&m_hwndParent);
		if( !m_hwndParent )	return E_FAIL;
		
		// 鐜板湪錛屾濂芥槸寤虹珛瀛愮獥鍙g殑鏃舵満銆?
		// 娉ㄦ剰錛屽瓙紿楀彛寤虹珛鐨勬椂鍊欙紝涓嶈浣跨敤 WS_VISIBLE 灞炴?
		... ...
		// 鍦ㄤ緥瀛愮▼搴忎腑錛岀敤 CAxWindow 瀹炵幇浜嗕竴涓兘鍖呭ActiveX鐨勫鍣ㄧ獥鍙?鍨傜洿嫻忚鍣ㄦ爮)
		// 鍦ㄤ緥瀛愮▼搴忎腑錛岀敤 WIN API 鍑芥暟 CreateWindow 瀹炵幇浜嗘爣鍑嗙獥鍙?姘村鉤嫻忚鍣ㄦ爮銆佸伐鍏鋒爮)
		// 鍦ㄤ緥瀛愮▼搴忎腑錛岀敤 CWindowImpl 瀹炵幇浜嗕竴涓寘瀹圭獥鍙?妗岄潰宸ュ叿鏍?

		/*********************************************************/
		   浠ヤ笅閮ㄥ垎錛屾牴鎹?band 瀵硅薄鐗規湁鐨勫姛鑳斤紝鏄彲浠ラ夋嫨瀹炵幇鐨?
		**********************************************************/		
		// 濡傛灉瀛愮獥鍙e疄鐜頒簡鐢ㄦ埛杈撳叆錛岄偅涔堝繀欏誨疄鐜?IInputObject 鎺ュ彛錛?
		// 鑰岃鎺ュ彛鏄 IE 鐨?IInputObjectSite 璋冪敤鐨勶紝鍥犳鍦ㄤ綘鐨勫璞?
		// 涓紝搴旇淇濆瓨 IInputObjectSite 鐨勬帴鍙f寚閽堛?
		// 鍦ㄧ被鐨勫ご鏂囦歡涓紝瀹氫箟錛?
		// CComQIPtr< IInputObjectSite, &IID_IInputObjectSite > m_spSite;

		m_spSite = pUnkSite;	// 淇濆瓨 IInputObjectSite 鎸囬拡
		if( !m_spSite )		return E_FAIL;

		// 浣犻渶瑕佹帶鍒?IE 鐨勪富妗嗘灦鍚楋紵
		// 閭d箞鍦ㄧ被鐨勫ご鏂囦歡涓紝瀹氫箟錛?
		// CComQIPtr< IWebBrowser2, &IID_IWebBrowser2 > m_spFrameWB;
		// 鐒跺悗錛屽厛鍙栧緱 IServiceProvider,鍐嶅彇寰?IWebBrowser2

		CComQIPtr < IServiceProvider, &IID_IServiceProvider> spSP(pUnkSite);
		if( !spSP )	return E_FAIL;
		spSP->QueryService( SID_SWebBrowserApp, &m_spFrameWB );
		if( !m_spFrameWB)	return E_FAIL;

		// 濡傛灉浣犲彇寰椾簡 IE 涓繪鏋剁殑 IWebBrowser2 鎸囬拡
		// 閭d箞錛屽綋瀹冨彂鐢熶簡浠涔堜簨鎯咃紝浣犻毦閬撲笉鎯崇煡閬撳悧錛?
		// 瀹氫箟錛欳ComPtr m_spCP;

		CComQIPtr< IConnectionPointContainer,
			&IID_IConnectionPointContainer> spCPC( m_spFrameWB );
		if( spCPC )
		{
			spCPC->FindConnectionPoint( DIID_DWebBrowserEvents2, &m_spCP );
			if( m_spCP )
			{
				m_spCP->Advise( reinterpret_cast< IDispatch * >( this ), &m_dwCookie );
			}
		}

		// 鍜硚~~ 涓嶈浜嗭紝鐪嬫簮鐮佸幓鍚с傝繖閲岃兘騫茬殑浜嬫儏澶浜?.. ...
	}
	return S_OK;
}		
IDeskBand 鏄竴涓壒孌婄殑 band 瀵硅薄鎺ュ彛錛屾湁涓涓柟娉曞嚱鏁幫細GetBarInfo()錛?br />IDockingWindow 鏄?IDeskBank 鐨勫熀綾伙紝鏈?涓柟娉曞嚱鏁幫細ShowDW()銆丆loseDW()銆丷esizeBorderDW()錛?br />IOleWindow 鍙堟槸 IDockingWindow 鐨勫熀綾伙紝鏈?涓柟娉曞嚱鏁幫細GetWindow()銆丆ontextSensitiveHelp()錛?

銆銆棣栧厛澹版槑 IDeskBand ,鐒跺悗瑕佸疄鐜?IDeskBand 鎺ュ彛鐨勫叡6涓嚱鏁幫紝榪欎簺鍑芥暟姣旇緝綆鍗曪紝涓嶅悓綾誨瀷鐨?band 瀵硅薄錛屽叾瀹炵幇鏂規硶涔熼兘鍩烘湰涓鑷達細
class ATL_NO_VTABLE Cxxx : 
	......
	public IDeskBand,
	......
{
......
BEGIN_COM_MAP(Cxxx)
	......
	COM_INTERFACE_ENTRY_IID(IID_IDeskBand, IDeskBand)
	......
END_COM_MAP()



// IOleWindow
STDMETHODIMP Cxxx::GetWindow(HWND * phwnd)
{	// 鍙栧緱 band 瀵硅薄鐨勭獥鍙e彞鏌?
	// m_hWnd 鏄緩绔嬬獥鍙f椂鍊欎繚瀛樼殑
	*phwnd = m_hWnd;	
	return S_OK;
}

STDMETHODIMP Cxxx::ContextSensitiveHelp(BOOL fEnterMode)
{	// 涓婁笅鏂囧府鍔╋紝鍙傝?IContextMenu 鎺ュ彛
	return E_NOTIMPL;
}

// IDockingWindow
STDMETHODIMP CVerticalBar::ShowDW(BOOL bShow)
{	// 鏄劇ず鎴栭殣钘?band 紿楀彛
	if( m_hWnd )
		::ShowWindow( m_hWnd, bShow ? SW_SHOW : SW_HIDE);

	return S_OK;
}

STDMETHODIMP CVerticalBar::CloseDW(DWORD dwReserved)
{	// 閿姣?band 紿楀彛
	if( ::IsWindow( m_hWnd ) )
		::DestroyWindow( m_hWnd );

	m_hWnd = NULL;

    return S_OK;
}

STDMETHODIMP CVerticalBar::ResizeBorderDW(LPCRECT prcBorder, IUnknown* punkToolbarSite, BOOL fReserved)
{	// 褰撴鏋剁獥鍙g殑杈規澶у皬鏀瑰彉鏃?
	return E_NOTIMPL;
}

// IDeskBand
STDMETHODIMP CVerticalBar::GetBandInfo(DWORD dwBandID, DWORD dwViewMode,  DESKBANDINFO* pdbi)
{	
         // 鍙栧緱 band 鐨勫熀鏈俊鎭紝浣犻渶瑕佸~鍐?pdbi 鍙傛暟浣滀負榪斿洖
	if( NULL == pdbi )		return E_INVALIDARG;

	// 濡傛灉灝嗘潵闇瑕佽皟鐢?IOleCommandTarget::Exec() 鍒欓渶瑕佷繚瀛樿繖2涓弬鏁?
	m_dwBandID = dwBandID;
	m_dwViewMode = dwViewMode;

	if(pdbi->dwMask & DBIM_MINSIZE)
	{	// 鏈灝忓昂瀵?
		pdbi->ptMinSize.x = 10;
		pdbi->ptMinSize.y = 10;
	}

	if(pdbi->dwMask & DBIM_MAXSIZE)
	{	// 鏈澶у昂瀵?(-1 琛ㄧず 4G)
		pdbi->ptMaxSize.x = -1;
		pdbi->ptMaxSize.y = -1;
	}

	if(pdbi->dwMask & DBIM_INTEGRAL)
	{
		pdbi->ptIntegral.x = 1;
		pdbi->ptIntegral.y = 1;
	}

	if(pdbi->dwMask & DBIM_ACTUAL)
	{
		pdbi->ptActual.x = 0;
		pdbi->ptActual.y = 0;
	}

	if(pdbi->dwMask & DBIM_TITLE)
	{	// 紿楀彛鏍囬
		wcscpy(pdbi->wszTitle,L"紿楀彛鏍囬");
	}

	if(pdbi->dwMask & DBIM_MODEFLAGS)
	{
		pdbi->dwModeFlags = DBIMF_VARIABLEHEIGHT;
	}

	if(pdbi->dwMask & DBIM_BKCOLOR)
	{	// 濡傛灉浣跨敤榛樿鐨勮儗鏅壊錛屽垯縐婚櫎璇ユ爣蹇?
		pdbi->dwMask &= ~DBIM_BKCOLOR;
	}

	return S_OK;
}		
3.3銆閫夋嫨瀹炵幇鐨?COM 鎺ュ彛
銆銆鏈変袱涓帴鍙d笉鏄繀欏誨疄鐜扮殑錛屼絾涔熻寰堟湁鐢細IInputObject 鍜?IContextMenu銆傚鏋?band 瀵硅薄闇瑕佹帴鏀剁敤鎴風殑杈撳叆錛岄偅涔堝繀欏誨疄鐜?IInputObject 鎺ュ彛銆侷E 瀹炵幇浜?IInputObjectSite 鎺ュ彛錛屽綋瀹瑰櫒涓湁澶氫釜杈撳叆紿楀彛鏃訛紝瀹冭皟鐢?IInputObject 鎺ュ彛鏂規硶鍘昏礋璐g鐞嗙敤鎴風殑杈撳叆鐒︾偣銆?br />鍦ㄦ祻瑙堝櫒鏍忎腑闇瑕佸疄鐜?涓嚱鏁幫細UIActivateIO()銆丠asFocusIO()銆乀ranslateAcceleratorIO()銆?br />褰撴祻瑙堝櫒鏍忔縺媧繪垨澶卞幓媧繪х殑鏃跺欙紝IE 璋冪敤 UIActivateIO 鍑芥暟錛屽綋嬋媧葷殑鏃跺欙紝嫻忚鍣ㄦ爮涓鑸皟鐢?SetFocus 鍘昏緗畠鑷繁紿楀彛鐨勭劍鐐廣傚綋 IE 闇瑕佸垽鏂摢涓獥鍙f湁鐒︾偣鐨勬椂鍊欙紝瀹冭皟鐢?HasFocusIO 銆傚綋嫻忚鍣ㄦ爮鐨勭獥鍙f垨鍏跺瓙紿楀彛鏈夎緭鍏ョ劍鐐規椂錛屽垯搴旇繑鍥?S_OK錛屽惁鍒欒繑鍥?S_FALSE銆俆ranslateAcceleratorIO 鍏佽瀵硅薄澶勭悊鍔犻熼敭錛屼緥瀛愮▼搴忎腑娌℃湁瀹炵幇錛屾墍浠ョ洿鎺ヨ繑鍥?S_FALSE銆?
STDMETHODIMP CExplorerBar::UIActivateIO(BOOL fActivate, LPMSG pMsg)
{
    if(fActivate)
        SetFocus(m_hWnd);

    return S_OK;
}

STDMETHODIMP CExplorerBar::HasFocusIO(void)
{
    if(m_bFocus)
        return S_OK;

    return S_FALSE;
}

STDMETHODIMP CExplorerBar::TranslateAcceleratorIO(LPMSG pMsg)
{
    return S_FALSE;
}      
銆銆Band 瀵硅薄鑳藉閫氳繃鍖呭鍣ㄧ殑 IOleCommandTarget::Exec() 璋冪敤鎵ц鍛戒護銆傝?IOleCommandTarget 鎺ュ彛鎸囬拡錛屽垯鍙互閫氳繃璋冪敤鍖呭鍣ㄧ殑 IInputOjbectSite::QueryInterface錛圛ID_IOleCommandTarget,...錛?鍑芥暟寰楀埌銆侰GID_DeskBand 鏄懡浠ょ粍錛屽綋涓涓?band 瀵硅薄鐨?GetBandInfo 琚皟鐢ㄧ殑鏃跺欙紝鍖呭鍣ㄩ氳繃 dwBandID 鍙傛暟鎸囧畾涓涓?ID 緇?band 瀵硅薄錛屽璞¤淇濆瓨浣忚繖涓狪D錛屼互渚胯皟鐢?IOleCommandTarget::Exec()鐨勬椂鍊欎嬌鐢ㄣ侷D 鐨勫懡浠ゆ湁錛?
  • DBID_BANDINFOCHANGED
    Band 鐨勪俊鎭彉鍖栥傝緗弬鏁?pvaIn 涓?band ID錛?璇?ID 灝辨槸鏈榪戜竴嬈¤皟鐢?GetBandInfo 鎵寰楀埌鐨勫鹼紝瀹瑰櫒浼氳皟鐢?band 瀵硅薄鐨?GetBandInfo 鍑芥暟鏉ユ洿鏂拌姹備俊鎭?
  • DBID_MAXIMIZEBAND
    鏈澶у寲 band銆傝緗弬鏁?pvaIn 涓?band ID錛岃 ID 灝辨槸鏈榪戜竴嬈¤皟鐢??GetBandInfo ?鎵寰楀埌鐨勫箋?
  • DBID_SHOWONLY
    鎵撳紑鎴栧叧闂鍣ㄤ腑鍏跺畠鐨?bands銆?璁劇疆鍙傛暟 pvaIn 涓篤T_UNKNOWN 綾誨瀷錛屽畠鍙互鏄涓嬬殑鍊鹼細
    鍊?/font>鎻忚堪
    pUnkband 瀵硅薄鐨?IUnknown 鎸囬拡錛屽叾瀹冪殑妗岄潰 bands 灝嗚闅愯棌
    0闅愯棌鎵鏈夌殑妗岄潰 bands
    1鏄劇ず鎵鏈夌殑妗岄潰 bands

  • DBID_PUSHCHEVRON
    鍦ㄨ彍鍗曢」宸﹁竟鏄劇ず鈥渧鈥濈殑閫夋嫨鏍囧織銆傚鍣ㄥ彂閫佷竴涓?RB_PUSHCHEVRON 娑堟伅錛屽綋 band 瀵硅薄鎺ユ敹鍒伴氱煡娑堟伅 RBN_CHEVRONPUSHED 鎻愮ず瀹冩樉紺轟竴涓?v"鐨勬爣蹇椼傝緗?IOleCommandTarget::Exec 鍑芥暟涓?nCmdExecOpt 鍙傛暟涓?band ID錛岃 ID 鏄渶榪戜竴嬈¤皟鐢?GetBandInfo ?鎵寰楀埌鐨勫鹼紝璁劇疆 IOleCommandTarget::Exec 鍑芥暟涓?pvaIn 鍙傛暟涓?VT_I4 綾誨瀷錛岃繖鏄簲鐢ㄧ▼搴忓畾涔夌殑涓涓鹼紝瀹冮氳繃閫氱煡娑堟伅 RBN_CHEVRONPUSHED 涓璴AppValue 鍥炰紶緇?band 瀵硅薄銆?

3.4銆Band 瀵硅薄娉ㄥ唽
銆銆Band 瀵硅薄蹇呴』娉ㄥ唽涓轟竴涓?OLE 榪涚▼鍐呯殑鏈嶅姟鍣紝騫朵笖鏀寔 apartment 綰跨▼鍏瘬銆傛敞鍐岃〃涓粯璁ら敭鐨勫兼槸琛ㄧず鑿滃崟鐨勬枃瀛椼傚浜庢祻瑙堝櫒鏍忥紝瀹冨姞鍒?IE 鑿滃崟鐨勨滄煡鐪媆嫻忚鍣ㄦ爮鈥濅腑錛涘浜庡伐鍏鋒爮 band 錛屽畠鍔犲埌 IE 鑿滃崟鐨勨滄煡鐪媆宸ュ叿鏍忊濅腑錛涘浜庢闈?band錛?瀹冨姞鍒扮郴緇熶換鍔℃爮鐨勫揩鎹瘋彍鍗曚腑銆傚湪鑿滃崟璧勬簮涓紝鍙互浣跨敤鈥?amp;鈥濇寚鏄庡姞閫熼敭銆?br />
閫氬父錛屼竴涓熀鏈殑 band 瀵硅薄鐨勬敞鍐岃〃欏圭洰鏄細

HKEY_CLASSES_ROOT
CLSID
{浣犵殑 band 瀵硅薄鐨?CLSID}

銆銆(Default) = 鑿滃崟鐨勬枃瀛?
銆銆InProcServer32
銆銆銆(Default) = DLL 鐨勫叏璺緞鏂囦歡鍚?
銆銆銆ThreadingModel= Apartment

宸ュ叿鏍?bands 榪樺繀欏繪妸瀹冧滑鐨?CLSID 娉ㄥ唽鍒?IE 鐨勬敞鍐岃〃涓?br />
鍦?HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Toolbar 涓嬬粰鍑?CLSID 浣滀負閿悕錛岃屽叾閿兼槸琚拷鐣ョ殑銆?br />
HKEY_LOCAL_MACHINE
Software
Microsoft
Internet Explorer
Toolbar

銆銆{浣犵殑 band 瀵硅薄鐨?CLSID}

銆銆榪樻湁鍑犱釜鍙夌殑娉ㄥ唽琛ㄩ」鐩?渚嬪瓙紼嬪簭騫朵笉鏄繖鏍峰疄鐜扮殑)銆傛瘮濡傦紝浣犳兂璁╂祻瑙堝櫒鏍忔樉紺?HTML 鐨勮瘽錛屽繀欏昏濡備笅璁劇疆娉ㄥ唽琛細

HKEY_CLASSES_ROOT
CLSID
{浣犵殑 Band 瀵硅薄鐨?CLSID}
Instance
CLSID
銆銆
(Default) = {4D5C8C2A-D075-11D0-B416-00C04FB90376}

鍚屾椂錛屽鏋滆鎸囧畾涓涓湰鍦扮殑 HTML 鏂囦歡錛岄偅涔堣濡備笅璁劇疆錛?

HKEY_CLASSES_ROOT
CLSID
{浣犵殑 Band 瀵硅薄鐨?CLSID}
Instance
InitPropertyBag
銆銆
Url

銆銆鍙﹀錛岃繕鍙互鎸囧畾嫻忚鍣ㄦ爮鐨勫鍜岄珮錛屽綋鐒訛紝瀹冩槸渚濊禆浜庤繖涓爮鏄旱鍚戣繕鏄í鍚戠殑銆傚叾瀹炶繖涓」鐩棤鎵璋擄紝鍥犱負褰撶敤鎴瘋皟鏁翠簡嫻忚鍣ㄦ爮鐨勫ぇ灝忓悗錛屼細鑷姩淇濆瓨鍦ㄦ敞鍐岃〃涓殑銆?br />
HKEY_CURRENT_USER
Software
Microsoft
Internet Explorer
Explorer Bars
{浣犵殑 Band 瀵硅薄鐨?CLSID}
銆銆
BarSize

銆銆BarSize 閿殑綾誨瀷蹇呴』鏄?REG_BINARY 綾誨瀷錛屽畠鏈?涓瓧鑺傘傚乏璧峰墠4涓瓧鑺傦紝鏄敤16榪涘埗琛ㄧず鐨勫儚绱犲搴︽垨楂樺害錛屽悗4涓瓧鑺備繚鐣欙紝浣犲簲璇ヨ緗負0銆備笅闈㈡槸涓涓彲浠ュ湪嫻忚鍣ㄦ爮涓婃樉紺?HTML 鏂囦歡鐨勫叏閮ㄦ敞鍐岃〃欏圭洰鐨勪緥瀛愶紝榛樿瀹藉害涓?91錛?x123錛変釜鍍忕礌鐐癸細

HKEY_CLASSES_ROOT
CLSID
{浣犵殑 Band 瀵硅薄鐨?CLSID}

銆(Default) = 鑿滃崟鏂囧瓧
InProcServer32
銆銆(Default) = DLL 鐨勫叏璺緞鏂囦歡鍚?
銆銆ThreadingModel= Apartment
Instance
CLSID

銆銆(Default) = {4D5C8C2A-D075-11D0-B416-00C04FB90376}
InitPropertyBag
銆銆Url= 浣犵殑 HTML 鏂囦歡鍚?br />
HKEY_CURRENT_USER
Software
Microsoft
Internet Explorer
Explorer Bars
{浣犵殑 Band 瀵硅薄鐨?CLSID}

銆銆BarSize= 23 01 00 00 00 00 00 00

銆銆瀵逛簬娉ㄥ唽琛ㄧ殑璁劇疆錛岀敤 ATL 瀹炵幇鍏跺疄鏄紓甯哥畝鍗曠殑銆傛墦寮宸ョ▼鐨?xxx.rgs 鏂囦歡錛屽茍鎵嬪伐緙栬緫涓涓嬪氨鍙互浜嗐?涓嬮潰榪欎釜鏂囦歡婧愮爜錛屾槸渚嬪瓙紼嬪簭涓?IE 宸ュ叿鏍忕殑娉ㄥ唽琛ㄦ牱寮忥紝HKLM 鏄渶瑕佹墜宸ユ坊鍔犵殑錛屽洜涓哄畠涓嶄嬌鐢ㄧ粍浠剁被鍨嬫柟寮忔敞鍐屻傝屽浜庡叾瀹冪被鍨嬬殑 band 瀵硅薄鍙鍦ㄧ被澹版槑涓坊鍔狅細

BEGIN_CATEGORY_MAP(Cxxx)			// 鍚戞敞鍐岃〃涓敞鍐?COM 綾誨瀷
	IMPLEMENTED_CATEGORY(CATID_InfoBand)	// 鍨傜洿鏍峰紡鐨勬祻瑙堝櫒鏍?
END_CATEGORY_MAP()		
IE 宸ュ叿鏍忕被鍨?band 瀵硅薄鐨勨?rgs鈥濇枃浠?pre>HKCR // 榪欎釜欏圭洰鏄?ATL 甯綘鐢熸垚鐨勶紝浣犲彧瑕佹墜宸ヤ慨鏀光滆彍鍗曚笂鐨勬枃瀛椻濆氨鍙互浜? { Bands.ToolBar.1 = s ''ToolBar Class'' { CLSID = s ''{ 浣犵殑 CLSID }'' } Bands.ToolBar = s ''ToolBar Class'' { CLSID = s ''{ 浣犵殑 CLSID }'' CurVer = s ''Bands.ToolBar.1'' } NoRemove CLSID { ForceRemove { 浣犵殑 CLSID } = s ''鐢ㄥ湪鑿滃崟涓婄殑鏂囧瓧(&T)'' { ProgID = s ''Bands.ToolBar.1'' VersionIndependentProgID = s ''Bands.ToolBar'' ForceRemove ''Programmable'' InprocServer32 = s ''%MODULE%'' { val ThreadingModel = s ''Apartment'' } ''TypeLib'' = s ''{xxxx-xxxx-xxxxxxxxxxxxxxx}'' } } } HKLM // 榪欎釜欏圭洰鏄墜宸ユ坊鍔犵殑IE宸ュ叿鏍忔墍鐗規湁鐨? { Software { Microsoft { ''Internet Explorer'' { NoRemove Toolbar { ForceRemove val { 浣犵殑 CLSID } = s ''闅忎究緇欎釜璇存槑鎬ф枃瀛椾覆'' } } } } } 鍥涖?ATL 瀹炵幇
銆銆涓嬭澆浠g爜鍚?VC 6.0 宸ョ▼)錛岃鍙傜収鍓嶉潰鐨勮鏄庝粩緇嗛槄璇伙紝浠g爜涓篃鏈変竴浜涘叧閿偣鐨勬敞閲娿傚鏋滄兂榪愯錛屽垯鍙互鐢?regsvr32.exe 榪涜娉ㄥ唽錛岀劧鍚庢墦寮 IE 嫻忚鍣ㄦ垨璧勬簮嫻忚鍣ㄥ氨鍙互鐪嬪埌鏁堟灉浜嗐傚鏋滄兂鑷繁瀹炶返涓涓嬶紝鍙互鎸夌収濡備笅鐨勬楠ゆ瀯閫犲伐紼嬶細

4.1銆寤虹珛涓涓?ATL DLL 宸ョ▼
4.2銆娣誨姞 New ATL Object...錛岄夋嫨 Internet Explorer Object錛岄夎繖涓被鍨嬬殑鐩殑鏄鍚戝緇欐垜浠坊鍔?IObjectWithSite 鐨勬敮鎸併傚鏋滀綘浣跨敤鐨勬槸 .net 鐜錛屽垯涓嶈蹇樿閫夋嫨鏀寔榪欎釜鎺ュ彛銆?br />


4.3銆杈撳叆瀵硅薄鍚嶇О錛屾瘮濡傛垜鎯沖緩绔嬩竴涓瀭鐩寸殑嫻忚鍣ㄦ爮錛屼笉濡ㄥ彨瀹?VerBar



4.4銆綰跨▼妯″瀷蹇呴』閫夋嫨 Apartment錛屾帴鍙g被鍨嬬殑閫夋嫨鏃犳墍璋擄紝鐪嬩綘鎯充笉鎯蟲敮鎸?IDispatch 鎺ュ彛鍔熻兘浜嗐傚湪渚嬪瓙紼嬪簭涓殑鍨傜洿嫻忚鍣ㄦ爮涓紝鐢變簬鎯蟲洿綆鍗曠殑鎿嶇旱 IE 鍜屼粠 IE 涓帴鍙椾簨浠訛紙榪炴帴鐐癸級錛岄夋嫨 Dual 鏄繀瑕佺殑銆傝仛鍚堥夐」錛屼綘鍙鍒夋嫨 Only 灝卞彲浠ヤ簡銆?br />


4.5銆灞曠幇浣犳棤絀風殑鏅烘収錛屽紑濮嬭緭鍏ョ▼搴忓惂銆傚鏋滄槸 Debug 鏂瑰紡緙栬瘧錛屽彲鑳戒細鍑虹幇涓涓繛鎺ラ敊璇紝鎶ュ憡鎵句笉鍒癬AtlAxCreateControl錛岄偅涔堜綘瑕佸湪鑿滃崟 Project\Settings...\Link 涓鍔犲 Atl.lib 鐨勮繛鎺ャ傛垨鑰呬嬌鐢?#pragma comment ( lib, "atl" )鍔犲叆榪炴帴搴撱?br />4.6銆濡傛灉鎯寵皟璇曚唬鐮侊紝鍦ㄨ彍鍗?Project\Settings...\Debug 涓緭鍏?IE 鐨勮礬寰勫悕縐幫紝姣斿錛氣淐:\Program Files\Internet Explorer\IEXPLORE.EXE鈥濓紝鐒跺悗灝卞彲浠ヨ窡韙柇鐐硅皟璇曚簡銆?緙栬瘧鍜岃皟璇曟闈㈠伐鍏鋒爮鐨?band 瀵硅薄錛屾槸闈炲父楹葷儲鐨勶紝鍥犱負璁$畻鏈哄惎鍔ㄦ椂鑷姩榪愯 Shell錛岃?Shell 灝變細鍔犺澆媧誨姩鐨勬闈㈠璞°?br />
浜斻佺粨鏉熻
濂戒簡錛屽埌榪欓噷錛屽氨鍒拌繖閲屼簡銆傜澶у瀛︿範蹇箰^_^

jay 2007-03-11 14:35 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              午夜精品久久久99热福利| 亚洲狠狠婷婷| 亚洲国产精品久久久久秋霞蜜臀| 免费观看亚洲视频大全| 亚洲精品欧洲| 亚洲永久视频| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲精品婷婷| 国产亚洲永久域名| 亚洲电影免费| 国产精品色婷婷久久58| 男人的天堂亚洲在线| 欧美日韩成人在线视频| 久久夜色精品亚洲噜噜国产mv| 欧美激情区在线播放| 欧美一区三区二区在线观看| 欧美成人伊人久久综合网| 亚洲欧美国产三级| 亚洲午夜国产一区99re久久| 国产永久精品大片wwwapp| 亚洲国产精品t66y| 国产精品亚洲激情| 亚洲美女诱惑| 亚洲午夜一区二区| 久久高清福利视频| 亚洲欧美大片| 欧美精品v国产精品v日韩精品| 久久国内精品自在自线400部| 韩日在线一区| 中国av一区| 亚洲品质自拍| 久久看片网站| 久久精品国产亚洲a| 国产精品女人毛片| 亚洲精品亚洲人成人网| 在线免费观看视频一区| 久久av红桃一区二区小说| 亚洲免费在线看| 欧美人与禽猛交乱配| 欧美激情1区2区3区| 黄色成人片子| 久久人体大胆视频| 久久久久成人精品| 国产欧美一区二区三区在线老狼| 一本色道久久综合亚洲二区三区| 亚洲人成在线观看网站高清| 久久综合999| 鲁大师成人一区二区三区| 国产亚洲a∨片在线观看| 亚洲欧美三级伦理| 性亚洲最疯狂xxxx高清| 国产免费亚洲高清| 午夜精彩国产免费不卡不顿大片| 国产一区二区三区在线观看精品 | 亚洲视频1区| 亚洲一级二级在线| 欧美日韩在线观看一区二区三区| 亚洲美女毛片| 亚洲欧美日韩综合aⅴ视频| 欧美日韩在线不卡| 亚洲视频999| 久久激情综合| 在线成人中文字幕| 欧美激情视频网站| 99re6这里只有精品| 亚洲欧美国内爽妇网| 国产精品三区www17con| 羞羞答答国产精品www一本| 久久亚洲综合色| 亚洲国产日韩在线| 欧美日韩网址| 亚洲高清123| 国产精品视频九色porn| 亚洲在线免费| 欧美成人tv| 亚洲看片网站| 国产精品久久久久aaaa九色| 午夜欧美不卡精品aaaaa| 狂野欧美一区| 亚洲性视频网站| 国产欧美一区二区色老头| 久久亚洲欧洲| 一本色道久久综合| 久久久久一区二区| 亚洲三级性片| 国产精品久久77777| 久久久www成人免费毛片麻豆| 中文精品一区二区三区| 国产欧美一区二区精品性色| 免费成人在线观看视频| 亚洲欧美成aⅴ人在线观看| 久久综合网hezyo| 一区二区三区视频在线| 国产一区二区三区精品久久久| 一区二区三区在线观看国产| 欧美精品一区在线发布| 亚洲欧美精品在线| 亚洲精品1区2区| 先锋影音国产精品| 亚洲美女黄色| 伊人男人综合视频网| 国产精品成人免费视频| 玖玖在线精品| 性欧美大战久久久久久久免费观看| 欧美激情在线播放| 久久国产天堂福利天堂| 亚洲久久在线| 影院欧美亚洲| 国产精品无人区| 欧美日韩成人综合在线一区二区| 亚洲欧美制服另类日韩| 亚洲国产综合视频在线观看| 久久久美女艺术照精彩视频福利播放| 在线视频精品一| 亚洲精品免费网站| 一区二区在线观看视频| 国产色爱av资源综合区| 国产精品久久福利| 亚洲免费在线观看视频| 久久久久久久一区二区三区| 99国产精品久久久| 国语自产精品视频在线看一大j8| 亚洲一区二区高清| 亚洲精品国产无天堂网2021| 美日韩丰满少妇在线观看| 韩国免费一区| 国产精品青草久久久久福利99| 欧美精品三级日韩久久| 麻豆av一区二区三区| 久久精品国产99精品国产亚洲性色| 亚洲午夜一区二区| 亚洲国产99精品国自产| 免费黄网站欧美| 老司机成人网| 免费观看日韩av| 欧美国产精品劲爆| 亚洲欧美日韩另类精品一区二区三区| 日韩视频免费观看| 亚洲裸体在线观看| aa级大片欧美| 最新亚洲激情| 99精品福利视频| 中国成人亚色综合网站| 亚洲电影第1页| 麻豆精品视频在线观看视频| 欧美一区二区精品久久911| 亚洲福利视频一区| 99在线精品视频| 欧美人与禽性xxxxx杂性| 欧美韩日一区二区三区| 国产欧美日韩视频一区二区三区| 欧美91视频| 尤物yw午夜国产精品视频| 亚洲电影免费在线观看| 久久精品视频播放| 午夜精品久久久久久久99热浪潮| 国自产拍偷拍福利精品免费一| 激情校园亚洲| 久久综合色88| 欧美一级久久久久久久大片| 久热精品视频| 欧美不卡视频一区发布| 亚洲福利久久| 91久久精品久久国产性色也91| 亚洲第一精品久久忘忧草社区| 亚洲国产成人tv| 一本久道久久综合狠狠爱| 一区二区免费在线视频| 亚洲免费视频在线观看| 久久久.com| 欧美不卡三区| 欧美四级剧情无删版影片| 国产精品久久久久久五月尺| 国产亚洲精品7777| 欧美日本高清| 性欧美xxxx大乳国产app| 亚洲电影免费观看高清完整版在线观看| 国产日韩欧美精品一区| 韩日精品视频| 99视频精品免费观看| 亚洲男人影院| 裸体女人亚洲精品一区| 亚洲激情图片小说视频| 亚洲欧美日韩国产一区二区三区| 久久精品伊人| 欧美日韩一卡| 一区二区三区在线视频观看| 日韩午夜在线观看视频| 久久久精品一品道一区| 亚洲级视频在线观看免费1级| 亚洲影院免费观看| 欧美99在线视频观看| 国产精品视区| 99成人在线| 久久综合色婷婷| 亚洲中字在线| 欧美精品一区二区三区很污很色的| 国产亚洲一级高清| 亚洲深夜影院| 欧美激情 亚洲a∨综合|