锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久婷婷久久一区二区三区,欧美高清自拍一区,国产伦精品一区二区三区免费http://m.shnenglu.com/mydriverc/category/4807.html濡傛灉鎯抽寰楅珮錛屽氨璇ユ妸鍦板鉤綰垮繕鎺?/description>zh-cnMon, 19 May 2008 13:37:05 GMTMon, 19 May 2008 13:37:05 GMT60COM 緇勪歡璁捐涓庡簲鐢紙涓錛?---閲嶈涓閬?鍒湁涓鐣劅瑙?/title><link>http://m.shnenglu.com/mydriverc/articles/29061.html</link><dc:creator>鏃呴?/dc:creator><author>鏃呴?/author><pubDate>Tue, 31 Jul 2007 02:20:00 GMT</pubDate><guid>http://m.shnenglu.com/mydriverc/articles/29061.html</guid><wfw:comment>http://m.shnenglu.com/mydriverc/comments/29061.html</wfw:comment><comments>http://m.shnenglu.com/mydriverc/articles/29061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mydriverc/comments/commentRss/29061.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mydriverc/services/trackbacks/29061.html</trackback:ping><description><![CDATA[ <p> <b>涓銆佸墠璦</b> <br /> <br />銆銆鍏厓涓涔濅節浜斿勾鏌愪釜澶滈粦椋庨珮鐨勬櫄涓婏紝鎴戠殑涓浣嶈佸笀璺熸垜璇達細鈥滃皬鏉ㄥ憖錛屼互鍚庡啓紼嬪簭灝卞拰鎼Н鏈ㄤ竴鏍峰暒銆備綘璧跺揩瀛︿範涓浜汷LE鐨勬妧鏈惂......鈥濓紝褰撴椂鎴戝績閲屽氨瀵繪?錛氣滃紑浠涔堢帺絎戯紵鎼Н鏈ㄦ柟寮忓啓紼嬪簭錛熷啀榪?00騫村惂......鈥濓紝浣嗕綔涓轟竴鍚嶅惉璇濈殑濂藉鐢燂紝鎴戝紑濮嬪湪涔﹀簵閲屸滆竻鎽糕濓紙娉?錛夋湁鍏砄LE鐨勪功綾嶏紙娉?錛夈傚姛澶笉璐熸湁蹇冧漢錛岀粓浜庝拱鍒頒簡鎴戠殑絎竴鏈珻OM涔︺奜LE2 楂樼駭緙栫▼鎶鏈嬶紝榪欐湰800澶氶〉鐨勫ぇ甯冨ご鑺辮垂浜嗘垜1/5鐨勬湀宸ヨ祫鍛......浜庢槸寮濮嬫棩澶滆曡.....<br />聽聽聽 鍔熷か涓嶈礋鏈夊績浜猴紝鎴戝潥鎸佽瀹屼簡鍏ㄩ儴钁椾綔錛屾劅鎯蟲槸錛氳繖鏈功錛屽湪璇翠粈涔堝憪錛?br />聽聽聽 鍔熷か涓嶈礋鏈夊績浜猴紝鎴戝張璇誨畬浜嗕竴閬嶅ぇ甯冨ご錛屾劅鎯蟲槸錛氬挸~~~錛屾病鎳傦紒<br />聽聽聽 鍔熷か涓嶈礋鏈夊績浜猴紝鎴戝啀錛屾垜鍐?鎴戝啀璇?... 鎰熸兂鏄細鍝~~錛岃鎳備簡涓鐐圭偣鍟︼紝鍝堝搱鍝堛?br />聽聽聽 ......聽 ......<br />聽聽聽 鍔熷か涓嶈礋鏈夊績浜猴紝鎴戠粓浜庯紝鎴戠粓浜庢噦浜嗐?br />聽聽聽 800欏電殑涔﹀鐜板湪鐨勬垜鏉ヨ錛屽叾瀹炰篃灝?0鍑犻〉鏈夌敤銆傚埌榪欐椂鍊欐墠浣撲細鍑轟粈涔堝彨鈥滀功瓚婅瓚婅杽鈥濈殑閬撶悊浜嗐傚埌鍚庢潵錛岃兘涔板埌鐨勪功涔熷浜嗭紝涓婄綉涔熸洿鏂逛究鏇翠究瀹滀簡......<br /><br />銆銆涓轟簡璁¬CKBASE涓婄殑鏈嬪弸錛屼笉鍐嶇粡鍘嗘垜鏇劇粡鐨勭棝鑻︺佷笉鍐嶉噸韞堟垜鈥滄棤澶磋媿铦団濊埇鎺㈢儲鐨勮壈杈涖佷負浜哣CKBASE鐨勮摤鍕冨彂灞曘佷負浜嗕腑鍥借蔣浠朵簨涓氱殑鑵鵑錛堢碂緋曪紝鍚圭殑澶篃楂樹簡錛?.....鎴戞墦綆楄妭綰︿竴浜涘湪 BBS 涓婅禋鍒嗙殑鏃墮棿錛屽啓涓郴鍒楄鏂囷紝灝卞彨鈥淐OM緇勪歡璁捐涓庡簲鐢ㄢ濆惂銆備粖澶╂槸絎竴閮ㄥ垎鈥斺旇搗婧愩?br /><br /><b>浜屻佹枃浠剁殑瀛樺偍</b><br /><br />銆銆浼犺350騫村墠錛岀墰欏胯鑻規灉鐮稿埌浜嗗ご錛屼簬鏄彂鐜頒簡涓囨湁寮曞姏銆備絾鍒頒簡浜屽崄涓涓栫邯鐨勭幇鍦紝浠諱綍涓涓妧鏈殑鍙戞槑鍜屽彂灞曪紝宸茬粡涓嶅啀渚濋潬鍦d漢鐏靛厜鐨勪竴闂傛妧鏈殑榪涙杞屾槸琚ぞ浼氱殑闇姹傘佸晢涓氱殑鍒╃泭銆佺珵浜夌殑鍘嬪姏銆佽涓氱殑娓楅忕瓑鎺ㄥ姩鐨勩傚井杞湪Windows騫沖彴涓婄殑緇勪歡鎶鏈篃涓嶄緥澶栵紝瀹冪殑鍙戞槑錛屾湁鍏跺繀鐒跺洜绱犮備粈涔堟槸榪欎釜鍥犵礌閭o紵絳旀鏄斺旀枃浠剁殑瀛樺偍銆?br />銆銆鎵撳紑璁頒簨鏈▼搴忥紝杈撳叆浜嗕竴綃囨枃绔犲悗錛屼繚瀛樸傗斺旇繖鏍風殑鏂囦歡鍙滈潪緇撴瀯鍖栨枃浠垛濓紱<br />銆銆鎵撳紑鐢靛瓙琛ㄦ牸紼嬪簭錛岃緭鍏ヤ竴涓彮鐨勫鐢熷鍚嶅拰鑰冭瘯鎴愮嘩錛屼繚瀛樸傗斺旇繖鏍風殑鏂囦歡鍙滄爣鍑嗙粨鏋勫寲鏂囦歡鈥濓紱<br />銆銆鍦ㄦ垜浠啓鐨勭▼搴忎腑錛岄渶瑕佹妸鐗瑰畾鐨勬暟鎹寜鐓т竴瀹氱殑緇撴瀯鍜岄『搴忓啓鍒版枃浠朵腑淇濆瓨銆傗斺旇繖鏍風殑鏂囦歡鍙滆嚜瀹氫箟緇撴瀯鍖栨枃浠垛濓紱錛堟瘮濡?*.bmp 鏂囦歡錛?br />銆銆浠ヤ笂涓夌綾誨瀷鐨勬枃浠訛紝澶у閮借鐨勫浜嗐傞偅涔堟枃浠跺瓨鍌ㄥ氨渚濋潬涓婅堪鐨勬柟寮忚兘婊¤凍鎵鏈夌殑搴旂敤闇姹傚悧錛熸仼~~~錛岃嚦灝戜粠璁$畻鏈哄彂鏄庡悗鐨?0澶氬勾鏉ワ紝涓鐩存槸澶熺敤鐨勪簡銆傚樋鍢匡紝涓嬮潰鐪嬬湅鍟嗕笟鍒╃泭鐨勬帹鍔ㄤ綔鐢紝瀵規枃浠?鐨勫瓨鍌ㄥ艦寮忎駭鐢熶簡浠涔堝彉鍖栧惂銆?0宀佷互涓婄殑鏈嬪弸錛屾垜浼拌浠ュ墠閮戒嬌鐢ㄨ繃浠ヤ笅鍑犱釜钁楀悕鐨勮蔣浠訛細WordStar錛堢嫭闇窪OS涓嬬殑鑻辨枃緙栬緫杞歡錛夛紝WPS錛堣浼悰鍐欑殑涓枃緙栬緫杞歡錛屾嵁璇村綋騫寸殑甯傚満鍗犳湁鐜囬珮杈?0%錛屽悇縐嶈綆楁満鍩硅鐝殑蹇呬慨璇劇▼錛夛紝LOTUS-123錛堣幉鑺卞叕鍙稿嚭鍝佺殑鐢靛瓙琛ㄦ牸杞歡錛?.....<br />聽聽聽 寰蔣鍦ㄦ垚鍔熷湴鎺ㄥ嚭 Windows 3.1 鍚庯紝寮濮嬪瀭娑庢闈㈠姙鍏嚜鍔ㄥ寲杞歡棰嗗煙銆傚井杞殑 OFFICE 寮鍙戦儴闂紝鍚勫皬緇勫垎鍒嫭绔嬪湴寮鍙戜簡 WORD 鍜?EXCEL 絳夎蔣浠訛紝騫墮噰鐢ㄢ滆嚜瀹氫箟緇撴瀯鈥濇柟寮忥紝瀵規枃浠惰繘琛屽瓨鍌ㄣ傚湪嬋鐑堢殑甯傚満绔炰簤涓嬶紝涓轟簡鎵撹觸绔炰簤瀵規墜錛屽井杞嚜鐒跺湴浜х敓浜嗕竴涓康澶?-----濡傛灉鎴戣兘鍦?WORD 紼嬪簭涓祵鍏?EXCEL錛岄偅涔堢敤鎴峰湪璐拱浜嗘垜 WORD 杞歡鐨勬儏鍐典笅錛屼笉灝辨病鏈夊繀瑕佸啀涔?LOTUS-123 浜嗗悧錛燂紒鈥滄伓姣掆濓紙涓浗寰蔣鐨勫悓蹇椾滑鐪嬪埌浜嗚繖涓瘝錛屼笉瑕佹縺鍔紝鎴戞槸鍔犱簡寮曞彿鐨勫憖錛夌殑璁″垝浜х敓鍚庯紝浠栦滑寮濮嬩簡瀹炴柦宸ヤ綔錛岃繖灝辨槸 COM 鐨勫墠韜?OLE 鐨勮搗婧愶紙娉?錛夈備絾绔嬪埢灝遍亣鍒頒簡涓涓弗閲嶇殑鎶鏈棶棰橈細闇瑕佹妸 WORD 浜х敓鐨?DOC 鏂囦歡鍜?EXCEL 浜х敓鐨?XLS 鏂囦歡淇濆瓨鍦ㄤ竴璧楓?br />銆 </p> <table cellspacing="1" width="100%" border="1"> <tbody> <tr> <td width="33%"> <p align="center">鏂規</p> </td> <td width="31%"> <p align="center">浼樼偣</p> </td> <td width="103%"> <p align="center">緙虹偣</p> </td> </tr> <tr> <td width="33%">寤虹珛涓涓瓙鐩綍錛屾妸 DOC銆乆LS 瀛樺偍鍦ㄨ繖鍚屼竴涓瓙鐩綍涓?/td> <td width="31%">鏁版嵁闅旂鎬уソ錛學ORD 涓嶇敤浜嗚В EXCEL 鐨勫瓨鍌ㄧ粨鏋勶紱瀹規槗鎵╁睍銆?/td> <td width="103%">緇撴瀯澶澗鏁o紝瀹規槗閫犳垚鏁版嵁鐨勬崯鍧忔垨涓㈠け銆?br />涓嶆槗鎼哄甫銆?/td> </tr> <tr> <td width="33%">淇敼鏂囦歡瀛樺偍緇撴瀯錛屽湪DOC緇撴瀯鍩虹涓婃墿灞曞嚭鍖呭 XLS 鐨勭粨鏋勩?/td> <td width="31%">緇撴瀯绱у瘑錛屽鏄撴惡甯﹀拰緇熶竴綆$悊銆?/td> <td width="103%">WORD 鐨勫紑鍙戜漢鍛橀渶瑕侀氭檽 EXCEL 鐨勫瓨鍌ㄦ牸寮忥紱緙哄皯鎵╁睍鎬э紝鎬諱笉鑳芥柊鍔犱竴涓被鍨嬪氨鎵╁睍涓涓嬬粨鏋勫惂錛燂紒</td> </tr> </tbody> </table> <p>聽聽聽 浠ヤ笂涓や釜鏂規錛岄兘鏈変弗閲嶇殑緙洪櫡錛屾庝箞瑙e喅閭o紵濡傛灉鑳芥湁涓涓柊鏂規錛岃兘澶熷悎騫跺墠涓や釜鏂規鐨勪紭鐐癸紝娑堢伃緙虹偣錛岃澶氬ソ鍛......寰蔣鏄綔紓佺洏***浣滅郴緇熻搗瀹剁殑錛屼簬鏄緢鑷劧鍦頒粬浠彁鍑轟簡涓涓潪甯稿畬緹庣殑璁捐鏂規錛岄偅灝辨槸鎶婄鐩樻枃浠剁殑綆$悊鏂瑰紡縐繪鍒版枃浠朵腑浜?-----澶嶅悎鏂囦歡錛屼織縐扳滄枃浠朵腑鐨勬枃浠剁郴緇熲濄傝繛寰蔣褰撳勾閮芥病鏈夋兂鍒幫紝灝辮繖涔堜竴涓畝鍗曠殑鎯蟲硶錛屽眳鐒舵渶鍚庡氨婕斿彉鍑轟簡 COM 緇勪歡紼嬪簭璁捐鐨勬柟娉曘傚彲浠ヨ錛屽鍚堟枃浠舵槸 COM 鐨勫熀鐭熾備笅鍥炬槸紓佺洏鏂囦歡緇勭粐鏂瑰紡涓庡鍚堟枃浠剁粍緇囨柟寮忕殑綾繪瘮鍥撅細<br /><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.vckbase.com/document/journal/vckbase43/images/stmtutpic1.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border="0" /><br />鍥句竴銆佸乏渚ц〃紺轟竴涓鐩樹笅鐨勬枃浠剁粍緇囨柟寮忥紝鍙充晶琛ㄧず涓涓鍚堟枃浠跺唴閮ㄧ殑鏁版嵁緇勭粐鏂瑰紡銆?br /><br /><b>涓夈佸鍚堟枃浠剁殑鐗圭偣</b></p> <ol> <li>澶嶅悎鏂囦歡鐨勫唴閮ㄦ槸浣跨敤鎸囬拡鏋勯犵殑涓媯墊爲榪涜綆$悊鐨勩傜紪鍐欑▼搴忕殑鏃跺欒娉ㄦ剰錛岀敱浜庝嬌鐢ㄧ殑鏄崟鍚戞寚閽堬紝鍥犳褰撳仛瀹氫綅***浣滅殑鏃跺欙紝鍚戝悗瀹氫綅姣斿悜鍓嶅畾浣嶈蹇紱 </li> <li>澶嶅悎鏂囦歡涓殑鈥滄祦瀵硅薄鈥濓紝鏄湡姝d繚瀛樻暟鎹殑絀洪棿銆傚畠鐨勫瓨鍌ㄥ崟浣嶄負512瀛楄妭銆備篃灝辨槸璇達紝鍗充嬌浣犲湪嫻佷腑鍙繚瀛樹簡涓涓瓧鑺傜殑鏁版嵁錛屽畠涔熻鍗犳嵁512瀛楄妭鐨勬枃浠剁┖闂淬傚晩~~~錛岃繖涔熷お嫻垂浜嗗憖錛熶笉嫻垂錛佸洜涓烘枃浠朵繚瀛樺湪紓佺洏涓婏紝鍗充嬌涓涓瓧鑺備篃榪樿鍗犵敤涓涓滅皣鈥濈殑絀洪棿閭o紱 </li> <li>涓嶅悓鐨勮繘紼嬶紝鎴栧悓涓涓繘紼嬬殑涓嶅悓綰跨▼鍙互鍚屾椂璁塊棶涓涓鍚堟枃浠剁殑涓嶅悓閮ㄥ垎鑰屼簰涓嶅共鎵幫紱 </li> <li>澶у閮芥湁榪欐牱鐨勪綋浼氾紝褰撻渶瑕佸線涓涓枃浠朵腑鎻掑叆涓涓瓧鑺傜殑璇濓紝闇瑕佸鏁翠釜鏂囦歡榪涜***浣滐紝闈炲父鐑︾悙騫朵笖鏁堢巼浣庝笅銆傝屽鍚堟枃浠跺垯鎻愪緵浜嗛潪甯告柟渚跨殑鈥滃閲忚闂濊兘鍔涳紱 </li> <li>褰撻綣佸湴鍒犻櫎鏂囦歡錛屽鍒舵枃浠跺悗錛岀鐩樼┖闂翠細鍙樼殑寰堥浂紕庯紝闇瑕佷嬌鐢ㄧ鐩樻暣鐞嗗伐鍏瘋繘琛岄噸鏂版暣鍚堛傚拰紓佺洏綆$悊闈炲父鐩鎬技錛屽鍚堟枃浠朵篃浼氫駭鐢熻繖涓棶棰橈紝鍦ㄩ傚綋鐨勬椂鍊欎篃闇瑕佹暣鐞嗭紝浣嗘瘮杈冪畝鍗曪紝鍙璋冪敤涓涓嚱鏁板氨鍙互瀹屾垚浜嗐?</li> </ol> <p> <b>鍥涖佹祻瑙堝鍚堟枃浠?/b> <br /> <br />銆銆VC6.0 闄勫甫浜嗕竴涓伐鍏瘋蔣浠垛滃鍚堟枃浠舵祻瑙堝櫒鈥濓紝鏂囦歡鍚嶆槸鈥渧c鐩綍\Common\Tools\<strong>DFView.exe</strong>鈥濄備負浜嗘柟渚夸嬌鐢ㄨ紼嬪簭錛屽彲浠ユ妸瀹冨姞鍒板伐鍏?tools)鑿滃崟涓傛柟娉曟槸錛歍ools\Customize...\Tools鍗$墖涓鍔犳柊鐨勯」鐩傝繍琛?DFView.exe錛屽氨鍙互鎵撳紑涓涓鍚堟枃浠惰繘琛岃瀵熶簡錛堟敞4錛夈備絾濂囨殑鏄紝鍦?Microsoft Visual Studio .NET 2003 涓紝鎴戝弽鑰屾壘涓嶅埌榪欎釜宸ュ叿紼嬪簭浜?姹楋紒涓嶈繃榪欐伆濂芥彁渚涚粰澶у涓涓粌涔犵殑鏈轟細錛屽湪浣犻槄璇誨畬鏈瘒鏂囩珷騫舵帉鎻′簡緙栫▼鏂規硶鍚庯紝鑷繁鍐欎竴涓滃鍚堟枃浠舵祻瑙堢紪杈戝櫒鈥濈▼搴忥紝鍙堢粌鎵嬩簡錛岃繕鏈夊疄鐢ㄧ殑浠峰箋?br /><br /><b>浜?/b><b>銆佸鍚堟枃浠跺嚱鏁?/b><br /><br />銆銆澶嶅悎鏂囦歡鐨勫嚱鏁板拰紓佺洏鐩綍鏂囦歡鐨?**浣滈潪甯哥被浼箋傛墍鏈夎繖浜涘嚱鏁幫紝琚垎涓?縐嶇被鍨嬶細WIN API 鍏ㄥ眬鍑芥暟錛屽瓨鍌?IStorage 鎺ュ彛鍑芥暟錛屾祦 IStream 鎺ュ彛鍑芥暟銆備粈涔堟槸鎺ュ彛錛熶粈涔堟槸鎺ュ彛鍑芥暟錛熶互鍚庣殑鏂囩珷涓啀闄嗙畫浠嬬粛錛岃繖閲屽ぇ瀹跺彧瑕佹妸鈥滄帴鍙b濈湅鎴愭槸瀹屾垚涓緇勭浉鍏?**浣滃姛鑳界殑鍑芥暟闆嗗悎灝卞彲浠ヤ簡銆?br />銆 </p> <table cellspacing="1" width="100%" border="1"> <tbody> <tr> <td width="17%"> <p align="center"> <b>WIN API 鍑芥暟</b> </p> </td> <td width="46%"> <p align="center"> <b>鍔熻兘璇存槑</b> </p> </td> </tr> <tr> <td width="16%">StgCreateDocfile()</td> <td width="47%">寤虹珛涓涓鍚堟枃浠訛紝寰楀埌鏍瑰瓨鍌ㄥ璞?/td> </tr> <tr> <td width="16%">StgOpenStorage()</td> <td width="47%">鎵撳紑涓涓鍚堟枃浠訛紝寰楀埌鏍瑰瓨鍌ㄥ璞?/td> </tr> <tr> <td width="16%">StgIsStorageFile()</td> <td width="46%">鍒ゆ柇涓涓枃浠舵槸鍚︽槸澶嶅悎鏂囦歡</td> </tr> <tr> <td width="100%" colspan="2"> <p align="center">銆</p> </td> </tr> <tr> <td width="16%"> <p align="center"> <b>IStorage 鍑芥暟</b> </p> </td> <td width="46%"> <p align="center"> <b>鍔熻兘璇存槑</b> </p> </td> </tr> <tr> <td width="16%">CreateStorage()</td> <td width="46%">鍦ㄥ綋鍓嶅瓨鍌ㄤ腑寤虹珛鏂板瓨鍌紝寰楀埌瀛愬瓨鍌ㄥ璞?/td> </tr> <tr> <td width="16%">CreateStream()</td> <td width="46%">鍦ㄥ綋鍓嶅瓨鍌ㄤ腑寤虹珛鏂版祦錛屽緱鍒版祦瀵硅薄</td> </tr> <tr> <td width="16%">OpenStorage()</td> <td width="46%">鎵撳紑瀛愬瓨鍌紝寰楀埌瀛愬瓨鍌ㄥ璞?/td> </tr> <tr> <td width="16%">OpenStream()</td> <td width="46%">鎵撳紑嫻侊紝寰楀埌嫻佸璞?/td> </tr> <tr> <td width="16%">CopyTo()</td> <td width="46%">澶嶅埗瀛樺偍涓嬬殑鎵鏈夊璞″埌鐩爣瀛樺偍涓紝璇ュ嚱鏁板彲浠ュ疄鐜扳滄暣鐞嗘枃浠訛紝閲婃斁紕庣墖絀洪棿鈥濈殑鍔熻兘</td> </tr> <tr> <td width="16%">MoveElementTo()</td> <td width="46%">縐誨姩瀵硅薄鍒扮洰鏍囧瓨鍌ㄤ腑</td> </tr> <tr> <td width="16%">DestoryElement()</td> <td width="46%">鍒犻櫎瀵硅薄</td> </tr> <tr> <td width="16%">RenameElement()</td> <td width="46%">閲嶅懡鍚嶅璞?/td> </tr> <tr> <td width="16%">EnumElements()</td> <td width="46%">鏋氫婦褰撳墠瀛樺偍涓墍鏈夌殑瀵硅薄</td> </tr> <tr> <td width="16%">SetElementTimes()</td> <td width="46%">淇敼瀵硅薄鐨勬椂闂?/td> </tr> <tr> <td width="16%">SetClass()</td> <td width="46%">鍦ㄥ綋鍓嶅瓨鍌ㄤ腑寤虹珛涓涓壒孌婄殑嫻佸璞★紝鐢ㄦ潵淇濆瓨CLSID錛堟敞5錛?/td> </tr> <tr> <td width="16%">Stat()</td> <td width="46%">鍙栧緱褰撳墠瀛樺偍涓殑緋葷粺淇℃伅</td> </tr> <tr> <td width="16%">Release()</td> <td width="46%">鍏抽棴瀛樺偍瀵硅薄</td> </tr> <tr> <td width="62%" colspan="2">銆</td> </tr> <tr> <td width="16%"> <p align="center"> <b>IStream 鍑芥暟</b> </p> </td> <td width="46%"> <p align="center"> <b>鍔熻兘璇存槑</b> </p> </td> </tr> <tr> <td width="16%">Read()</td> <td width="46%">浠庢祦涓鍙栨暟鎹?/td> </tr> <tr> <td width="16%">Write()</td> <td width="46%">鍚戞祦涓啓鍏ユ暟鎹?/td> </tr> <tr> <td width="16%">Seek()</td> <td width="46%">瀹氫綅璇誨啓浣嶇疆</td> </tr> <tr> <td width="16%">SetSize()</td> <td width="46%">璁劇疆嫻佸昂瀵搞傚鏋滈鍏堢煡閬撳ぇ灝忥紝閭d箞鍏堣皟鐢ㄨ繖涓嚱鏁幫紝鍙互鎻愰珮鎬ц兘</td> </tr> <tr> <td width="16%">CopyTo()</td> <td width="46%">澶嶅埗嫻佹暟鎹埌鍙︿竴涓祦瀵硅薄涓?/td> </tr> <tr> <td width="16%">Stat()</td> <td width="46%">鍙栧緱褰撳墠嫻佷腑鐨勭郴緇熶俊鎭?/td> </tr> <tr> <td width="16%">Clone()</td> <td width="46%">鍏嬮殕涓涓祦瀵硅薄錛屾柟渚跨▼搴忎腑鐨勪笉鍚屾ā鍧?**浣滃悓涓涓祦瀵硅薄</td> </tr> <tr> <td width="16%">Release()</td> <td width="46%">鍏抽棴嫻佸璞?/td> </tr> <tr> <td width="62%" colspan="2">銆</td> </tr> <tr> <td align="middle" width="16%"> <b>WIN API 琛ュ厖鍑芥暟</b> </td> <td align="middle" width="46%"> <b>鍔熻兘璇存槑</b> </td> </tr> <tr> <td width="16%">WriteClassStg()</td> <td width="46%">鍐機LSID鍒板瓨鍌ㄤ腑錛屽悓IStorage::SetClass()</td> </tr> <tr> <td width="16%">ReadClassStg()</td> <td width="46%">璇誨嚭WriteClassStg()鍐欏叆鐨凜LSID錛岀浉褰撲簬綆鍖栬皟鐢↖Storage::Stat()</td> </tr> <tr> <td width="16%">WriteClassStm()</td> <td width="46%">鍐機LSID鍒版祦鐨勫紑濮嬩綅緗?/td> </tr> <tr> <td width="16%">ReadClassStm()</td> <td width="46%">璇誨嚭WriteClassStm()鍐欏叆鐨凜LSID</td> </tr> <tr> <td width="16%">WriteFmtUserTypeStg()</td> <td width="46%">鍐欏叆鐢ㄦ埛鎸囧畾鐨勫壀璐存澘鏍煎紡鍜屽悕縐板埌瀛樺偍涓?/td> </tr> <tr> <td width="16%">ReadFmtUserTypeStg()</td> <td width="46%">璇誨嚭WriteFmtUserTypeStg()鍐欏叆鐨勪俊鎭傛柟渚垮簲鐢ㄧ▼搴忓揩閫熷垽鏂槸鍚︽槸瀹冮渶瑕佺殑鏍煎紡鏁版嵁銆?/td> </tr> <tr> <td width="16%">CreateStreamOnHGlobal()</td> <td width="46%">鍐呭瓨鍙ユ焺 HGLOBAL 杞崲涓烘祦瀵硅薄</td> </tr> <tr> <td width="16%">GetHGlobalFromStream()</td> <td width="46%">鍙栧緱CreateStreamOnHGlobal()璋冪敤涓嬌鐢ㄧ殑鍐呭瓨鍙ユ焺</td> </tr> </tbody> </table> <p>涓轟簡璁╁ぇ瀹跺揩閫熷湴嫻忚鍜屾帉鎻″熀鏈柟娉曪紝涓婇潰鎵鍒楄〃鐨勫嚱鏁板茍涓嶆槸鍏ㄩ儴錛屾垜鐪佺暐浜嗏滀簨鍔♀濆嚱鏁板拰鏈疄鐜板嚱鏁伴儴鍒嗐傛洿鍏ㄩ潰鐨勪粙緇嶏紝璇烽槄璇?MSDN銆?br />聽聽聽 涓嬮潰紼嬪簭鐗囨錛屾紨紺轟簡涓浜涘熀鏈嚱鏁板姛鑳藉拰璋冪敤鏂規硶銆偮?<br />紺轟緥涓錛氬緩绔嬩竴涓鍚堟枃浠訛紝騫跺湪鍏朵笅寤虹珛涓涓瓙瀛樺偍錛屽湪璇ュ瓙瀛樺偍涓啀寤虹珛涓涓祦錛屽啓鍏ユ暟鎹?/p> <pre>void SampleCreateDoc() { ::CoInitialize(NULL); // COM 鍒濆鍖? // 濡傛灉鏄疢FC紼嬪簭錛屽彲浠ヤ嬌鐢ˋfxOleInit()鏇夸唬 HRESULT hr; // 鍑芥暟鎵ц榪斿洖鍊? IStorage *pStg = NULL; // 鏍瑰瓨鍌ㄦ帴鍙f寚閽? IStorage *pSub = NULL; // 瀛愬瓨鍌ㄦ帴鍙f寚閽? IStream *pStm = NULL; // 嫻佹帴鍙f寚閽? hr = ::StgCreateDocfile( // 寤虹珛澶嶅悎鏂囦歡 L"c:\\a.stg", // 鏂囦歡鍚嶇О STGM_CREATE | STGM_WRITE | STGM_SHARE_EXCLUSIVE, // 鎵撳紑鏂瑰紡 0, // 淇濈暀鍙傛暟 &pStg); // 鍙栧緱鏍瑰瓨鍌ㄦ帴鍙f寚閽? ASSERT( SUCCEEDED(hr) ); // 涓轟簡紿佸嚭閲嶇偣錛岀畝鍖栫▼搴忕粨鏋勶紝鎵浠ヤ嬌鐢ㄤ簡鏂█銆? // 鍦ㄥ疄闄呯殑紼嬪簭涓垯瑕佷嬌鐢ㄦ潯浠跺垽鏂拰寮傚父澶勭悊 hr = pStg->CreateStorage( // 寤虹珛瀛愬瓨鍌? L"SubStg", // 瀛愬瓨鍌ㄥ悕縐? STGM_CREATE | STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0,0, &pSub); // 鍙栧緱瀛愬瓨鍌ㄦ帴鍙f寚閽? ASSERT( SUCCEEDED(hr) ); hr = pSub->CreateStream( // 寤虹珛嫻? L"Stm", // 嫻佸悕縐? STGM_CREATE | STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0,0, &pStm); // 鍙栧緱嫻佹帴鍙f寚閽? ASSERT( SUCCEEDED(hr) ); hr = pStm->Write( // 鍚戞祦涓啓鍏ユ暟鎹? "Hello", // 鏁版嵁鍦板潃 5, // 瀛楄妭闀垮害(娉ㄦ剰錛屾病鏈夊啓鍏ュ瓧絎︿覆緇撳熬鐨刓0) NULL); // 涓嶉渶瑕佸緱鍒板疄闄呭啓鍏ョ殑瀛楄妭闀垮害 ASSERT( SUCCEEDED(hr) ); if( pStm ) pStm->Release();// 閲婃斁嫻佹寚閽? if( pSub ) pSub->Release();// 閲婃斁瀛愬瓨鍌ㄦ寚閽? if( pStg ) pStg->Release();// 閲婃斁鏍瑰瓨鍌ㄦ寚閽? ::CoUninitialize() // COM 閲婃斁 // 濡傛灉浣跨敤 AfxOleInit(),鍒欎笉璋冪敤璇ュ嚱鏁? }</pre> <img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.vckbase.com/document/journal/vckbase43/images/stmtutpic2.jpg" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}" border="0" /> <br />鍥句簩銆佽繍琛岀ず渚嬬▼搴忎竴鍚庯紝浣跨敤 DFView.exe 鎵撳紑瑙傚療澶嶅悎鏂囦歡鐨勬晥鏋滃浘<br /><br />紺轟緥浜岋細鎵撳紑涓涓鍚堟枃浠訛紝<strong>鏋氫婦鍏舵牴瀛樺偍涓嬬殑鎵鏈夊璞?/strong>銆?br />---(<strong>鑷繁鐨勭悊瑙?鏄笉鏄瘡涓璞″氨鏄竴涓瓙瀛樺偍??)</strong><pre>錛僫 nclude <atlconv.h> // ANSI銆丮BCS銆乁NICODE 杞崲 void SampleEnum() { // 鍋囪浣犲凡緇忓仛榪?COM 鍒濆鍖栦簡 LPCTSTR lpFileName = _T( "c:\\a.stg" ); HRESULT hr; IStorage *pStg = NULL; USES_CONVERSION; // 錛堟敞6錛? LPCOLESTR lpwFileName = T2COLE( lpFileName ); // 杞崲T綾誨瀷涓哄瀛楃 hr = ::StgIsStorageFile( lpwFileName ); // 鏄鍚堟枃浠跺悧錛? if( FAILED(hr) ) return; hr = ::StgOpenStorage( // 鎵撳紑澶嶅悎鏂囦歡 lpwFileName, // 鏂囦歡鍚嶇О NULL, STGM_READ | STGM_SHARE_DENY_WRITE, 0, 0, &pStg); // 寰楀埌鏍瑰瓨鍌ㄦ帴鍙f寚閽? IEnumSTATSTG *pEnum=NULL; // 鏋氫婦鍣? hr = pStg->EnumElements( 0, NULL, 0, &pEnum ); ASSERT( SUCCEEDED(hr) ); STATSTG statstg; while( NOERROR == pEnum->Next( 1, &statstg, NULL) ) { // statstg.type 淇濆瓨鐫瀵硅薄綾誨瀷 STGTY_STREAM 鎴?STGTY_STORAGE // statstg.pwcsName 淇濆瓨鐫瀵硅薄鍚嶇О // ...... 榪樻湁鏃墮棿錛岄暱搴︾瓑寰堝淇℃伅銆傝鏌ョ湅 MSDN ::CoTaskMemFree( statstg.pwcsName ); // 閲婃斁鍚嶇О鎵浣跨敤鐨勫唴瀛橈紙娉?錛? } if( pEnum ) pEnum->Release(); if( pStg ) pStg->Release(); }</atlconv.h></pre><b>鍏佸皬緇?/b><br /><br />銆銆<strong>澶嶅悎鏂囦歡錛岀粨鏋勫寲瀛樺偍錛屾槸寰蔣緇勪歡鎬濇兂鐨勮搗婧愶紝鍦ㄦ鍩虹涓婄戶緇彂灞曞嚭浜嗘寔緇с佸懡鍚嶃丄ctiveX銆佸璞″祵鍏ャ佺幇鍦烘縺媧?.....涓緋誨垪鐨勬柊鎶鏈佹柊姒傚康</strong>銆傚洜姝ょ悊瑙?atlconv.h>鍜?atlconv.h>鎺屾彙 澶嶅悎鏂囦歡鏄潪甯擱噸瑕佺殑錛屽嵆浣垮湪浣犵殑紼嬪簭涓茍娌℃湁鍏ㄩ潰浣跨敤緇勪歡鎶鏈紝澶嶅悎鏂囦歡鎶鏈篃鏄彲浠ュ崟鐙搴旂敤鐨勩傜澶у瀛︿範蹇箰錛屼負紺句細涓諱箟杞歡浜嬩笟鑰屽鏂?-)<br /><br />鐣欎綔涓氬暒......<br />浣滀笟1錛氬啓涓皬搴旂敤紼嬪簭錛屼粠 MSWORD 鐨?doc 鏂囦歡涓紝鎻愬彇鍑洪檮鍔犱俊鎭紙浣滆呫佸叕鍙?.....錛夈?br />浣滀笟2錛氬啓涓叏鍔熻兘鐨勨滃鍚堟枃浠舵祻瑙堢紪杈戝櫒鈥濄?br /><br />娉?錛氳竻鎽?xuemo)錛屽姩璇嶏紝鍖楁柟鏂硅█錛屽鎵炬悳绱㈢殑鎰忔濄?br />娉?錛氶棶錛氫負浠涔堜笉涓婄綉鏌ヨ祫鏂欏涔狅紵<br />聽聽聽聽 絳旓細寮浠涔堝浗闄呯帺絎戯紒鍦ㄩ偅閬ヨ繙鐨?995騫翠唬錛屾垜鐨?00鍧楀伐璧勶紝涓嶅悆涓嶅枬姝eソ澶熶笂100灝忔椂鐨処nternet緗戙?br />娉?錛歄LE錛屽璞$殑榪炴帴涓庡祵鍏ャ?br />娉?錛氬彲浠ョ敤 DFView.exe 鎵撳紑 MSWORD 鐨?DOC 鏂囦歡榪涜澶嶅悎鏂囦歡鐨勬祻瑙堛備絾鏄紼嬪簭騫舵病鏈夊疄鐜板浗闄呭寲錛屼笉鑳芥墦寮涓枃鏂囦歡鍚嶇殑澶嶅悎鏂囦歡錛屽洜姝ら渶瑕佹敼鍚嶅悗鎵嶈兘嫻忚銆?br />娉?錛欳LSID錛屽湪鍚庣畫鐨勬枃绔犱腑浠嬬粛銆?br />娉?錛氬叧浜?COM 涓唴瀛樹嬌鐢ㄧ殑闂錛屽湪鍚庣畫鐨勬枃绔犱腑浠嬬粛銆?</atlconv.h></atlconv.h><img src ="http://m.shnenglu.com/mydriverc/aggbug/29061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mydriverc/" target="_blank">鏃呴?/a> 2007-07-31 10:20 <a href="http://m.shnenglu.com/mydriverc/articles/29061.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>緇撴瀯鎴栧ぇ鍐呭瓨鍧楁墦鍖呯殑鍔炴硶http://m.shnenglu.com/mydriverc/articles/29027.html鏃呴?/dc:creator>鏃呴?/author>Mon, 30 Jul 2007 08:51:00 GMThttp://m.shnenglu.com/mydriverc/articles/29027.htmlhttp://m.shnenglu.com/mydriverc/comments/29027.htmlhttp://m.shnenglu.com/mydriverc/articles/29027.html#Feedback0http://m.shnenglu.com/mydriverc/comments/commentRss/29027.htmlhttp://m.shnenglu.com/mydriverc/services/trackbacks/29027.html緇撴瀯鎴栧ぇ鍐呭瓨鍧楁墦鍖呯殑鍔炴硶

Revision History:

Version Date Creator Description
 

Implementation Scope錛?/p>

緇х畫闃呰涔嬪墠錛屾垜浠亣璁炬偍鐔熸倝浠ヤ笅鐭ヨ瘑錛?/p>

  • SAFEARRAY
  • ISTREAM
  • Microsoft MSMQ

鐩綍錛?/p>

1:姒傝堪

2:鍊熺敤SAFEARRAY鎵撳寘鎶婄粨鏋勫啓鍏SMQ闃熷垪

3:鍊熺敤IStream嫻佹墦鍖呬紶閫掓暟鎹埌MSMQ闃熷垪

1.姒傝堪

閫氬父鎴戜滑寤鴻閫氳繃MSMQ浼犻掑熀浜嶺ML鐨勫瓧絎︿覆錛屼絾鏈夋椂鍊欎篃闇瑕佷紶閫掍竴浜涚粨鏋勬垨鑰呬竴浜涙帴鍙f寚閽堬紝閭d箞濡備綍鎵撳寘浼犻掑憿錛?/p>

榪欏疄闄呬笂鍙互杞崲涓轟竴涓櫘閫傞棶棰橈細

濡備綍鎶婁竴涓粨鏋勪綋(structure object)鎴栬呭法澶у唴瀛樺潡錛堟瘮濡?MB宸﹀彸錛夋墦鍖呬負PROPVARIANT-compatible鐨勭被鍨嬶紵

 

棣栧厛錛孖MSMQMessagePtr鐨凚ody灞炴ф帴鏀禵variant_t鍙傛暟:

inline void IMSMQMessage::PutBody ( const _variant_t & pvarBody ) {

    HRESULT _hr = put_Body(pvarBody);

    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));

}

濡傛灉鎴戜滑鎯蟲妸緇撴瀯浣滀負娑堟伅鐨凚ody鍐欏叆MSMQ娑堟伅闃熷垪錛屾垜浠渶瑕佹妸鎴戜滑鐨勭粨鏋勩佸ぇ鍐呭瓨鍧楁垨鎺ュ彛鎸囬拡杞崲涓篲variant_t銆?/p>

2.鍊熺敤SAFEARRAY鎵撳寘鎶婄粨鏋勫啓鍏SMQ闃熷垪

鎶婁竴涓粨鏋勪綋鎵撳寘涓篜ROPVARIANT-compatible鐨勭被鍨嬶紝闇瑕佺敤鍒癝AFEARRAY錛屼竴涓甫鏈夎竟鐣屼俊鎭殑鏁扮粍銆傝繖鏄竴涓父鐢ㄦ妧宸э紝寰堝鏂囩珷閮芥湁鎻愬強錛屾垜灝變笉澶氳В閲婁簡銆?/p>

浣嗘槸錛屾敞鎰忚繖縐嶆柟寮忎竴嬈″彧鑳芥墦鍖?5536瀛楄妭浠ヤ笅鐨勬暟鎹紝榪欐槸鐢變簬

SAFEARRAY* SafeArrayCreateVector(

  VARTYPE      vt,            

  long          lLbound,          

  unsigned int  cElements);

鐨勫畾涔夋墍闄愬埗鐨勩?/p>

鎴戜滑閫氬父浼氱敤SafeArrayCreateVector API鍒涘緩涓涓崟緇碨AFEARRAY錛屽垎閰嶄竴涓猻izeof(_DATA)澶у皬鐨勮繛緇唴瀛樺潡錛岃岃繖涓嚱鏁扮殑絎笁涓弬鏁版槸涓涓猽nsigned int綾誨瀷錛屾墍浠ユ渶澶у煎氨鍙兘鏄?5536浜嗐?/p>

鏇村SAFEARRAY鐭ヨ瘑錛屽弬瑙佷嬌鐢⊿AFEARRAY浼犻掑璞°?/p>

 
2.鍊熺敤SAFEARRAY鎵撳寘鎶婄粨鏋勫啓鍏SMQ闃熷垪

緇笂1.1綃囩殑鎵撳寘姝ラ錛圴C++浠g爜錛夛細

// ChangeStruct2Var鍑芥暟鐨勫畾涔夛細

// 絎竴涓弬鏁幫細

//   綾誨瀷錛欳ComVariant

//   浣滅敤錛氭帴鏀惰?/p>

// 絎簩涓弬鏁幫細

//   綾誨瀷錛歘DATA*

//   浣滅敤錛氭簮

HRESULT ChangeStruct2Variant (CComVariant &var, _DATA *pData)

{

HRESULT hr = S_OK;

 

// 浣跨敤SafeArrayCreateVector API鍒涘緩涓涓崟緇碨AFEARRAY錛屽垎閰嶄竴涓猻izeof(_DATA)澶у皬鐨勮繛緇唴瀛樺潡

// VT--UI1浠h〃闈炶礋鏁村艦鐨勫彉閲忕被鍨嬶紝1涓瓧鑺?/p>

// 甯告暟'0'瀹氫箟鏁扮粍鐨勪笅鐣?/p>

LPSAFEARRAY lpsa = SafeArrayCreateVector(VT_UI1, 0, sizeof(_DATA));

LPBYTE pbData = NULL;

 

if (lpsa)

{

     //鍦ㄤ綘璁塊棶SAFEARRAY鏁版嵁涔嬪墠錛屼綘蹇呴』璋冪敤SafeArrayAccessData銆傝鍑芥暟閿佸畾鏁版嵁騫朵笖榪斿洖涓涓寚閽堛傚湪榪欓噷錛岄攣瀹氭暟緇勬剰鍛崇潃澧炲姞璇ユ暟緇勭殑鍐呴儴璁℃暟鍣紙cLocks錛?/p>

    hr = SafeArrayAccessData(lpsa, (void **)&pbData);

}

else

    hr = HRESULT_FROM_WIN32(GetLastError());

 

if (SUCCEEDED(hr))

{

     // 浣跨敤safe array錛?/p>

     // 灝嗕紶鍏ョ殑_DATA鎸囬拡鎸囧悜鐨勫唴瀛樺鍒跺埌pbData

    CopyMemory(pbData, pData, sizeof(*pData));

// 璁劇疆var鐨勭被鍨嬩負鏁扮粍

    var.vt = VT_ARRAYVT_UI1;

// 灝唙ar鍜屾垜浠殑鍗曠淮SAFEARRAY鎷変笂鍏崇郴錛?/p>

    var.parray = lpsa;

}

 

if (pbData)

{

     //鐩稿簲鐢ㄦ潵閲婃斁鏁版嵁鐨勫嚱鏁版槸SafeArrayUnaccessData()錛岃鍔熻兘閲婃斁璇ュ弬鏁扮殑璁℃暟銆?/p>

    SafeArrayUnaccessData(var.parray);

}

if (FAILED(hr))

{

     // 閿姣丼AFEARRAY

    SafeArrayDestroy(lpsa);

}

 

return hr;

}

 

////////////////////////////////////////////////////////////

//Added Headers:

////////////////////////////////////////////////////////////

#include <comdef.h>

#include <atlbase.h>

///////////////////////////////////////////////////////////

//Added for MSMQ:

///////////////////////////////////////////////////////////

#import "mqoa.dll" no_namespace, named_guids

typedef    struct  _DATA 

       int    _n; 

       char   _str;

}_DATA;

//main:

{

.. ..

.. ..

IMSMQMessagePtr pisMsg = NULL;

hr = pisMsg.CreateInstance("MSMQ.MSMQMessage");

_DATA msg;

msg._n = 1;

msg._str = '1';

CComVariant var;

// 鎵撳寘鍑芥暟錛?/p>

ChangeStruct2Variant(var, &msg);

// 鎵撳寘鍚庣殑CComVariant浼犻掔粰MSMQMessege鐨凚ody灞炴э細

pisMsg->Body= var;

pisMsg->AppSpecific=-1;

// 鍙戦佸埌娑堟伅闃熷垪錛?/p>

pisMsg->Send(pisQueue);

.. ..

}
 

 

榪欐牱錛屽氨鍙互鎴愬姛鍦版妸涓涓粨鏋勯掍氦鍒癕SMQ闃熷垪涓簡銆?/p>

 

Implementation Scope錛?br>緇х畫闃呰涔嬪墠錛屾垜浠亣璁炬偍鐔熸倝浠ヤ笅鐭ヨ瘑錛?/p>

  • SAFEARRAY
  • ISTREAM
  • Microsoft MSMQ

鐩綍錛?/p>

1:姒傝堪

2:鍊熺敤SAFEARRAY鎵撳寘鎶婄粨鏋勫啓鍏SMQ闃熷垪

3:鍊熺敤IStream嫻佹墦鍖呬紶閫掓暟鎹埌MSMQ闃熷垪

 

涓嬮潰緇欏嚭璇誨彇MSMQ娑堟伅鏃惰В鏋愮殑姝ラ錛圴C++浠g爜錛夛細

////////////////////////////////////////////////////////////

//Added Headers:

////////////////////////////////////////////////////////////

#include <comdef.h>

#include <atlbase.h>

///////////////////////////////////////////////////////////

//Added for MSMQ:

///////////////////////////////////////////////////////////

#import "mqoa.dll" no_namespace, named_guids

typedef    struct  _DATA 

       int    _n; 

       char   _str;

}_DATA;

//main:

{

.. ..

.. ..

hr = pisQI->raw_Open(MQ_PEEK_ACCESS,MQ_DENY_NONE,&pisQueue);

IMSMQMessagePtr piMessage;

// 鑾峰彇MSMQ闃熷垪涓殑涓涓秷鎭細

piMessage = pisQueue->PeekCurrent();

_DATA *msg = new _DATA();

// 瑙f瀽鍑芥暟錛?/p>

ChangeVariant2Struct(CComVariant(piMessage->Body), msg);

.. ..

}

 

// ChangeVariant2Struct鍑芥暟鐨勫畾涔夛細

// 絎竴涓弬鏁幫細

//   綾誨瀷錛欳ComVariant

//   浣滅敤錛氭簮

// 絎簩涓弬鏁幫細

//   綾誨瀷錛歘DATA*

//   浣滅敤錛氭帴鏀惰?/p>

HRESULT ChangeVariant2Struct (CComVariant &var, _DATA *DP)

{

SAFEARRAY* psa;

BYTE HUGEP *lpb;

psa = var.parray;

SafeArrayAccessData(psa, (void HUGEP **)&lpb);

CopyMemory((LPVOID)DP, (LPVOID)lpb, 8);

SafeArrayUnaccessData(psa);

 

return S_OK;

}
 


Writen by zhengyun.NoJunk(at)tomosoft.dot.com

Disclaimers錛?br> 

鏈枃妗d粎渚涘弬鑰冦傛湰鏂囨。鎵鍖呭惈鐨勪俊鎭唬琛ㄤ簡鍦ㄥ彂甯冧箣鏃ワ紝zhengyun瀵規墍璁ㄨ闂鐨勫綋鍓嶇湅娉曪紝zhengyun涓嶄繚璇佹墍緇欎俊鎭湪鍙戝竷涔嬫棩浠ュ悗鐨勫噯紜с?

鐢ㄦ埛搴旀竻妤氭湰鏂囨。鐨勫噯紜у強鍏朵嬌鐢ㄥ彲鑳藉甫鏉ョ殑鍏ㄩ儴椋庨櫓銆傚彲浠ュ鍒跺拰浼犳挱鏈枃妗o紝浣嗛』閬靛畧浠ヤ笅鏉℃錛?

澶嶅埗鏃朵笉寰椾慨鏀瑰師鏂囷紝澶嶅埗鍐呭欏誨寘鍚墍鏈夐〉 錛?
鎵鏈夊壇鏈潎欏誨惈鏈?zhengyun鐨勭増鏉冨0鏄庝互鍙婃墍鎻愪緵鐨勫叾瀹冨0鏄?錛?/p>


Implementation Scope錛?br>緇х畫闃呰涔嬪墠錛屾垜浠亣璁炬偍鐔熸倝浠ヤ笅鐭ヨ瘑錛?/p>

  • SAFEARRAY
  • ISTREAM
  • Microsoft MSMQ

鐩綍錛?/p>

1:姒傝堪

2:鍊熺敤SAFEARRAY鎵撳寘鎶婄粨鏋勫啓鍏SMQ闃熷垪

3:鍊熺敤IStream嫻佹墦鍖呬紶閫掓暟鎹埌MSMQ闃熷垪

 

3.鍊熺敤IStream嫻佷紶閫掓暟鎹?br>姝e鍓嶉潰鎵榪幫紝褰撲綘鏈変竴鍧楅潪甯稿法澶х殑鏁版嵁瑕佷紶閫掔粰MSMQ闃熷垪鏃訛紝鑰屼笖浣犲笇鏈涗竴嬈℃恫鍘嬫垚鍨嬶紝閭d箞鎶婂畠鎵撳寘鍏Stream嫻侊紝涔熸槸涓涓緢甯哥敤鎶宸э紝浜嗚ВCOM鐨勪漢閮界煡閬擄紝鎴戜篃涓嶅瑙i噴浜嗐?/p>

鎴戜滑鐮旂┒浜咥TL涓璉PersistMemoryImpl鎺ュ彛Load鏂規硶鐨勫疄鐜版満鐞嗭紝鏉ュ仛鎴戜滑鐨勪簨鎯咃細

// 鍑芥暟鍚嶏細LoadStreamOnHugeMemory

// 鍔熻兘錛?nbsp; 鍚屼笂

// 絎竴涓弬鏁皃vMem鎸囧悜涓鍧楄鎵撳寘鐨勫唴瀛橈紝絎簩涓弬鏁版寚鏄庤繖鍧楀唴瀛樼殑澶у皬

HRESULT LoadStreamOnHugeMemory(void pvMem, ULONG cbSize)

{

     // Get Memory Handle:

     HGLOBAL h = GlobalAlloc(GMEM_MOVEABLE, cbSize);

     If(NULL == h) return E_OUTOFMEMORY;

     LPVOID pv = GlobalLock(h);

     If(!pv) return E_OUTOFMEMORY;

    

     // Copy to memory block

     CopyMemory(pv, pvMem, cbSize);

     CComPtr<IStream> spStream;

     // Create stream on Memory:

     HRESULT hr = CreateStreamOHGlobal(h, TRUE, &spStream);

     If(FAILED(hr))

     {

          GlobalUnlock(h);

          GlobalFree(h);

          return hr;

     }

     // stream now owns the memory

 

// unlock the data

GlobalUnlock(hGlobal);

 

// Create a stream holder. Load the stream holder from the global stream.

//  THIS STREAM HOLDER IS INTERITED FROM IPersistStream

//  And all virtual functions are Modified to handle the object....

CComPtr <IStreamHolder> pHolder = new CComObject <CStreamHolder>;

 

CComPtr <IPersistStream> pHolderStream;

hr = pHolder->QueryInterface (IID_IPersistStream, (void **)&pHolderStream);

 

pStream->Seek( zero, STREAM_SEEK_SET, NULL );

pHolderStream->Load(pStream);

 

CComVariant vComData = pHolder;

.. ..

 

//

// now, you have a big chunk of memory loaded into a ComVariant

//

// 鐜板湪浣犲彲浠ユ妸鎵撳寘鍚庣殑CComVariant浼犻掔粰MSMQMessege鐨凚ody灞炴т簡錛?/p>

pisMsg->Body = vComData;

.. ..

}
 

 

鍏跺疄錛孉ydin鐨勫疄鐜板拰ATL涓璉PersistMemoryImpl鎺ュ彛Load鏂規硶瀹炵幇寮傛洸鍚屽伐銆傛垜浠笉濡ㄦ崲涓縐嶆柟寮忓疄鐜般?/p>

 

Writen by zhengyun.NoJunk(at)tomosoft.dot.com

Disclaimers錛?br>鏈枃妗d粎渚涘弬鑰冦傛湰鏂囨。鎵鍖呭惈鐨勪俊鎭唬琛ㄤ簡鍦ㄥ彂甯冧箣鏃ワ紝zhengyun瀵規墍璁ㄨ闂鐨勫綋鍓嶇湅娉曪紝zhengyun涓嶄繚璇佹墍緇欎俊鎭湪鍙戝竷涔嬫棩浠ュ悗鐨勫噯紜с?

鐢ㄦ埛搴旀竻妤氭湰鏂囨。鐨勫噯紜у強鍏朵嬌鐢ㄥ彲鑳藉甫鏉ョ殑鍏ㄩ儴椋庨櫓銆傚彲浠ュ鍒跺拰浼犳挱鏈枃妗o紝浣嗛』閬靛畧浠ヤ笅鏉℃錛?

澶嶅埗鏃朵笉寰椾慨鏀瑰師鏂囷紝澶嶅埗鍐呭欏誨寘鍚墍鏈夐〉 錛?
鎵鏈夊壇鏈潎欏誨惈鏈?zhengyun鐨勭増鏉冨0鏄庝互鍙婃墍鎻愪緵鐨勫叾瀹冨0鏄?錛?
涓嶅緱浠ヨ耽鍒╀負鐩殑瀵規湰鏂囨。榪涜浼犳挱 銆?/p>

 

Implementation Scope錛?br>緇х畫闃呰涔嬪墠錛屾垜浠亣璁炬偍鐔熸倝浠ヤ笅鐭ヨ瘑錛?/p>

  • SAFEARRAY
  • ISTREAM
  • Microsoft MSMQ

鐩綍錛?/p>

1:姒傝堪

2:鍊熺敤SAFEARRAY鎵撳寘鎶婄粨鏋勫啓鍏SMQ闃熷垪

3:鍊熺敤IStream嫻佹墦鍖呬紶閫掓暟鎹埌MSMQ闃熷垪

 

鍏跺疄錛孉ydin鐨勫疄鐜板拰ATL涓璉PersistMemoryImpl鎺ュ彛Load鏂規硶瀹炵幇寮傛洸鍚屽伐銆傛垜浠笉濡ㄦ崲涓縐嶆柟寮忓疄鐜般?/p>

Aydin緇欏嚭鐨刅C++浠g爜鏄細

// 鏅鴻兘嫻佹寚閽?/p>

CComPtr<IStream> pStream = NULL;

LARGE_INTEGER zero = {0,0};

// hGlobal鏄唴瀛樺彞鏌勶細

LPBYTE pChunk = (BYTE *) GlobalLock(hGlobal);

 

// 鍒涘緩涓涓┖鐨剆tream錛?/p>

HRESULT hr = CreateStreamOnHGlobal(NULL, TRUE, &pStream );

pStream->Seek( zero, STREAM_SEEK_SET, NULL );

 

ULONG pcbWritten = 0;

// pChunk鐜板湪宸茬粡鎸囧悜鎴戜滑鐨勫法澶у唴瀛樺潡錛?/p>

// 鎴戜滑鎶婅繖鍧楀唴瀛樺啓鍏Stream嫻佷腑錛?/p>

pStream->Write (pChunk, dwNumRead, &pcbWritten);

// 媯鏌ユ槸鍚﹀叏閮ㄥ啓鍏ヤ簡錛?/p>

ATLASSERT(pcbWritten==dwNumRead);

 

// unlock the data

GlobalUnlock(hGlobal);

 

// 鍓╀笅鐨勪竴鏍鳳紝涔熸槸璁〤ComPtr <IPersistStream>鏉ヨ皟鐢↙oad鏂規硶鍔犺澆IStream

 

// Create a stream holder. Load the stream holder from the global stream.

//  THIS STREAM HOLDER IS INTERITED FROM IPersistStream

//  And all virtual functions are Modified to handle the object....

CComPtr <IStreamHolder> pHolder = new CComObject <CStreamHolder>;

 

CComPtr <IPersistStream> pHolderStream;

hr = pHolder->QueryInterface (IID_IPersistStream, (void **)&pHolderStream);

 

pStream->Seek( zero, STREAM_SEEK_SET, NULL );

pHolderStream->Load(pStream);

 

CComVariant vComData = pHolder;

.. ..

 

//

// now, you have a big chunk of memory loaded into a ComVariant

//

// 鐜板湪浣犲彲浠ユ妸鎵撳寘鍚庣殑CComVariant浼犻掔粰MSMQMessege鐨凚ody灞炴т簡錛?/p>

pisMsg->Body = vComData;

.. ..

 

//Coder: Aydin T.BAKIR
 


 鍏ㄦ枃瀹屻?/p>

Writen by zhengyun.NoJunk(at)tomosoft.dot.com

Disclaimers錛?br> 

鏈枃妗d粎渚涘弬鑰冦傛湰鏂囨。鎵鍖呭惈鐨勪俊鎭唬琛ㄤ簡鍦ㄥ彂甯冧箣鏃ワ紝zhengyun瀵規墍璁ㄨ闂鐨勫綋鍓嶇湅娉曪紝zhengyun涓嶄繚璇佹墍緇欎俊鎭湪鍙戝竷涔嬫棩浠ュ悗鐨勫噯紜с?

鐢ㄦ埛搴旀竻妤氭湰鏂囨。鐨勫噯紜у強鍏朵嬌鐢ㄥ彲鑳藉甫鏉ョ殑鍏ㄩ儴椋庨櫓銆傚彲浠ュ鍒跺拰浼犳挱鏈枃妗o紝浣嗛』閬靛畧浠ヤ笅鏉℃錛?

澶嶅埗鏃朵笉寰椾慨鏀瑰師鏂囷紝澶嶅埗鍐呭欏誨寘鍚墍鏈夐〉 錛?
鎵鏈夊壇鏈潎欏誨惈鏈?zhengyun鐨勭増鏉冨0鏄庝互鍙婃墍鎻愪緵鐨勫叾瀹冨0鏄?錛?
涓嶅緱浠ヨ耽鍒╀負鐩殑瀵規湰鏂囨。榪涜浼犳挱 銆?/p>

]]>
Windows鍖哄璞?Bands)鐨勫垱寤轟笌瀹氬埗http://m.shnenglu.com/mydriverc/articles/29022.html鏃呴?/dc:creator>鏃呴?/author>Mon, 30 Jul 2007 08:20:00 GMThttp://m.shnenglu.com/mydriverc/articles/29022.htmlhttp://m.shnenglu.com/mydriverc/comments/29022.htmlhttp://m.shnenglu.com/mydriverc/articles/29022.html#Feedback0http://m.shnenglu.com/mydriverc/comments/commentRss/29022.htmlhttp://m.shnenglu.com/mydriverc/services/trackbacks/29022.html

 

Windows鍖哄璞?Bands)鐨勫垱寤轟笌瀹氬埗
緙栬瘧/璧墊箻瀹?/font>

鏈枃渚嬪瓙浠g爜

1 綆浠?/font>
  1.1 嫻忚鏍忓尯瀵硅薄
  1.2 宸ュ叿鏍忓尯瀵硅薄

  1.3 蹇呴』瀹炵幇鐨勬帴鍙?/font>

    3.3.1 IUnknown
    3.3.2 IObjectWithSite
    3.3.3 IPersistStream
    3.3.4 IDeskBand
  3.4 涓銆?綆浠?/a>
Windows鐨勫尯錛圔ands錛夊璞℃湁涓夌錛氭棦嫻忚鏍忥紙Explorer Bar錛夊尯瀵硅薄錛屽伐鍏鋒爮錛圱ools Bands錛夊尯瀵硅薄錛屽拰妗岄潰鍖哄璞★紙Desk Bands錛夈?br>
嫻忚鏍忓尯瀵硅薄
嫻忚鏍忓尯瀵硅薄綆縐版祻瑙堟爮錛屽畠鏄粠IE4.0寮曞叆鐨勶紝瀹冩槸閭昏繎嫻忚鍣ㄧ獥鏍肩殑涓涓樉紺哄尯鍩熴傚疄闄呬笂瀹冩槸IE紿楀彛涓殑涓涓瓙紿楀彛錛屽彲浠ョ敤瀹冩潵鏄劇ず淇℃伅鍙婁笌鐢ㄦ埛浜や簰銆傛祻瑙堟爮鍗沖彲浠ユ槸浠ュ瀭鐩存柟寮忓畾浣嶅湪嫻忚鍣ㄧ獥鏍肩殑宸﹁竟銆備篃鍙互姘村鉤鏂瑰紡瀹氫綅鍦ㄦ祻瑙堝櫒紿楁牸涓嬮潰銆傦紙濡傚浘涓錛?

鍥句竴
鍦ㄦ祻瑙堟爮涓彲浠ュ垱寤哄緢澶氬瓙鑿滃崟鎴栭夐」錛岀敤鎴瘋兘浠ヤ笉鍚屾柟寮忛夋嫨榪欎簺瀛愯彍鍗曟垨閫夐」鎻愪緵鐨勫姛鑳斤紝鎵撳紑IE鎴栬呰祫婧愮鐞嗗櫒錛屼粠“鏌ョ湅”鑿滃崟涓夋嫨“嫻忚鏍?#8221;錛屽彲浠ョ湅鍒癢indows鎻愪緵浜嗗嚑縐嶆爣鍑嗙殑嫻忚鏍忚彍鍗曪紝濡?#8220;鎼滅儲錛圫earch錛?#8221;,“鏀惰棌澶癸紙Favorites錛?#8221;錛?鍜?#8220;鍘嗗彶璁板綍錛圚istory錛?#8221;,浠ュ強“鏂囦歡澶癸紙All Folders錛?#8221;銆傦紙濡傚浘浜岋級

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

鍥句笁

鐢ㄦ埛鍙互浠?#8220;鏌ョ湅”鑿滃崟涓殑“宸ュ叿鏍?#8221;瀛愯彍鍗曚腑閫夋嫨鏄劇ず鍗曢夊伐鍏鋒爮錛屼篃鍙互鍦ㄥ伐鍏鋒爮鍖哄煙鍗曞嚮榧犳爣鍙抽敭浠庡畠鐨勪笂涓嬫枃鑿滃崟涓夋嫨鏄劇ず鍗曢夊伐鍏鋒爮銆?br>

鍖哄璞′篃鍙互鐢ㄥ湪妗岄潰錛屼篃灝辨槸鍒涘緩妗岄潰鍖哄璞°傝櫧鐒跺畠浠殑鍩烘湰瀹炵幇涓庢祻瑙堟爮綾諱技錛屼絾妗岄潰鍖轟笌IE娌℃湁鍏崇郴錛屽畠涓嶇敤IE浣滀負瀹瑰櫒銆傚畠涓昏鐢ㄦ潵鍒涘緩妗岄潰嫻姩紿楀彛銆傞氳繃鍦ㄤ換鍔℃爮涓婂崟鍑誨彸閿紝鐒跺悗鍦ㄥ脊鍑虹殑鑿滃崟涓夋嫨“宸ュ叿鏍?#8221;鐨勫瓙鑿滃崟閫夐」銆傦紙濡傚浘鍥涳級

鍥懼洓

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

鐢ㄦ埛鍙互灝嗘闈㈠尯鎷栧埌妗岄潰涓婏紝榪欐椂瀹冨氨鎴愪簡涓涓櫘閫氱獥鍙o細錛堝鍥懼叚錛?br>
鍥懼叚
浜屻佸疄鐜板尯瀵硅薄
灝界鍙互鍍忎嬌鐢ㄦ櫘閫氱獥鍙d竴鏍蜂嬌鐢ㄥ尯瀵硅薄錛屼絾瀹冧滑姣曠珶鏄疌OM瀵硅薄錛屽瓨鍦ㄤ簬鏌愪釜瀹瑰櫒涔嬩腑銆傚嫻忚鏍忓拰宸ュ叿鏍忎綅浜嶪E涔嬩腑錛屾闈㈠尯浣嶄簬澶栧3涔嬩腑銆傝櫧鐒跺畠浠殑鍔熻兘涓嶅悓錛屼絾鍏跺熀鏈疄鐜伴潪甯哥浉浼箋備竴涓富瑕佺殑宸埆鏄畠浠殑娉ㄥ唽鏂瑰紡涓嶅悓錛岃屾敞鍐屾柟寮忕殑涓嶅悓鍙堝喅瀹氫簡瀵硅薄鐨勭被鍨嬪強鍏跺鍣ㄣ傝繖涓閮ㄥ垎鎴戜滑鍏堣璁烘墍鏈夊尯瀵硅薄瀹炵幇鐨勫叡鎬с傚叾瀹冪殑瀹炵幇緇嗚妭鍙弬鑰?a target=_self>鍨傜洿嫻忚鏍忎緥瀛愮▼搴?/font>銆?br>鍖哄璞¢櫎浜嗚瀹炵幇 IUnknown 鍜?IClassFactory 涓や釜鎺ュ彛涔嬪錛屾墍鏈夌殑鍖哄璞¤繕蹇呴』瀹炵幇浠ヤ笅榪欏嚑涓帴鍙o細
  •  IDeskBand 
  •  IObjectWithSite 
  •  IPersistStream
鍙﹀錛屽湪娉ㄥ唽鏃墮櫎浜嗘敞鍐屽畠浠殑CLSID涔嬪錛屾祻瑙堟爮鍜屾闈㈠尯瀵硅薄榪樺繀欏昏繘琛岀粍浠剁被鍒紙category錛夌殑娉ㄥ唽銆傚畠鍐沖畾浜嗗璞$殑綾誨瀷鍙婂叾瀹瑰櫒銆傚伐鍏鋒爮涓嶉渶瑕佽繘琛岀綾繪敞鍐屻傚綊綰寵搗鏉ワ紝闇瑕佽繘琛孋ATID娉ㄥ唽鐨勪笁縐嶅尯瀵硅薄鏄細
鍖哄璞$被鍨?/strong> 緇勪歡綾誨瀷
鍨傜洿嫻忚鏍?/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錛夋敞鍐屻傚叾綰跨▼妯″瀷蹇呴』涓?#8220;Apartment”銆備篃灝辨槸璇村尯瀵硅薄蹇呴』浠LL鐨勫艦寮忔潵瀹炵幇銆傜敤鏉ユ弿榪版湇鍔″櫒娉ㄥ唽鏉$洰鐨勭己鐪佸兼槸涓涓彍鍗曟枃鏈覆銆傚氨鎷挎祻瑙堟爮鏉ヨ銆傝繖涓彍鍗曞嚭鐜板湪璧勬簮綆$悊鍣ㄦ垨IE “鏌ョ湅錛圴iew錛?#8221;鑿滃崟鐨?#8220;嫻忚鏍忥紙Explorer Bar錛?#8221;瀛愯彍鍗曚腑銆傝屽伐鍏鋒爮鐨勮彍鍗曞垯鍑虹幇鍦ㄨ祫婧愮鐞嗗櫒鎴朓E “鏌ョ湅錛圴iew錛?#8221;鑿滃崟鐨?#8220;宸ュ叿鏍忥紙Toolbars錛?#8221;瀛愯彍鍗曚腑銆傛闈㈠尯鍑虹幇鍦ㄤ換鍔℃爮涓婁笅鏂囪彍鍗曠殑“宸ュ叿鏍忥紙Toolbars錛?#8221;瀛愯彍鍗曚腑銆備綔涓鴻彍鍗曡祫婧愶紝鎻愪緵閿洏蹇嵎鐨勬柟娉曚笌涓鑸彍鍗曞揩鎹烽敭鐩稿悓銆備篃灝辨槸灝?#8220;&”瀛楃鏀懼湪鏌愪釜鍗曡瘝瀛楁瘝鍓嶈〃紺鴻繖涓瓧姣嶆樉紺轟笅鍒掔嚎鏉ユ寚紺哄揩鎹烽敭銆?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);
                        }


鍨傜洿嫻忚鏍忎緥瀛愬疄鐜頒簡鍥涗釜蹇呴』鐨勬帴鍙o細IUnknown, IObjectWithSite, IPersistStream, 鍜孖DeskBand錛屽畠浠兘鍦–ExplorerBar綾諱腑瀹炵幇銆?br>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;
                        }

鐢變袱涓帴鍙g殑瀹炵幇鏄彲閫夋嫨鐨勶紝涓涓槸IInputObject錛屽彟涓涓槸 IContextMenu銆傛湰鏂囩殑嫻忚鏍忎緥瀛愬疄鐜頒簡IInputObject銆傚浜嶪ContextMenu鐨勫疄鐜扮粏鑺傝鍙傝冩湁鍏蟲枃妗c?br>
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緙栫▼鎶鏈傝櫧鐒舵湰鏂囨墍璁ㄨ鐨勪緥瀛愬彧鎻愪緵浜嗘湁闄愮殑鍔熻兘錛屼絾瀹冪ず鑼冧簡鍖哄璞″叏閮ㄧ殑鐗規э紝騫朵笖鍙互鍦ㄦ鍩虹涓婅繘琛屾墿鍏呮潵鍒涘緩鐙壒鍜屽姛鑳藉己澶х殑鐨勭敤鎴風晫闈€?






]]>
ATL 瀹炵幇瀹氬埗鐨?IE 嫻忚鍣ㄦ爮銆佸伐鍏鋒爮鍜屾闈㈠伐鍏鋒爮 http://m.shnenglu.com/mydriverc/articles/29017.html鏃呴?/dc:creator>鏃呴?/author>Mon, 30 Jul 2007 08:00:00 GMThttp://m.shnenglu.com/mydriverc/articles/29017.htmlhttp://m.shnenglu.com/mydriverc/comments/29017.htmlhttp://m.shnenglu.com/mydriverc/articles/29017.html#Feedback0http://m.shnenglu.com/mydriverc/comments/commentRss/29017.htmlhttp://m.shnenglu.com/mydriverc/services/trackbacks/29017.htmlATL 瀹炵幇瀹氬埗鐨?IE 嫻忚鍣ㄦ爮銆佸伐鍏鋒爮鍜屾闈㈠伐鍏鋒爮

浣滆咃細鏉ㄨ佸笀

涓嬭澆婧愪唬鐮?/font>

鍏抽敭瀛?/strong>錛欱and錛孌esk Band錛孍xplorer Band錛孴ool Band錛屾祻瑙堝櫒鏍忥紝宸ュ叿鏍忥紝妗岄潰宸ュ叿鏍?br>
涓銆佸紩璦
銆銆鏈榪戯紝鐢變簬宸ヤ綔鐨勮姹傦紝鎴戦渶瑕佸湪 IE 涓婂仛涓浜涘紑鍙戝伐浣溿備簬鏄湪 MSDN 涓婄炕闃呬簡涓浜涜祫鏂欙紝鏍規嵁 MSDN 涓婄殑璇存槑鎴戠敤 ATL 鑳滃埄瀹屾垚浜?#8220;璧勬湰瀹惰佹澘”鍒嗛厤鐨勪換鍔°?br>錛堝茍涓斿湪鐧藉ぉ鐫¤鐨勮繃紼嬩腑姊﹀埌浜嗚佹澘緇欐垜鍔犲伐璧勫暒......錛?br>鐜板湪錛屾垜鎶?MSDN 涓婄殑鍘熸枃璧勬枡錛岀粡榪囩炕璇戞暣鐞嗗茍鎶婁竴涓?ATL 鐨勫疄鐜板璐ょ粰 VCKBASE 涓婄殑鏈嬪弸浠?/p>


銆銆鍦ㄧ炕璇戠殑榪囩▼涓紝鏈変袱涓瘝姹囬潪甯鎬笉濂界悊瑙c傜涓涓瘝鏄?Band 瀵硅薄錛岃瘝鍏鎬腑緲昏瘧涓?#8220;闀惰竟銆佽瀛愯竟銆佸甫瀛愩佷箰闃?.....”鎴戠殑鑻辨枃姘村鉤鏈夐檺錛屽疄鍦ㄤ笉鐭ラ亾搴旇緲昏瘧涓轟粈涔堣瘝姹囨洿鍚堥傘備簬鏄垜姣呯劧鍐崇劧鍦板喅瀹氾細鍦ㄥ涓嬬殑璁鴻堪涓紝渚濈劧浣跨敤 band 榪欎釜璇嶏紒錛堜粈涔堬紵娌″惉鏄庣櫧錛熸垜鐨勬剰鎬濆氨鏄錛屾垜涓嶇炕璇戣繖涓瘝浜嗭級浣嗗埌搴?Band 瀵硅薄搴旇濡備綍鐞嗚В閭o紵璇風湅鍥句竴錛?br>

鍥句竴

銆銆鍥句竴涓敾綰㈠湀鐨勫湴鏂癸紝鍒嗗埆縐頒綔“鍨傜洿鐨勬祻瑙堝櫒鏍?#8221;銆?#8220;姘村鉤鐨勬祻瑙堝櫒鏍?#8221;銆?#8220;宸ュ叿鏍?#8221;鍜?#8220;妗岄潰宸ュ叿鏍?#8221;銆傝繖浜?#8220;鏍?#8221;錛岄兘鍙互鍦?IE 鐨?#8220;鏌ョ湅”鑿滃崟涓垨榧犳爣鍙抽敭鐨勪笂涓嬫枃蹇嵎鏂瑰紡鑿滃崟涓樉紺烘垨闅愯棌璧鋒潵銆傝繖浜涚晫闈㈢獥鍙g殑瀹炵幇錛屽叾瀹炲氨鏄疄鐜頒竴縐?COM 鎺ュ彛瀵硅薄錛岃岃繖涓璞″彨 band銆傝繖涓蹇靛疄鍦ㄦ槸鍙兘鎰忎細鑰屾棤娉曡█浼犵殑錛屾垜鎬諱笉鑳藉湪鏂囩珷涓妸瀹冪炕璇戜負“鎬繪槸闈犲湪 IE 涓葷獥鍙h竟涓婄殑瀵硅薄”鍚э紵^_^
銆銆鍙﹀錛岃繕鏈変竴涓瘝鍙?site銆傝繖涓緢濂界炕璇戯紝鍙?#8220;绔欑偣”錛併傚懙鍛碉紝鎴戞暍鎵撳寘紲紝濡傛灉浣犺鑳界悊瑙h繖涓炕璇戝湪璁$畻鏈虹被鏂囩珷涓殑鍚箟錛岄偅灝卞彧鑳芥伃鍠滀綘浜嗭紝浣犵殑鏅烘収澶珮浜嗐傦紙閮芥槸瀛﹁綆楁満杞歡鐨勪漢錛屽仛浜虹殑宸窛鍜嬪氨榪欎箞澶у憿錛燂級鍦ㄦ湰綃囨枃绔犱腑錛宻ite 鍙互榪欐牱鐞嗚В錛欼E 鐨勪富妗嗘灦鍥涘懆錛屽氨濂芥瘮鏄?#8220;姹借濺绔?#8221;錛岄偅浜?band 瀵硅薄錛屽氨濂芥瘮鏄?#8220;姹借濺”銆俠and 姹借濺鎬繪槸鍙互鍋滈潬鍦?#8220;姹借濺绔?#8221;涓娿傛墍浠ワ紝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_InfoBand 00021493-0000-0000-C000-000000000046
姘村鉤鐨勬祻瑙堝櫒鏍?/td> CATID_CommBand 00021494-0000-0000-C000-000000000046
妗岄潰鐨勫伐鍏鋒爮 CATID_DeskBand 00021492-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)...... // 娣誨姞闇瑕佹寔緇х殑灞炴ND_PROP_MAP()		
銆銆涓婇潰鐨勪唬鐮侊紝鍏跺疄瀹炵幇鐨勬槸 IPersistStreamInit 鎺ュ彛錛屼笉榪囨病鏈夊叧緋伙紝鍥犱負 IPersistStreamInit 媧劇敓鑷?IPersistStream錛屽疄渚嬪寲浜嗘淳鐢熺被錛岃嚜鐒跺氨瀹炰緥鍖栦簡鍩虹被銆傚湪渚嬪瓙紼嬪簭涓紝鎴戝彧鍦ㄦ闈㈠伐鍏鋒爮瀵硅薄涓坊鍔犱簡鎸佺畫鎬у睘鎬э紝鐢ㄦ潵淇濆瓨鍜屽垵濮嬪寲“鍛戒護琛?#8221;銆傚彟澶?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()// IOleWindowSTDMETHODIMP Cxxx::GetWindow(HWND * phwnd){	// 鍙栧緱 band 瀵硅薄鐨勭獥鍙e彞鏌?// m_hWnd 鏄緩绔嬬獥鍙f椂鍊欎繚瀛樼殑	*phwnd = m_hWnd;		return S_OK;}STDMETHODIMP Cxxx::ContextSensitiveHelp(BOOL fEnterMode){	// 涓婁笅鏂囧府鍔╋紝鍙傝?IContextMenu 鎺ュ彛	return E_NOTIMPL;}// IDockingWindowSTDMETHODIMP 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;}// IDeskBandSTDMETHODIMP 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> 鎻忚堪
    pUnk band 瀵硅薄鐨?IUnknown 鎸囬拡錛屽叾瀹冪殑妗岄潰 bands 灝嗚闅愯棌
    0 闅愯棌鎵鏈夌殑妗岄潰 bands
    1 鏄劇ず鎵鏈夌殑妗岄潰 bands

  • DBID_PUSHCHEVRON
    鍦ㄨ彍鍗曢」宸﹁竟鏄劇ず“v”鐨勯夋嫨鏍囧織銆傚鍣ㄥ彂閫佷竴涓?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 鑿滃崟鐨?#8220;鏌ョ湅\嫻忚鍣ㄦ爮”涓紱瀵逛簬宸ュ叿鏍?band 錛屽畠鍔犲埌 IE 鑿滃崟鐨?#8220;鏌ョ湅\宸ュ叿鏍?#8221;涓紱瀵逛簬妗岄潰 band錛?瀹冨姞鍒扮郴緇熶換鍔℃爮鐨勫揩鎹瘋彍鍗曚腑銆傚湪鑿滃崟璧勬簮涓紝鍙互浣跨敤“&”鎸囨槑鍔犻熼敭銆?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)	// 鍨傜洿鏍峰紡鐨勬祻瑙堝櫒鏍廍ND_CATEGORY_MAP()		
IE 宸ュ叿鏍忕被鍨?band 瀵硅薄鐨?#8220;.rgs”鏂囦歡
HKCR	// 榪欎釜欏圭洰鏄?ATL 甯綘鐢熸垚鐨勶紝浣犲彧瑕佹墜宸ヤ慨鏀?#8220;鑿滃崟涓婄殑鏂囧瓧”灝卞彲浠ヤ簡{	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 鐨勮礬寰勫悕縐幫紝姣斿錛?#8220;C:\Program Files\Internet Explorer\IEXPLORE.EXE”錛岀劧鍚庡氨鍙互璺熻釜鏂偣璋冭瘯浜嗐?緙栬瘧鍜岃皟璇曟闈㈠伐鍏鋒爮鐨?band 瀵硅薄錛屾槸闈炲父楹葷儲鐨勶紝鍥犱負璁$畻鏈哄惎鍔ㄦ椂鑷姩榪愯 Shell錛岃?Shell 灝變細鍔犺澆媧誨姩鐨勬闈㈠璞°?br>
浜斻佺粨鏉熻
濂戒簡錛屽埌榪欓噷錛屽氨鍒拌繖閲屼簡銆傜澶у瀛︿範蹇箰^_^ 


]]>
COM 緇勪歡璁捐涓庡簲鐢紙鍗佷竷錛?---鎸佺畫鎬?/title><link>http://m.shnenglu.com/mydriverc/articles/29016.html</link><dc:creator>鏃呴?/dc:creator><author>鏃呴?/author><pubDate>Mon, 30 Jul 2007 07:59:00 GMT</pubDate><guid>http://m.shnenglu.com/mydriverc/articles/29016.html</guid><wfw:comment>http://m.shnenglu.com/mydriverc/comments/29016.html</wfw:comment><comments>http://m.shnenglu.com/mydriverc/articles/29016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mydriverc/comments/commentRss/29016.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mydriverc/services/trackbacks/29016.html</trackback:ping><description><![CDATA[浣滆咃細<a href="mailto:good_yf@sina.com"><u><font color=#0000ff>鏉ㄨ佸笀</font></u></a> <p><a ><u><font color=#0000ff>涓嬭澆婧愪唬鐮?/font></u></a><strong><br><br>涓銆佸墠璦</strong><br>銆銆鎴戜滑鍐欑▼搴忥紝緇忓父闇瑕佸疄鐜拌繖鏍風殑闇姹傦細<br>渚嬩竴銆佺▼搴忚繍琛屼駭鐢熶竴涓獥鍙o紝鐢ㄦ埛鍏抽棴鐨勬椂鍊欓渶瑕佽褰曠獥鍙g殑浣嶇疆錛屼互渚夸笅嬈¤繍琛屾椂淇濇寔浣嶇疆涓嶅彉錛?br>渚嬩簩銆佺敱浜庣▼搴忚繍琛屾椂闂村緢闀匡紝浠婂ぉ鎵ц涓閮ㄥ垎錛屾槑澶╃戶緇墽琛屻傞偅涔堝湪涓嬫榪愯鍓嶈鎭㈠鍓嶆鐨勭姸鎬侊紱<br>... ... ... ...<br><br>鏅烘収鐨勮佸笀錛氫互涓婅繖浜涢渶姹傦紝濡備綍瀹炵幇鍛紵<br>鎳墊噦鐨勫鐢燂細榪欎釜綆鍗曪紝鍙鍦ㄧ▼搴忛鍑哄墠鎻愬彇蹇呰鐨勪俊鎭繚瀛樺埌鏂囦歡涓紝涓嬫榪愯鏃跺啀浠庢枃浠朵腑璇誨嚭鏉ワ紝璁劇疆涓涓嬪氨OK浜嗐?br>鏅烘収鐨勮佸笀錛氭仼錛屼笉閿欙紝榪欎綅鍚屽鐨勬濇兂鍊煎緱琛ㄦ壃銆?br>鎳墊噦鐨勫鐢燂細涓嶅ソ鎰忔濓紝榪欓兘瑕佹劅璋㈣佸笀鐨勬牻鍩癸紝鎴戝鎮ㄧ殑鏅話濡傛粩婊旀睙姘?.....<br>鏅烘収鐨勮佸笀錛氬埆鑷璓浜嗭紝鎴戣瘽榪樻病鏈夎瀹岄偅......濡傛灉浣犻渶瑕佹彁鍙栧拰淇濆瓨鐨勪俊鎭緢澶氾紝緇撴瀯寰堝鏉?.....鎬庝箞鍔烇紵<br>鎳墊噦鐨勫鐢燂細涔熷ソ鍔烇紝鎴戣璁′竴涓粨鏋勬潵璁板綍榪欎簺淇℃伅銆?br>鏅烘収鐨勮佸笀錛氭仼......涓嶉敊銆備絾濡傛灉榪欎簺淇℃伅鎻愪緵鏂規槸鍒漢鍐欑殑妯″潡錛屽茍涓旈殢鐫鐗堟湰鐨勪笉鍚岃繕緇忓父鍙樺寲錛屼綘鎬庝箞鍔烇紵<br>鎳墊噦鐨勫鐢燂細... ...<strong><br></strong>鏅烘収鐨勮佸笀錛氳В鍐寵繖浜涢棶棰樼殑鏂規硶鏄?--鎸佺畫鎬с?strong><br><br>浜屻佸師鐞?br></strong>銆銆鎸佺畫鎬э紝涔熷彨姘鎬箙鎬с傜粍浠舵柟鎻愪緵 IPersistXXX 鎺ュ彛錛岃皟鐢ㄨ咃紙瀹瑰櫒錛夋彁渚涘瓨鍌ㄤ粙璐紝姣斿鏂囦歡鍟︺佸唴瀛樺暒銆佹敞鍐岃〃鍟︺佹祦鍟︺佹枃鏈暒......鍟﹀暒鎷夈傞渶瑕佷繚瀛樼殑鏃跺欙紝璋冪敤鑰呴氳繃 IPersistXXX::Save() 鎺ュ彛鍑芥暟璁╃粍浠跺幓鑷繁瀛樺偍灞炴т俊鎭紝鑰岃皟鐢ㄨ呮牴鏈笉鐢ㄥ叧蹇冨瓨鍌ㄦ牸寮忓拰瀛樺偍鍐呭錛涢渶瑕佽繕鍘熺姸鎬佺殑鏃跺欙紝璋冪敤鑰呮墦寮瀛樺偍浠嬭川錛岀劧鍚庡悓鏍瘋皟鐢?IPersistXXX::Load() 鎺ュ彛鍑芥暟璁╃粍浠惰嚜宸卞幓璇誨彇灞炴т俊鎭茍瀹屾垚鍒濆鍖栫殑璁劇疆銆?br>銆銆鐩墠錛屽井杞畾涔変簡濡備笅鍚勭綾誨瀷鐨勬寔緇ф帴鍙o紝瓚沖婊¤凍浣犵殑闇姹備簡銆傛垜浠彧瑕佸湪鑷繁鍐欑殑緇勪歡涓疄鐜板叾涓竴涓垨鍑犱釜鎸佺畫鎬ф帴鍙o紝閭d箞璋冪敤鑰呭氨鍙互鎸夌収緇熶竴鐨勬柟寮忓拰鎴戜滑鐨勭粍浠跺崗鍟嗗畬鎴愬睘鎬т俊鎭殑淇濆瓨鍜岀姸鎬佽繕鍘熶簡銆?br>銆 <table cellSpacing=1 width="100%" border=1> <tbody> <tr> <td align=middle width="20%"><strong>鎸佺畫鎬ф帴鍙?/strong></td> <td align=middle width="80%" colSpan=2><strong>綆瑕佽鏄?/strong></td> </tr> <tr> <td width="20%">IPersist</td> <td width="80%" colSpan=2> 銆銆鎵鏈夋寔緇ф帴鍙g殑鏍癸紝涓嬮潰鐨勬帴鍙eぇ澶氫粠瀹冩淳鐢熷嚭鏉ャ傝繖涓帴鍙e緢綆鍗曪紝鍙湁涓涓嚱鏁?GetClassID()瀹冭繑鍥炵粍浠剁殑 CLSID 鍙鳳紝浠ヤ究璋冪敤鑰呰兘淇濆瓨榪欎釜鍙蜂負灝嗘潵 CoCreateInstance() 鍚姩緇勪歡鐢ㄣ?br> 銆銆瀹炵幇榪欎釜鍑芥暟涔熷緢綆鍗曪紝鍙榪斿洖浣犵粍浠朵腑鐨?CLSID_XXX 鍗沖彲錛屾垨鑰呮瘮杈冪渷浜嬬殑鏂規硶鏄繑鍥?GetObjectCLSID() 銆?/td> </tr> <tr> <td width="20%" rowSpan=5>IPersistStream</td> <td width="80%" colSpan=2> <p align=center>媧劇敓鑷?IPersist錛屽茍澧炲姞浜?涓嚱鏁幫紝浠庢祦(IStream)涓鍐欑粍浠跺睘鎬т俊鎭?/p> </td> </tr> <tr> <td width="15%">IsDirty()</td> <td width="65%">緇勪歡鍐呴儴灞炴ф槸鍚﹀彂鐢熶簡鍙樺寲銆備負璋冪敤鑰呮槸鍚﹂渶瑕佷繚瀛樹俊鎭彁渚涗緷鎹?/td> </tr> <tr> <td width="15%">Load()</td> <td width="65%">浠?IStream 涓鍏ヤ俊鎭紝鍒濆鍖栫粍浠跺睘鎬?/td> </tr> <tr> <td width="15%">Save()</td> <td width="65%">鎶婂睘鎬т俊鎭繚瀛樺埌 IStream 涓?/td> </tr> <tr> <td width="15%">GetSizeMax()</td> <td width="65%">榪斿洖淇℃伅灝哄錛屼互渚胯皟鐢ㄨ呬簨鍏堝紑杈熺┖闂?/td> </tr> <tr> <td width="20%">IPersistStreamInit</td> <td width="80%" colSpan=2>媧劇敓鑷?IPersistStream錛屽茍鍐嶅鍔犱簡涓涓嚱鏁?InitNew() 鐢ㄦ潵瀹屾垚涓涓粯璁ょ殑緇勪歡灞炴у垵濮嬪寲銆?br>榪欎釜鎸佺畫鎬ф帴鍙f槸鏈甯哥敤鐨勶紝鏈枃紺轟緥涓氨瀹炵幇浜嗚鎺ュ彛銆?/td> </tr> <tr> <td width="20%">IPersistMemory</td> <td width="80%" colSpan=2>鍜?IPersistStreamInit 綾諱技錛屼絾浣跨敤鐨勬槸鍐呭瓨鍧楋紝鑰屼笉鏄ぇ灝忓彲鍙樺寲鐨?IStream 嫻併?/td> </tr> <tr> <td width="20%">IPersistStorage</td> <td width="80%" colSpan=2>鍜?IPersistStream 綾諱技錛屼絾淇濆瓨灞炴т俊鎭嬌鐢ㄧ殑鏄瓨鍌?IStorage錛屼竴涓?IStorage 涓彲浠ユ湁澶氫釜 IStream銆?/td> </tr> <tr> <td width="20%">IPersistFile</td> <td width="80%" colSpan=2>鍜?IPersistStream 綾諱技錛屼絾瀛樺偍浠嬭川涓烘枃浠躲?/td> </tr> <tr> <td width="20%">IPersistPropertyBag</td> <td width="80%" colSpan=2> 銆銆浣跨敤灞炴у寘錛堝睘鎬у悕銆佸睘鎬у鹼級鐨勬枃鏈柟寮忎繚瀛樹俊鎭傚湪 IE 嫻忚鍣ㄤ腑錛孒TML 宓屽叆 ActiveX 鎺т歡閫氬父浣跨敤榪欎釜鏂規硶銆?br> 銆銆鍦?HTML 涓彃鍏ユ帶浠訛紝<param name="灞炴у悕縐? value="鍊?> 榪欐牱鐨勫艦寮忎綘搴旇瑙佽繃鍚э紵錛?br> 銆銆鍦ㄤ笅涓鍥炵殑鏂囩珷涓紝鎴戜滑浠嬬粛榪欎釜鎺ュ彛銆傚洜涓哄湪 ActiveX 涓紝瀹冨お甯哥敤浜嗐?/td> </tr> <tr> <td width="20%">IPersistPropertyBag2</td> <td width="80%" colSpan=2>鎵╁睍浜?IPersistPropertyBag 鎺ュ彛銆傛彁渚涗簡鏇翠赴瀵屼竴浜涚殑灞炴х鐞嗙敤鍑芥暟銆?/td> </tr> <tr> <td width="20%">IPersistMoniker</td> <td width="80%" colSpan=2>鐢ㄤ簬鍛藉悕(moniker)瀛樺偍鍜岃鍙栫姸鎬佺殑鎸佺畫鎬ф帴鍙c?/td> </tr> <tr> <td width="20%">IPersistHistory</td> <td width="80%" colSpan=2>榪愯浜?IE 涓婏紝鎯沖湪鐢ㄦ埛嫻忚 WEB 欏甸潰鏃跺瓨鍌ㄥ拰璇誨彇鐘舵佺殑鎸佺畫鎬ф帴鍙c?/td> </tr> </tbody> </table> </p> <p><strong>涓夈佹寔緇ф帴鍙g粍浠剁殑瀹炵幇</strong><br>銆銆紺轟緥紼嬪簭鍒嗗埆鍦?vc6.0 鍜?vc.net 涓婂疄鐜頒簡 IPersistStreamInit 鎺ュ彛鐨?COM 緇勪歡鍜岃皟鐢ㄤ婦渚嬨傜粍浠跺畬鎴愮殑鍔熻兘鏄綆楃礌鏁幫紝浣犵涓嬈¤繍琛岀殑鏃跺欙紝浼氬緱鍒扮涓涓礌鏁?錛岀劧鍚庢槸3錛?錛?錛?1......涓嬬彮鏃墮棿鍒頒簡錛屼粖澶╁氨榪愯鍒拌繖閲屻備簬鏄皟鐢ㄨ呭紑杈熶竴涓祦鏉ヤ繚瀛樼粍浠剁殑灞炴т俊鎭傛槑澶╃戶緇繍琛岀殑鏃跺欙紝浠庢祦涓師鎹㈢粍浠剁姸鎬侊紝寮濮嬩簡鏂扮殑璁$畻 13錛?7錛?9錛?3......<br>銆銆榪欎釜紺轟緥搴旂敤瀹屽叏鏄亣璁炬х殑錛屽叾瀹炴病鏈変粈涔堝疄鐢ㄤ環鍊鹼紝鍙槸婕旂ず浜?IPersistStreamInit 鎺ュ彛鐨勫疄鐜版柟娉曘傚彟澶栵紝鍏充簬寤虹珛嫻?IStream)鐨勬柟娉曪紝璇峰弬闃?a ><u><font color=#0000ff>銆?/font></u></a><a target=_blank><u><font color=#0000ff>COM 緇勪歡璁捐涓庡簲鐢紙涓錛夈?/font></u></a>銆?br><br>1銆佸緩绔嬩竴涓?ATL 宸ョ▼欏圭洰銆?br>2銆佸鍔?ATL 緇勪歡綾伙紝vc.net 浣跨敤鑰呮敞鎰忎笉瑕侀夋嫨“灞炴у寲緙栫▼”鏂瑰紡錛屽叾瀹冪殑璁劇疆鍏ㄩ儴浣跨敤榛樿鏂規硶銆傚綋鐒朵綘鎰挎剰閫傚綋鍦版敼鍙橀夋嫨涔熸棤鎵璋撱?br>3銆佽璁″畬鎴愪綘鐨勭粍浠跺姛鑳姐?br>   紺轟緥紼嬪簭涓紝瀹炵幇浜嗕竴涓帴鍙e嚱鏁?GetNext() 璐熻矗璁$畻涓嬩竴涓礌鏁般?br>4銆佹坊鍔營PersistStreamInit 鎺ュ彛銆?/p> <pre>class ATL_NO_VTABLE Cxxx : public CComObjectRootEx<...> , public CComCoClass<...>, ...... <strong>public IPersistStreamInit // 鎵嬪伐娣誨姞鎸佺畫鎬ф帴鍙?/strong>{......BEGIN_COM_MAP(Cxxx) ......<strong> // 鎵嬪伐娣誨姞鎺ュ彛鏄犲皠琛ㄥ叆鍙?COM_INTERFACE_ENTRY(IPersistStreamInit) // 琛ㄧず濡傛灉瑕佸彇寰?IPersistStream 鎸囬拡錛屽垯榪斿洖 IPersistStreamInit 鎸囬拡 COM_INTERFACE_ENTRY_IID(IID_IPersistStream, IPersistStreamInit) // 琛ㄧず濡傛灉瑕佸彇寰?IPersist 鎸囬拡錛屽垯榪斿洖 IPersistStremInit 鎸囬拡 COM_INTERFACE_ENTRY_IID(IID_IPersist, IPersistStreamInit)</strong>END_COM_MAP()</pre> 5銆佸畬鎴?IPersistStreamInit 鎺ュ彛鍑芥暟銆?br>鎵嬪伐鍦?h 澶存枃浠朵腑澧炲姞鍑芥暟澹版槑錛? <pre>public:// IPersist STDMETHOD(GetClassID)(/*[out]*/CLSID * pClassID);// IPersistStream STDMETHOD(IsDirty)(void); STDMETHOD(Load)(/*[in]*/IStream *pStm); STDMETHOD(Save)(/*[in]*/IStream *pStm,/*[in]*/BOOL fClearDirty); STDMETHOD(GetSizeMax)(/*[out]*/ULARGE_INTEGER *pcbSize);// IPersistStreamInit STDMETHOD(InitNew)(void);</pre> 鎵嬪伐鍦?cpp 鏂囦歡涓鍔犲嚱鏁板疄鐜幫細 <pre>// IPersistSTDMETHODIMP Cxxx::GetClassID(/*[out]*/CLSID * pClassID){ *pClassID = GetObjectCLSID(); return S_OK;}// IPersistStreamSTDMETHODIMP Cxxx::IsDirty(void){ if( 鏁版嵁宸茬粡鏀瑰彉錛岄渶瑕佷繚瀛?) return S_OK; else return S_FALSE;}STDMETHODIMP Cxxx::Load(/*[in]*/IStream *pStm){ return pStm->Read( 璇誨埌鍝噷, 璇誨闀垮瓧鑺? NULL);}STDMETHODIMP Cxxx::Save(/*[in]*/IStream *pStm,/*[in]*/BOOL fClearDirty){ if( fClearDirty ) 娓呴櫎鍐呴儴琛ㄧず鏁版嵁鍙樺寲鐨勫彉閲? return pStm->Write( 闇瑕佷繚瀛樼殑鏁版嵁鎸囬拡, 鍐欏闀垮瓧鑺? NULL );}STDMETHODIMP Cxxx::GetSizeMax(/*[out]*/ULARGE_INTEGER *pcbSize){ pcbSize->LowPart = 闇瑕佷繚瀛樻暟鎹暱搴︾殑浣庝綅; pcbSize->HighPart = 闇瑕佷繚瀛樻暟鎹暱搴︾殑楂樹綅;// 涓鑸兘鏄?錛岄毦閬撲綘鐨勬暟鎹暱搴﹂兘瓚呰繃浜?4G錛?return S_OK;}// IPersistStreamInitSTDMETHODIMP Cxxx::InitNew(void){ 鍐呴儴灞炴ф暟鎹粯璁ゅ垵濮嬪寲; 璁劇疆鎴栨竻闄ゅ唴閮ㄨ〃紺烘暟鎹彉鍖栫殑鍙橀噺; return S_OK;}</pre> <strong>鍥涖佸皬緇?/strong><br>銆銆涓嬭澆紺轟緥紼嬪簭鍚庯紝緇撳悎鏈枃浠旂粏闃呰浠g爜錛屽茍璇曠潃榪愯鐪嬬湅鏁堟灉銆傚鏋滀綘鐞嗚В浜嗭紝閭d箞浣犺兘鑷繁瀹炵幇 IPersistFile 鎺ュ彛鍚楋紵浣犺兘鑷繁瀹炵幇 IPersistStorage 鎺ュ彛鍚楋紵<strong>浣犲疄鐜扮殑鎸佺畫鎬ф帴鍙h秺澶氾紝鍒漢浣跨敤浣犵殑緇勪歡灝辮秺鏂逛究</strong>錛屼篃灝辨槸璇翠綘鐨勭粍浠跺氨鑳藉ぇ鍗栫壒鍗栧暒錛岀浣犱負涓浗杞歡浜嬩笟鍋氳礎鐚殑鍚屾椂澶氬璧氶挶:-)涓嬪洖鎴戜滑鐢?IPersistPropertyBag 鎺ュ彛瀹炵幇鎸佺畫鎬у睘鎬у寘鍔熻兘錛屽埆蹇樹簡鐪嬪懄......<br> <img src ="http://m.shnenglu.com/mydriverc/aggbug/29016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mydriverc/" target="_blank">鏃呴?/a> 2007-07-30 15:59 <a href="http://m.shnenglu.com/mydriverc/articles/29016.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://cz-hongbangfloor.com" target="_blank">国产精品羞羞答答xxdd</a>| <a href="http://missav88.com" target="_blank">亚洲视频一二</a>| <a href="http://zj-jufeng.com" target="_blank">一区二区免费在线视频</a>| <a href="http://cn1357.com" target="_blank">日韩视频在线免费观看</a>| <a href="http://zj-jufeng.com" target="_blank">亚洲免费高清视频</a>| <a href="http://zuan3344.com" target="_blank">99re视频这里只有精品</a>| <a href="http://avtaobao7788.com" target="_blank">一区二区三区色</a>| <a href="http://zz-777.com" target="_blank">亚洲欧美资源在线</a>| <a href="http://by1422.com" target="_blank">久久久久久久一区二区</a>| <a href="http://wnboke.com" target="_blank">麻豆av福利av久久av</a>| <a href="http://9882355.com" target="_blank">亚洲高清久久</a>| <a href="http://by71222.com" target="_blank">亚洲人成网站在线播</a>| <a href="http://26mmmm.com" target="_blank">亚洲美女诱惑</a>| <a href="http://aijiaoji.com" target="_blank">午夜一区二区三区在线观看</a>| <a href="http://xhamtube.com" target="_blank">久久av资源网站</a>| <a href="http://ebmsci.com" target="_blank">欧美日本国产在线</a>| <a href="http://sdgs6788.com" target="_blank">国产日韩欧美在线</a>| <a href="http://www-44469.com" target="_blank">日韩视频国产视频</a>| <a href="http://6567ya.com" target="_blank">欧美亚洲免费在线</a>| <a href="http://7755mm.com" target="_blank">欧美激情精品久久久久</a>| <a href="http://buyiker.com" target="_blank">制服丝袜激情欧洲亚洲</a>| <a href="http://5474hu.com" target="_blank">久久亚洲综合网</a>| <a href="http://sdsptl.com" target="_blank">国产精品久久</a>| <a href="http://trhht.com" target="_blank">一区二区在线免费观看</a>| <a href="http://844985.com" target="_blank">亚洲午夜激情网站</a>| <a href="http://6673328.com" target="_blank">久久亚洲欧洲</a>| <a href="http://zjkgjt.com" target="_blank">亚洲一区在线观看视频 </a>| <a href="http://7ccdd.com" target="_blank">亚洲一区三区电影在线观看</a>| <a href="http://zisxks.com" target="_blank">久久成人免费日本黄色</a>| <a href="http://ndr666.com" target="_blank">欧美日韩成人综合天天影院</a>| <a href="http://oksousou.com" target="_blank">国产欧美va欧美不卡在线</a>| <a href="http://8135777.com" target="_blank">亚洲国产一区二区三区青草影视 </a>| <a href="http://mm778899.com" target="_blank">一区在线电影</a>| <a href="http://wallypanel.com" target="_blank">亚洲午夜三级在线</a>| <a href="http://jorhom.com" target="_blank">欧美激情国产日韩</a>| <a href="http://d1112.com" target="_blank">欧美一级免费视频</a>| <a href="http://hnautos.com" target="_blank">欧美视频亚洲视频</a>| <a href="http://ttzbdl.com" target="_blank">亚洲欧洲在线播放</a>| <a href="http://345fz.com " target="_blank">久久婷婷亚洲</a>| <a href="http://www-222304.com" target="_blank">午夜一区不卡</a>| <a href="http://789583.com" target="_blank">国产精品私人影院</a>| <a href="http://www-5888c.com" target="_blank">日韩亚洲欧美综合</a>| <a href="http://236fff.com" target="_blank">欧美成人亚洲成人日韩成人</a>| <a href="http://tavbao.com" target="_blank">亚洲欧美久久久久一区二区三区</a>| <a href="http://fengboll.com" target="_blank">母乳一区在线观看</a>| <a href="http://bocai4488.com" target="_blank">亚洲第一成人在线</a>| <a href="http://ccc982.com" target="_blank">久久综合久色欧美综合狠狠 </a>| <a href="http://xingcheny.com" target="_blank">久久一区激情</a>| <a href="http://wb2014.com" target="_blank">亚洲一区国产精品</a>| <a href="http://qmynong.com" target="_blank">国产精品国产自产拍高清av</a>| <a href="http://176sfsf.com" target="_blank">夜夜嗨av一区二区三区四区</a>| <a href="http://193youwu.com" target="_blank">欧美激情国产日韩精品一区18</a>| <a href="http://jiucao8.com" target="_blank">久久久精品日韩欧美</a>| <a href="http://xxdd51.com" target="_blank">国产深夜精品</a>| <a href="http://fengxinye.com" target="_blank">欧美有码视频</a>| <a href="http://hfztkyhfz.com" target="_blank">午夜影视日本亚洲欧洲精品</a>| <a href="http://zhengnuoxin.com" target="_blank">国产精品综合网站</a>| <a href="http://4884888.com" target="_blank">欧美一区二区三区精品</a>| <a href="http://happyelephantv.com" target="_blank">亚洲图片自拍偷拍</a>| <a href="http://3990033.com" target="_blank">国产精品热久久久久夜色精品三区</a>| <a href="http://160160160.com" target="_blank">99精品视频一区</a>| <a href="http://ziwufuren.com" target="_blank">亚洲黄色免费网站</a>| <a href="http://689558.com" target="_blank">欧美精品一区二区在线观看</a>| <a href="http://emu160.com" target="_blank">99综合电影在线视频</a>| <a href="http://110673.com" target="_blank">亚洲日本理论电影</a>| <a href="http://wce-expo.com" target="_blank">欧美日韩免费看</a>| <a href="http://70909g.com" target="_blank">亚洲在线中文字幕</a>| <a href="http://www49718.com" target="_blank">亚洲视频欧美视频</a>| <a href="http://8x1080x.com" target="_blank">国产日韩欧美麻豆</a>| <a href="http://ww245434.com" target="_blank">老司机精品导航</a>| <a href="http://china-cvct.com" target="_blank">美日韩精品免费</a>| <a href="http://yye321.com" target="_blank">99精品福利视频</a>| <a href="http://lfxhfh.com" target="_blank">中文成人激情娱乐网</a>| <a href="http://avtaobao7788.com" target="_blank">国产精品午夜视频</a>| <a href="http://tianxiantxtv.com" target="_blank">久久亚洲国产精品一区二区</a>| <a href="http://778km.com" target="_blank">毛片精品免费在线观看</a>| <a href="http://avtb2068.com" target="_blank">日韩一级大片在线</a>| <a href="http://wnboke.com" target="_blank">亚洲综合电影一区二区三区</a>| <a href="http://65kf.com" target="_blank">国产色婷婷国产综合在线理论片a</a>| <a href="http://405151.com" target="_blank">久久伊人亚洲</a>| <a href="http://5yy6.com" target="_blank">欧美日韩的一区二区</a>| <a href="http://www-333304.com" target="_blank">欧美一二三视频</a>| <a href="http://993934.com" target="_blank">久久久久久久波多野高潮日日</a>| <a href="http://fs-nanxiang.com" target="_blank">亚洲精华国产欧美</a>| <a href="http://xxoo668.com" target="_blank">亚洲视频一起</a>| <a href="http://26mmmm.com" target="_blank">亚洲国产另类精品专区</a>| <a href="http://hzjqkj.com" target="_blank">99精品国产在热久久</a>| <a href="http://5110010.com" target="_blank">国产亚洲精品aa</a>| <a href="http://80hogo.com" target="_blank">亚洲国产色一区</a>| <a href="http://6767673.com" target="_blank">国产精品揄拍500视频</a>| <a href="http://92ebook.com" target="_blank">久久精品五月</a>| <a href="http://xyyssa.com" target="_blank">一本综合精品</a>| <a href="http://cpddddcc.com" target="_blank">久久国产欧美日韩精品</a>| <a href="http://dd8uau0ncu.com" target="_blank">亚洲乱码国产乱码精品精可以看</a>| <a href="http://www51avav.com" target="_blank">夜色激情一区二区</a>| <a href="http://www-919198.com" target="_blank">国色天香一区二区</a>| <a href="http://xmjhyey.com" target="_blank">99精品国产在热久久</a>| <a href="http://456kp.com" target="_blank">国产在线精品成人一区二区三区 </a>| <a href="http://jilcool.com" target="_blank">欧美激情中文字幕一区二区</a>| <a href="http://choaoxing.com" target="_blank">欧美日韩国产va另类</a>| <a href="http://www-878899.com" target="_blank">久久激情久久</a>| <a href="http://wwwavtb1122.com" target="_blank">欧美日韩a区</a>| <a href="http://pgd857.com" target="_blank">久久综合久色欧美综合狠狠</a>| <a href="http://caobenfan1891.com" target="_blank">欧美久久综合</a>| <a href="http://gzxyh88.com" target="_blank">免费在线观看一区二区</a>| <a href="http://www9797abc.com" target="_blank">国产精品亚洲精品</a>| <a href="http://diyiao.com" target="_blank">亚洲精品色图</a>| <a href="http://avtt59999.com" target="_blank">亚洲国产精品ⅴa在线观看</a>| <a href="http://by2565.com" target="_blank">亚洲一区二区三区精品在线观看</a>| <a href="http://www-333410.com" target="_blank">亚洲福利视频三区</a>| <a href="http://hbshwx.com" target="_blank">午夜综合激情</a>| <a href="http://www151zh.com" target="_blank">亚洲女女女同性video</a>| <a href="http://xigou666.com" target="_blank">免费在线播放第一区高清av</a>| <a href="http://cnc800.com" target="_blank">性欧美videos另类喷潮</a>| <a href="http://hhhtalk.com" target="_blank">欧美激情亚洲视频</a>| <a href="http://ssss96.com" target="_blank">麻豆精品视频在线观看视频</a>| <a href="http://660507jj.com" target="_blank">国产精品自拍在线</a>| <a href="http://668334.com" target="_blank">亚洲一区二区三区777</a>| <a href="http://www-888005.com" target="_blank">奶水喷射视频一区</a>| <a href="http://9ctv2.com" target="_blank">久久久久成人网</a>| <a href="http://by4672.com" target="_blank">国产精品高潮呻吟视频</a>| <a href="http://ylnnc.com" target="_blank">亚洲精品一区二区三区av</a>| <a href="http://1323666.com" target="_blank">亚洲高清不卡</a>| <a href="http://ddnwater.com" target="_blank">久久国产66</a>| <a href="http://681656.com" target="_blank">久久精品人人做人人综合 </a>| <a href="http://77777de.com" target="_blank">国产精品久久久91</a>| <a href="http://balqueen.com" target="_blank">91久久国产综合久久91精品网站</a>| <a href="http://cibocentre.com" target="_blank">国产自产在线视频一区</a>| <a href="http://621762.com" target="_blank">亚洲免费中文</a>| <a href="http://7343888.com" target="_blank">午夜久久tv</a>| <a href="http://s3yx.com" target="_blank">国产精品一区二区三区观看</a>| <a href="http://5757ff.com" target="_blank">亚洲私拍自拍</a>| <a href="http://s0247.com" target="_blank">亚洲资源在线观看</a>| <a href="http://yp889.com" target="_blank">欧美日韩综合在线</a>| <a href="http://jiazhuangma.com" target="_blank">亚洲精品中文字</a>| <a href="http://ccc36-com.com" target="_blank">99国产精品视频免费观看</a>| <a href="http://zhouqie.com" target="_blank">欧美成人精品一区二区三区</a>| <a href="http://maiiyou.com" target="_blank">狼人社综合社区</a>| <a href="http://8842aa.com" target="_blank">韩国av一区二区三区</a>| <a href="http://instantptt.com" target="_blank">欧美一区二区三区婷婷月色 </a>| <a href="http://16kkkk.com" target="_blank">一区二区三区不卡视频在线观看</a>| <a href="http://ycpeixun.com" target="_blank">麻豆freexxxx性91精品</a>| <a href="http://wwww76.com" target="_blank">欧美777四色影视在线</a>| <a href="http://551731.com" target="_blank">亚洲国产成人久久</a>| <a href="http://proenhub.com" target="_blank">女女同性精品视频</a>| <a href="http://www1982t.com" target="_blank">亚洲第一精品福利</a>| <a href="http://69xxx6.com" target="_blank">亚洲精品国产无天堂网2021</a>| <a href="http://hhhh19.com" target="_blank">欧美—级高清免费播放</a>| <a href="http://qiezi2vip.com" target="_blank">亚洲免费不卡</a>| <a href="http://3534m.com" target="_blank">国产精品国产自产拍高清av王其 </a>| <a href="http://710195.com" target="_blank">日韩午夜在线电影</a>| <a href="http://787282.com" target="_blank">亚洲欧美激情精品一区二区</a>| <a href="http://689657.com" target="_blank">国产精品家庭影院</a>| <a href="http://8135777.com" target="_blank">亚洲欧美另类国产</a>| <a href="http://qdzhudai.com" target="_blank">老**午夜毛片一区二区三区</a>| <a href="http://kk553.com" target="_blank">亚洲精品美女91</a>| <a href="http://mmmm37.com" target="_blank">欧美午夜a级限制福利片</a>| <a href="http://pron12.com" target="_blank">亚洲天堂成人在线观看</a>| <a href="http://jiazhuangma.com" target="_blank">性感少妇一区</a>| <a href="http://sinojinxing.com" target="_blank">1204国产成人精品视频</a>| <a href="http://www47011.com" target="_blank">欧美激情第10页</a>| <a href="http://3dmh133.com" target="_blank">亚洲网站视频福利</a>| <a href="http://www520590.com" target="_blank">狂野欧美一区</a>| <a href="http://138128.com" target="_blank">一区二区三区精密机械公司</a>| <a href="http://1392266.com" target="_blank">国产精品日韩欧美一区二区三区</a>| <a href="http://xhamtube.com" target="_blank">欧美伊人精品成人久久综合97</a>| <a href="http://2ejj.com" target="_blank">你懂的亚洲视频</a>| <a href="http://lorgou.com" target="_blank">亚洲视频免费观看</a>| <a href="http://987527.com" target="_blank">国产一区二区三区的电影</a>| <a href="http://194123.com" target="_blank">欧美不卡福利</a>| <a href="http://my777752.com" target="_blank">亚洲视频在线观看</a>| <a href="http://8111357.com" target="_blank">欧美二区视频</a>| <a href="http://fjccjq.com" target="_blank">欧美在线首页</a>| <a href="http://689992.com" target="_blank">亚洲人成网站在线观看播放</a>| <a href="http://668756.com" target="_blank">国产精品日日摸夜夜添夜夜av </a>| <a href="http://xsjgxx.com" target="_blank">亚洲免费观看高清完整版在线观看</a>| <a href="http://353033.com" target="_blank">欧美日韩国产小视频在线观看</a>| <a href="http://5a07.com" target="_blank">亚洲女人小视频在线观看</a>| <a href="http://dkmcjc.com" target="_blank">欧美国产免费</a>| <a href="http://juegold.com" target="_blank">欧美一区在线看</a>| <a href="http://k82net.com" target="_blank">亚洲人成小说网站色在线</a>| <a href="http://belerbb.com" target="_blank">国产精品永久在线</a>| <a href="http://ccltb.com" target="_blank">欧美日韩一区二区国产</a>| <a href="http://lampreydb.com" target="_blank">久久精品99国产精品</a>| <a href="http://njggmy.com" target="_blank">一区二区国产日产</a>| <a href="http://344230.com" target="_blank">欧美黄在线观看</a>| <a href="http://954k.com" target="_blank">久久一区二区三区av</a>| <a href="http://zhongqingshiye.com" target="_blank">这里是久久伊人</a>| <a href="http://163263.com" target="_blank">亚洲七七久久综合桃花剧情介绍</a>| <a href="http://yiapk.com" target="_blank">国产精品婷婷午夜在线观看</a>| <a href="http://4y9k.com" target="_blank">欧美国产日本</a>| <a href="http://1194123.com" target="_blank">欧美一区二区视频网站</a>| <a href="http://irongxun.com" target="_blank">亚洲一二三四久久</a>| <a href="http://7343888.com" target="_blank">日韩视频中文字幕</a>| <a href="http://qhzyxcd.com" target="_blank">亚洲黄色在线</a>| <a href="http://dy25777.com" target="_blank">亚洲国产一区二区三区高清</a>| <a href="http://yada-jg.com" target="_blank">噜噜噜久久亚洲精品国产品小说</a>| <a href="http://ythbhg.com" target="_blank">午夜精品福利电影</a>| <a href="http://zhuankee.com" target="_blank">亚洲视频1区</a>| <a href="http://58yewu.com" target="_blank">妖精视频成人观看www</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>