锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲与欧洲av电影,亚洲日本aⅴ片在线观看香蕉,亚洲欧美综合vhttp://m.shnenglu.com/gracelee/zh-cnMon, 29 Sep 2025 20:23:48 GMTMon, 29 Sep 2025 20:23:48 GMT60BSTR CComBSTR鍙夾TL瀛楃涓茶漿鎹㈠畯http://m.shnenglu.com/gracelee/archive/2011/12/03/161380.html灝忚懕铇擱叡灝忚懕铇擱叡Sat, 03 Dec 2011 14:56:00 GMThttp://m.shnenglu.com/gracelee/archive/2011/12/03/161380.htmlhttp://m.shnenglu.com/gracelee/comments/161380.htmlhttp://m.shnenglu.com/gracelee/archive/2011/12/03/161380.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/161380.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/161380.html闃呰鍏ㄦ枃

]]>
DOM緙栫▼涓殑鎺ュ彛寮曠敤璁℃暟http://m.shnenglu.com/gracelee/archive/2011/12/01/161260.html灝忚懕铇擱叡灝忚懕铇擱叡Wed, 30 Nov 2011 16:38:00 GMThttp://m.shnenglu.com/gracelee/archive/2011/12/01/161260.htmlhttp://m.shnenglu.com/gracelee/comments/161260.htmlhttp://m.shnenglu.com/gracelee/archive/2011/12/01/161260.html#Feedback1http://m.shnenglu.com/gracelee/comments/commentRss/161260.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/161260.html 鍦–++ DOM緙栫▼涓紝閫氳繃DOM瀵硅薄鎺ュ彛鐨勫悇縐嶅嚱鏁拌幏寰楃殑鎸囧悜鍚勭DOM瀵硅薄鐨勬帴鍙f寚閽堬紝鍏跺紩鐢ㄨ鏁扮殑鍙樺寲鏄庢牱鐨勶紵鍦ㄧ▼搴忎腑璇ュ浣曚嬌鐢紙鏄懼紡鎴栭殣寮忚皟鐢ˋddRef錛夊拰閲婃斁錛堟樉寮忚皟鐢≧elease錛夋帴鍙f寚閽堝憿錛?br />
MSDN DOM sample 涓婄殑涓涓ず渚嬪緢濂界殑璇存槑浜嗚繖浜涘師鍒欙紝涓嬮潰瀵硅繖綃囨枃绔犵殑浠g爜鍋氫簺鎬葷粨璇存槑銆?br />
鎬葷粨涓涓嬶紝DOM鎺ュ彛鎸囬拡浣跨敤鍜岄噴鏀劇殑瑙勫緥涓猴細
1. 閫氳繃DOM瀵硅薄鎺ュ彛鍑芥暟錛堝綋鐒朵篃鍖呮嫭閫氳繃CoCreateInstance鑾峰緱鐨処XMLDOMDocument錛夎幏寰楃殑鎺ュ彛鎸囬拡錛岄渶瑕佹樉寮忕殑璋冪敤 Release閲婃斁銆傝繖浜涘嚱鏁板IXMLDOMDocument->createElement, IXMLDOMNode->appendChild銆?br /> 2. 瀵逛簬鎵嬪姩璧嬪肩殑鎺ュ彛鎸囬拡錛堝浠g爜涓殑pElemA = pElemOut錛夛紝闇瑕佹樉寮忕殑鍦ㄨ璧嬪肩殑鎸囬拡涓婏紙pElemA錛夎皟鐢ˋddRef鍜孯elease錛屾潵澧炪佸噺寮曠敤璁℃暟銆?br /> 3.鍏朵粬鐨勪嬌鐢ㄥ垯鏃犻渶澧炲噺寮曠敤璁℃暟銆?br />
鍏朵粬錛?br /> Release()榪斿洖寮曠敤璁℃暟鍑?鍚庣殑鍊鹼紝鍗沖鏋滃師鏉ュ紩鐢ㄨ鏁頒負1錛屽垯Release()榪斿洖鍊間負0.
IXMLDOMNode->appendChild()鐨勮緭鍑哄弬鏁版帴鍙f寚閽堝湪鍊間笂涓庤緭鍏ュ弬鏁版帴鍙f寚閽堢浉鍚岋紝鍥犳浜岃呮寚鍚戝悓涓涓狣OM瀵硅薄銆?br />

]]>
鐢–瀹炵幇鐨勪竴涓熀鏈珻OM鎺ュ彛IFoo錛堟潵鑷狢OM Programmer's Cookbook錛夆斺擟瀹炵幇COM鎺ュ彛緋誨垪2http://m.shnenglu.com/gracelee/archive/2009/05/11/82582.html灝忚懕铇擱叡灝忚懕铇擱叡Mon, 11 May 2009 08:28:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/05/11/82582.htmlhttp://m.shnenglu.com/gracelee/comments/82582.htmlhttp://m.shnenglu.com/gracelee/archive/2009/05/11/82582.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/82582.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/82582.html鍦?a href="http://m.shnenglu.com/gracelee/archive/2009/04/29/81414.html">C瀹炵幇COM鎺ュ彛緋誨垪1涓疄鐜扮殑com鎺ュ彛IFoo涓庝嬌鐢ㄥ畠鐨勫鎴瘋﹀悎鍦ㄤ竴璧鳳紝娌℃湁瀹炵幇鍦ㄥ悇鑷垎紱葷殑妯″潡錛屽洜姝や笉絎﹀悎妯″潡鍖栫紪紼嬫濇兂銆傛湰鏈熸坊鍔犵被鍘傛敮鎸侊紝浠ヤ嬌鎺ュ彛鐨勫疄鐜頒笌鎺ュ彛鐨勪嬌鐢ㄧ浉鍒嗙銆?/p>

---------------------------------------------------
綾誨巶鐨勪綔鐢ㄥ埌搴曟槸浠涔堬紵
灝嗘帴鍙g殑瀹炵幇涓庡鎴蜂嬌鐢ㄥ垎紱誨紑鏉ュ悧錛?/p>

涓嶅敖鐒躲備嬌鐢–oCreateInstance錛屽鎴峰彲浠ュ畬鍏ㄤ笉蹇呯煡閬撶被鍘傜殑瀛樺湪錛岃屽垱寤虹粍浠訛紝鑾峰彇緇勪歡瀹炵幇鐨勬帴鍙e茍浣跨敤銆?/p>

鍗矯OM搴撳彲浠ュ畬鍏ㄦ姏寮綾誨巶鐨勬蹇碉紝鑰屾槸鎻愪緵涓涓繖鏍風(fēng)殑鍑芥暟鍘熷瀷錛?br>CoCreateObject(REFID rclsid,...,REFID riid,void **ppItf);
鐢ㄦ埛鍦ㄨ皟鐢ㄧ殑鏃跺欏彲浠ュriid鎻愪緵IID_Unknown鎴栬呯壒瀹氫簬璇ュ璞$殑涓涓帴鍙o紝鐩存帴鑾峰彇璇ュ璞$殑IUnknown鎴栫壒瀹氱殑鎺ュ彛鎸囬拡銆?/p>

鍙互鐪嬪埌錛岃繖姝f槸CoCreateInstance鎵浣滅殑浜嬫儏銆?/p>

1 綾誨巶鎻愪緵浜嗛棿鎺ュ垱寤虹被瀵硅薄鐨勬柟寮忥細鐢ㄦ埛鍙互鍏堣幏鍙栧茍鎸佹湁綾誨巶鎺ュ彛鎸囬拡錛岄氳繃璇ユ寚閽堟墍鎸囧悜鐨勭被鍘傛帴鍙e垱寤虹被瀵硅薄銆傞傜敤浜庨渶瑕佸垱寤哄涓紙鎴栭噸澶嶅垱寤猴級綾誨璞$殑鍦版柟錛屽噺灝戜簡姣忔閮借瀹氫綅瀵硅薄搴撳茍鎶婂璞″簱瑁呭叆鍐呭瓨鐨勫紑閿銆?br>2 綾誨巶鎻愪緵浜嗕繚璇佺粍浠跺簱鐣欏湪鍐呭瓨涓嶈鍗歌澆鍑哄幓鐨勫彟涓縐嶆柟娉曪細綾誨巶鎺ュ彛鍑芥暟LockServer銆傜粍浠跺簱緇存姢涓涓簱鑼冨洿璁℃暟鍣紝鍙湁璇ヨ鏁板櫒涓?鏃訛紝緇勪歡搴撴墠鍏佽鑷繁琚嵏杞藉嚭鍐呭瓨銆傦紙涓庢鐩稿錛屽紩鐢ㄨ鏁版槸綾誨璞¤寖鍥寸殑錛岄氳繃璇ョ被瀹炵幇鐨勫悇涓帴鍙f潵緇存姢銆傚鏋滀竴涓被瀵硅薄鐨勫紩鐢ㄨ鏁拌揪鍒?錛岄偅涔堣瀵硅薄鍗犳湁鐨勫唴瀛樺氨琚噴鏀撅紝璇ュ璞′笂鐨勬帴鍙f寚閽堜篃涓嶅啀鏈夋晥銆傦級
闄や簡璋冪敤LockServer閿佸畾緇勪歡搴撲互澶栵紝褰撳垱寤虹殑緇勪歡涓暟澶т簬0鏃訛紝緇勪歡搴撲篃涓嶈兘琚嵏杞姐備篃鍙互璇達紝璋冪敤涓嬈ockServer()鐨勪綔鐢ㄧ浉褰撲簬鍒涘緩浜嗕竴涓粍浠躲?/p>

-----------------------------------------------------------------------
瀹㈡埛涓渚э細
1 浣跨敤涓涓帴鍙i渶瑕佺煡閬撳摢浜涗俊鎭紵
澶囬夛細
鎺ュ彛IID
綾誨璞★紙綾誨巶錛塁LSID錛堟垨ProgID錛?br>鎺ュ彛鍑芥暟鍘熷瀷錛堝弬鏁頒釜鏁幫紝綾誨瀷錛岃繑鍥炲鹼級
瀹炵幇鎺ュ彛緇勪歡鐨勭嚎紼嬫ā鍨嬶紙榪涚▼鍐呫佽繘紼嬪銆佽繙紼嬶級錛?br>綾誨瀷搴搕ypelib淇℃伅錛?/p>

鏈嶅姟涓渚э細
2 瀹炵幇涓涓粍浠跺拰鎺ュ彛浠ヤ緵瀹㈡埛璋冪敤錛岄渶瑕佹彁渚涘摢浜涗笢瑗匡紵
澶囬夛細
鎵鏈夊鎴蜂嬌鐢ㄧ粍浠跺拰鎺ュ彛鎵闇鐨勫唴瀹?br>棰濆鐨勮繕鏈夛細


--------------------------------------------------------------------
涓篸ll娣誨姞.def鏂囦歡涓庣洿鎺ュ湪闇瑕佸鍑虹殑鍑芥暟瀹氫箟澶勬寚瀹歘declspec( dllexport )鏈夊尯鍒悧錛熷鏋滄湁鏄粈涔堝尯鍒紵

鎴戝彂鐜板湪outdll.c涓繖鏍鋒寚瀹氾細
__declspec( dllexport ) HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
浼氫駭鐢熺紪璇戦敊璇細
1>------ Build started: Project: outside, Configuration: Debug Win32 ------
1>Compiling...
1>outdll.c
1>d:\outside-cf\outside\outdll.c(19) : error C2375: 'DllGetClassObject' : redefinition; different linkage
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h(833) : see declaration of 'DllGetClassObject'
1>Build log was saved at "file://d:\outside-cf\outside\Debug\BuildLog.htm"
1>outside - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

c2375鐨勮В閲婃剰鎬濇槸鍑洪敊鐨勫嚱鏁頒嬌鐢ㄧ殑閾炬帴鎸囩ず絎︿笌涔嬪墠澹版槑鐨勪笉鍚屻?br>Compiler Error C2375
'function' : redefinition; different linkage

The function is already declared with a different linkage specifier.

objbase.h涓0鏄庝簡DllGetClassObject()鍑芥暟錛?br>STDAPI  DllGetClassObject(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID FAR* ppv);

鑰屼嬌鐢?def鏂囦歡灝辨病鏈夐棶棰樸?/p>

-----------------------------------------------------------------------------
鍒濇鎵ц緇撴灉錛?/p>

闂灝辨槸鎬繪湁涓涓垎閰嶇殑鍐呭瓨娌℃湁閲婃斁錛?/p>

 


鏍規(guī)嵁鎵撳嵃鍑烘潵鐨勫唴瀛樺湴鍧鍙互鍒ゆ柇錛屽簲璇ユ槸鍏堝垱寤虹殑綾誨巶瀵硅薄鐨勫唴瀛樻病鏈夐噴鏀俱?br>媯鏌ヤ唬鐮侊紝main()涓茍娌℃湁蹇樿璋冪敤Release(pCF)閲婃斁綾誨巶瀵硅薄銆傛墦鍗癛elease(pCF)鐨勮繑鍥炲鹼紝鍙戠幇鏄?錛屽嵆鍦ㄧ被鍘傛帴鍙f寚閽堜笂灝戣皟鐢ㄤ簡涓嬈elease錛岄偅涔堬紝絀剁珶鏄摢閲屽皯鐨勫憿錛?/p>

main()鍑芥暟涓湁鍏崇被鍘傚璞″紩鐢ㄨ鏁扮殑鍦版柟灝辨槸CoGetClassObject鍜孯elease錛圕reateInstance璺熺被鍘傝嚜宸辯殑寮曠敤璁℃暟鏃犲叧錛夛紝榪欐槸涓瀵瑰鍔犲紩鐢ㄨ鏁板拰鍑忓皯寮曠敤璁℃暟鐨勫搴旀搷浣滐紝鎵浠?main()涓簲璇ユ病鏈夐棶棰樸?/p>

閭d箞錛屽氨鍙湁鍒涘緩綾誨巶瀵硅薄鐨勬椂鍊欎簡銆備笅闈㈢湅涓涓嬬被鍘傚璞℃槸濡備綍鍒涘緩鐨勩?br>棣栧厛錛宮ain璋冪敤CoGetClassObject錛岃鍑芥暟灝辮皟鐢╠ll涓殑DllGetClassObject銆傜敱浜庢槸絎竴嬈¤皟鐢紙涓嶈冭檻鍏朵粬瀹㈡埛浣跨敤璇ll鐨勬儏鍐碉級錛岀▼搴忔墽琛屽埌CreateClassFactory(...),璇ュ嚱鏁版墽琛屽畬鍚庯紝綾誨巶瀵硅薄鐨勫紩鐢ㄨ鏁版槸1銆?/p>

鐢變簬鍒涘緩鎴愬姛錛屽洜姝ょ戶緇悜涓嬫墽琛屽埌QueryInterface,姝ゆ椂錛岀被鍘傚璞$殑寮曠敤璁℃暟鍙樻垚浜?銆傜劧鍚庯紝DllGetClassObject榪斿洖錛宑om搴撳嚱鏁癈oGetClassObject涔熷簲璇ヨ繑鍥炪傛敞鎰忥紝姝ゆ椂鐨勭被鍘傚璞″紩鐢ㄨ鏁板凡緇忔槸2浜嗭紒

鍥犳錛岄棶棰樺氨鍑哄湪榪欓噷銆俶ain璋冪敤涓嬈oGetClassObject鍚庯紝綾誨巶瀵硅薄鐨勫紩鐢ㄨ鏁版槸2錛岃屼笉鏄垜鎯沖悜涓殑1銆備簬鏄紝鍚庨潰璋冪敤涓嬈elease涔熷氨褰撶劧鏃犳硶閲婃斁鎺夌被鍦哄璞′簡銆?/p>

 

 

 1 HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
 2 {
 3     *ppv = 0;
 4     if (IsEqualCLSID (rclsid, &CLSID_Outside))
 5     {
 6 
 7         if (!vpcfOutside)
 8 
 9         {
10 
11             HRESULT hr = CreateClassFactory (&CLSID_Outside, CreateOutside,
12                                              &IID_IClassFactory, &vpcfOutside);
13 
14                 if (hr != NOERROR)
15 
16                     return hr;
17         }
18 
19         return QueryInterface (vpcfOutside, riid, ppv);
20 
21     }
22 
23     return E_FAIL;
24 }

 

 


鎵懼埌浜嗗師鍥狅紝鏀規(guī)灝卞緢瀹規(guī)槗浜嗐傝繖閲屾垜瑙夊緱闇瑕佹妸DllGetClassObject浣滃涓嬩慨鏀癸細

 1 HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)
 2 {
 3     *ppv = 0;
 4     if (IsEqualCLSID (rclsid, &CLSID_Outside))
 5     {
 6 
 7         if (!vpcfOutside)
 8 
 9         {
10 
11             HRESULT hr = CreateClassFactory (&CLSID_Outside, CreateOutside,
12                                              &IID_IClassFactory, &vpcfOutside);
13 
14                 if (hr != NOERROR)
15 
16                     return hr;
17 
18     if(IsEqualIID(riid,&IID_IClassFactory))
19     {
20      *ppv = vpcfOutside;// Set *ppv to vpcfOutside directly instead of QueryInterface if first time creation
21      return NOERROR;
22     }
23     else
24     {
25      Release(vpcfOutside);// Any interface requested (riid) other than IID_ClassFactory and IID_Unknown not support by class factory,
26                           // call Release to free the memory.
27      return E_FAIL;
28     }
29 
30         }
31 
32         return QueryInterface (vpcfOutside, riid, ppv);
33 
34     }
35 
36     return E_FAIL;
37 }

 

淇敼鍚庡湪鎵ц錛屽唴瀛橀兘姝e父閲婃斁浜嗐?/p>

-------------------------------------------------------------------------------------------
CreateClassFactory浠g爜璇存槑

 1 HRESULT CreateClassFactory (REFCLSID rclsid,
 2     HRESULT (*pfnCreate)(IUnknown *, REFIID, void **), 
 3     REFIID riid, void **ppv)
 4 {
 5     ClassFactory *this;
 6     HRESULT hr;
 7     
 8     *ppv = 0;
 9     if (hr = Alloc (sizeof (ClassFactory), &this))
10     return hr;
11 
12     this->icf.lpVtbl = &vtblClassFactory;
13     this->cRef = 1;  // After this call, cRef==1
14 
15     this->pfnCreate = pfnCreate;
16     
17     hr = QueryInterface (&this->icf, riid, ppv);  // After this call, cRef==2
18     Release (&this->icf);  // Corresponds to "this->cRef = 1", ater this call, cRef==1
19 
20     return hr;
21 }

 

鍙互鐪嬪埌錛屼袱琛屼唬鐮佺殑鏁堟灉鏄寮曠敤璁℃暟澧?鍙婂噺1錛岃繖涓よ浠g爜鎵ц鍚庯紝瀵瑰紩鐢ㄨ鏁扮殑褰卞搷浜掔浉鎶墊秷錛岀瓑浜庢病鏈夋敼鍙樺紩鐢ㄨ鏁般傞偅涔堬紝鎶婅繖涓よ鍚屾椂娉ㄩ噴鎺夛紝鏄笉鏄彲浠ュ憿錛?br>鎴戠殑鍥炵瓟鏄細鍦ㄦ湰渚嬩腑鍙互銆傚洜涓鴻繖涓よ浠g爜涔嬮棿鐨凲ueryInterface鎬繪槸鍙互鎵ц鎴愬姛鐨勶紙鍥犱負鏄敤IDD_ClassFactory鏉ヨ皟鐢ㄨ鍑芥暟鐨勶級銆傛墍浠ワ紝鍗充究鎶婅繖涓よ浠g爜鍚屾椂娉ㄩ噴鎺夛紝CreateClassFactory鎵ц緇撴潫鍚庯紝綾誨巶瀵硅薄鐨勫紩鐢ㄨ鏁頒篃澧炰簡1錛屼互鍚庤皟鐢≧elease灝卞彲浠ラ噴鏀炬帀綾誨巶瀵硅薄鍗犵敤鐨勫唴瀛樸?br>浣嗘槸錛屽鏋淐FQueryInterface鐨勪唬鐮佺紪鍐欎腑闄や簡閿欒錛屾瘮濡傦紝鍍忚繖鏍峰啓錛?br>

 1 static HRESULT CFQueryInterface (IClassFactory *pcf, REFIID riid, void **ppv)
 2 {
 3     ClassFactory *this = IMPL (ClassFactory, icf, pcf);
 4 
 5     if (IsEqualIID (riid, &IID_IUnknown) ||
 6 //            IsEqualIID (riid, &IID_IClassFactory))   // Comment out this condition to create an error
 7         *ppv = &this->icf;
 8     else
 9     {
10         *ppv = 0;
11         return E_NOINTERFACE;
12     }
13 
14     AddRef ((IClassFactory *)*ppv);
15 
16     return NOERROR;
17 }


閭d箞錛岃繖涓よ浠g爜涔嬮棿鐨凲ueryInterface灝變細鎵ц鍑洪敊錛岄偅涔堢被鍘傚璞″崰鐢ㄧ殑鍐呭瓨灝辨案榪滄病鏈夋満浼氶噴鏀句簡銆?br>涔熷氨鏄錛孉ddRef鍜孯elease铏界劧鍦ㄤ綔鐢ㄤ笂瀵瑰紩鐢ㄨ鏁版潵璇寸浉浜掓姷娑堬紝浣哛elease鍑芥暟鎻愪緵浜嗛噴鏀懼璞″唴瀛樼殑鏈轟細錛堝綋寮曠敤璁℃暟涓?鏃訛級錛屽鏋滀笉鎴愬鐨勮皟鐢ㄤ粬浠紝涔熷氨澶卞幓浜嗙鐞嗗璞″唴瀛橈紙閲婃斁瀵硅薄鍗犵敤鐨勫唴瀛橈級鐨勬満浼氥?/p>

---------------------------------------------------------------------------
緇勪歡搴搊utside鏂囦歡璇存槑錛?br> IFoo.h      IFoo鎺ュ彛澹版槑
 outside.c   緇勪歡瀵硅薄銆両Foo鎺ュ彛瀹炵幇
 cf.c        綾誨巶瀵硅薄銆両ClassFactory鎺ュ彛瀹炵幇
 outdll.c    緇勪歡搴撳鍑哄嚱鏁板疄鐜?br> outside.def 緇勪歡搴撴ā鍧楀畾涔夋枃浠訛紝瀵煎嚭鍑芥暟澹版槑
 outside.reg 緇勪歡搴撴敞鍐屾枃浠?/p> ----------------------------------------------------------------------------
婧愮爜錛?outside-cf

]]>
鐢–瀹炵幇鐨勪竴涓熀鏈珻OM鎺ュ彛IFoo錛堟潵鑷狢OM Programmer's Cookbook錛夆斺擟瀹炵幇COM鎺ュ彛緋誨垪1http://m.shnenglu.com/gracelee/archive/2009/04/29/81414.html灝忚懕铇擱叡灝忚懕铇擱叡Wed, 29 Apr 2009 04:08:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/04/29/81414.htmlhttp://m.shnenglu.com/gracelee/comments/81414.htmlhttp://m.shnenglu.com/gracelee/archive/2009/04/29/81414.html#Feedback3http://m.shnenglu.com/gracelee/comments/commentRss/81414.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/81414.html鐢–瀹炵幇鐨勪竴涓熀鏈珻OM鎺ュ彛IFoo錛堟潵鑷狢OM Programmer's Cookbook錛?/p>


鎶婅鏂囦腑瀹炵幇鐨勪唬鐮佹暣鐞嗘眹鎬誨埌涓涓」鐩腑銆傜洰鍓嶅彧鏄疄鐜板埌涓涓腑闂撮樁孌碉紝閲嶇偣鍦ㄨ鏄嶤OM鎺ュ彛鐨勫疄鐜板師鐞嗭紝榪樻病鏈夊寘鍚被鍘傜殑閮ㄥ垎銆備互鍚庤繕闇闄嗙畫娣誨姞綾誨巶絳夐珮綰у姛鑳姐?/p>

鏂囦歡緇勬垚錛?br>ifoo.h         COM鎺ュ彛IFoo,鎺ュ彛ID IID_IFoo 澹版槑鏂囦歡銆?br>outside.c      COM鎺ュ彛瀹炵幇銆傝繖閲屽疄鐜癐Foo鐨勬槸涓涓粨鏋勪綋COutside.
util.h         涓浜涘畯瀹氫箟銆佸叏灞鍑芥暟銆佸彉閲忓0鏄庢枃浠躲?br>main.c         絎旇呬負瀹炵幇欏圭洰娣誨姞鐨勬枃浠躲傛彁渚沵ain鍑芥暟銆佸唴瀛樼鐞嗗嚱鏁癆lloc,Free鐨勫疄鐜幫紙灝佽C榪愯搴撳嚱鏁癿alloc鍜宖ree.錛夈佹帴鍙D瀹氫箟銆?/p>

COM鎺ュ彛鍒板簳鏄粈涔堬紵
COM鎺ュ彛鏄竴涓寚鍚戣櫄鍑芥暟琛ㄧ殑鎸囬拡銆傞氳繃榪欎釜鎸囬拡鍙互璁塊棶鍐呭瓨涓煇澶勭殑鍚勪釜鍔熻兘鍧楋紝鎵ц棰勫畾涔夌殑鍔熻兘錛屽畬鎴愮敤鎴風(fēng)殑浠誨姟銆傝繖浜涘姛鑳藉潡浠ュ嚱鏁扮殑褰㈠紡瀛樺湪錛堟兂涓嶅嚭榪樻湁鍏朵粬褰㈠紡:)錛夊茍琚皟鐢ㄣ傚畠浠湁涓涓叡鍚岀偣錛氶兘鍖呭惈涓涓寚閽堝弬鏁幫紝鎸囧悜榪欎簺鍔熻兘瑕佹搷浣滅殑鏁版嵁鍦板潃銆傚湪C++涓紝榪欎釜鍦板潃灝辨槸瀵硅薄鐨勯鍦板潃錛屼篃灝辨槸綾繪垚鍛樺嚱鏁頒腑闅愬惈鐨則his鎸囬拡銆傚湪C鍑芥暟涓茍娌℃湁榪欑鐜版垚鐨勪究鍒╋紝鍥犳浠g爜瀹炵幇涓湪鎺ュ彛瀹氫箟鏃朵粛浣跨敤浜嗘帴鍙f寚閽堬紙HRESULT (__stdcall * QueryInterface)   (IFoo * This,  const IID * const, void **)錛夛紝鑰屽湪鎺ュ彛鍑芥暟瀹炵幇鏃舵牴鎹粨鏋勪綋甯冨眬緇撴瀯錛屼粠榪欎釜鎺ュ彛鎸囬拡鎺ㄧ畻寰楀埌瀵硅薄瀹炰緥鎸囬拡銆?/p>

typedef struct IFoo
{
 struct IFooVtbl * lpVtbl;
} IFoo;
typedef struct IFooVtbl IFooVtbl;
struct IFooVtbl
{
 
 HRESULT (__stdcall * QueryInterface)   (IFoo * This,  const IID * const, void **) ;
 ULONG (__stdcall * AddRef)    (IFoo * This) ;
 ULONG (__stdcall * Release)   (IFoo * This) ;

 HRESULT (__stdcall * SetValue)         (IFoo * This,  int) ;
 HRESULT (__stdcall * GetValue)         (IFoo * This,  int *) ;
};

COM鎺ュ彛鐨勮姹傦細

姣忎竴涓狢OM鎺ュ彛錛堟寚鍚戠殑铏氬嚱鏁拌〃錛夌殑澶翠笁涓嚱鏁板繀欏繪槸IUnknown鎺ュ彛鐨勫嚱鏁幫細QueryInterface,AddRef鍜孯elease銆傚湪C++涓紝縐頒負浠嶪Unknown鎺ュ彛緇ф壙銆?br>瀵逛簬璋冪敤QueryInterface鍝嶅簲鏌ヨIID_IUnknwon寰楀埌鐨勬帴鍙f寚閽堝鹼紝鍚屼竴涓璞″疄鐜扮殑鎵鏈夋帴鍙e繀欏葷浉鍚屻傝繖鏄垽鏂袱涓狢OM瀵硅薄鏄惁鏄悓涓涓璞$殑鏍囧噯銆?/p>

 

瀹忓畾涔?#8220;#define IUNK_VTABLE_OF(x) ((IUnknownVtbl *)((x)->lpVtbl))“璇存槑

鍦ㄩ澶勭悊杈撳嚭鏂囦歡main.i涓彲浠ユ壘鍒癐UnknownVtbl鍜孖FooVtbl鐨勫0鏄庯細
    typedef struct IUnknownVtbl
    {
       
       
        HRESULT ( __stdcall *QueryInterface )(
            IUnknown * This,
             const IID * const riid,
             void **ppvObject);
       
        ULONG ( __stdcall *AddRef )(
            IUnknown * This);
       
        ULONG ( __stdcall *Release )(
            IUnknown * This);
       
       
    } IUnknownVtbl;
   
    struct IUnknown
    {
         struct IUnknownVtbl *lpVtbl;
    };   
   

struct IFooVtbl
{
 
 HRESULT (__stdcall * QueryInterface)   (IFoo * This,  const IID * const, void **) ;
 ULONG (__stdcall * AddRef)    (IFoo * This) ;
 ULONG (__stdcall * Release)   (IFoo * This) ;

 HRESULT (__stdcall * SetValue)         (IFoo * This,  int) ;
 HRESULT (__stdcall * GetValue)         (IFoo * This,  int *) ;
};

璇ュ畯瀹氫箟鐨勪綔鐢ㄥ氨鏄妸IFoo鎺ュ彛涓殑IFooVtbl綾誨瀷鐨勬寚閽堟嬁鍑烘潵錛?x)->lpVtbl)錛夛紝騫跺己鍒惰漿鎹紙(IUnknownVtbl *)錛夋垚IUnknownVtbl銆?br>“寮哄埗杞崲”鐨勭粨鏋滄槸浠涔堝憿錛熸槸鎬庝箞鍋氬埌鐨勫憿錛?br>寰堟槑鏄撅紝緇撴灉灝辨槸寰楀埌鐨勬寚閽堜笉鍐嶆槸IFooVtbl *綾誨瀷錛岃屾槸鍙樻垚浜咺UnknownVtbl *綾誨瀷銆傝嚦浜庡仛娉曪紝緋葷粺搴旇璁板綍姣忎竴涓彉閲忋佽〃杈懼紡鐨勭被鍨嬨傚綋榪涜寮哄埗綾誨瀷杞崲鏃訛紝灝憋紙涓存椂鍦幫級淇敼鍏剁被鍨嬩負杞崲鍒扮殑綾誨瀷銆?br>鍚岀悊錛孮ueryInterface, AddRef, Release瀹忓畾涔変腑鐨?IUnknown *)涔熸槸榪欑鐢ㄦ硶銆?/p>

鍙互鐪嬪埌錛屽畯“IUNK_VTABLE_OF“鐨勪綔鐢ㄦ槸渚涘畯QueryInterface,瀹廇ddRef錛屽畯Release寮曠敤錛屾妸IFooVtbl *綾誨瀷杞崲涓篒UnknownVtbl *綾誨瀷錛屾渶緇堣揪鍒拌皟鐢↖UnknownVtbl涓畾涔夌殑涓変釜QueryInterface,AddRef,Release鍑芥暟銆?/p>

閭d箞錛岃繖縐嶅ぇ璐瑰懆绔犵殑鐩殑鏄粈涔堝憿錛熶負浠涔堜笉浠FooVtbl涓笁涓嚱鏁扮殑瀹氫箟褰㈠紡錛堜笉閫氳繃寮哄埗杞崲鏉ヨ漿鎹㈡垚蹇呴』鐨勭被鍨嬶級錛岀洿鎺ヨ皟鐢↖FooVtbl涓畾涔夌殑鍑芥暟鍛紵铏界劧寮哄埗杞崲鍦ㄥ弬鏁板間笂騫朵笉浼氶犳垚鏀瑰彉錛屾渶緇堣皟鐢ㄧ殑涔熸槸IFooVtbl瀹氫箟鐨勫嚱鏁幫紙FooQueryInterface,FooAddRef,FooRelease錛夈?/p>

涓轟粈涔堜竴瀹氳閫氳繃IUnknown鎺ュ彛鎸囬拡璋冪敤榪欎笁涓嚱鏁板憿錛熶慨鏀筈ueryInterface瀹忓畾涔夊涓嬶細
#define QueryInterface(pif, iid, pintf) \
 (((pif)->lpVtbl)->QueryInterface(pif, iid, (void **)(pintf)))
鍗抽氳繃IFoo鎺ュ彛鎸囬拡鏉ヨ皟鐢ㄧ敱IUnknown寮曞叆鐨勫嚱鏁幫紝鏈変粈涔堜笉瀵圭殑鍦版柟鍚楋紵

璇曢獙琛ㄦ槑錛屽皢QueryInterface瀹忓畾涔夊涓嬩篃鍙互緙栬瘧閫氳繃錛屾墽琛岃搗鏉ヤ篃娌℃湁鍑虹幇浠諱綍寮傚父銆?br>#define QueryInterface(pif, iid, pintf) \
 (((pif)->lpVtbl)->QueryInterface(pif, iid, (void **)(pintf)))

 

瀵逛簬IUnknown鎺ュ彛鐨勪笁涓嚱鏁幫紝璋冪敤鏃朵紶閫掔殑鍙傛暟鏄疘Unknown *綾誨瀷錛堣QueryInterface, AddRef, Release瀹忓畾涔夛級錛岃屽嚱鏁板畾涔変腑錛團ooQueryInterface, FooAddRef, FooRelease錛夊0鏄庣殑鍙傛暟鏄疘Foo *綾誨瀷錛岃繖縐嶄笉涓鑷寸殑鎯呭喌鏄庝箞鍑虹幇鐨勶紵榪欑涓嶄竴鑷翠笉浼氭湁闂鍚楋紵

榪欑涓嶄竴鑷寸殑浜х敓鏄敱浜庝粠涓嶅悓鐨勮搴︾湅寰呭紩璧風(fēng)殑銆傚鏋滀粠IUnknown鎺ュ彛鏉ョ湅錛岄偅涔堟帴鍙e嚱鏁頒腑鐨勭涓涓弬鏁扮被鍨嬪氨鏄疘Unknown *;濡傛灉浠嶪Foo鏉ョ湅錛岄偅涔堢涓涓弬鏁扮殑綾誨瀷灝辨槸IFoo *銆?/p>

榪欑涓嶄竴鑷存у彧鏄拡瀵逛簬緙栬瘧鍣ㄥ浜庣被鍨嬬殑緙栬瘧瑕佹眰鏈夋剰涔夌殑錛屽湪鎺ュ彛瀹炵幇鍙婁嬌鐢ㄦ椂錛屼紶閫掔粰lpVtbl->QueryInterface, lpVtbl->AddRef,lpVtbl->Release鐨勭涓涓弬鏁板湪鍊間笂閮芥槸鐩稿悓鐨勶紝閮芥槸瀹炵幇璇ユ帴鍙g殑鍐呭瓨鍦板潃錛堝湪鏈緥涓槸COutside瀵硅薄鐨勯鍦板潃錛夈?/p>

 

涓浜涜娉曠幇璞″洖欏?/p>

鍑芥暟鎸囬拡鍙橀噺瀹氫箟銆佽祴鍊煎強璋冪敤銆?br>HRESULT (__stdcall * pQI)   (IFoo * This,  const IID * const, void **) ;
瀹氫箟涓涓嚱鏁版寚閽堝彉閲弍QI,璇ュ彉閲忔寚鍚?#8220;榪斿洖HRESULT,鍙?涓弬鏁板垎鍒負綾誨瀷IFoo *,const IID * const, void **”鐨勫嚱鏁般?/p>

typedef HRESULT (__stdcall * QIType)   (IFoo * This,  const IID * const, void **) ;
瀹氫箟涓涓嚱鏁版寚閽堢被鍨嬶紝璇ョ被鍨嬬殑鎸囬拡鎸囧悜“榪斿洖HRESULT,鍙?涓弬鏁板垎鍒負綾誨瀷IFoo *,const IID * const, void **”鐨勫嚱鏁般?/p>

HRESULT __stdcall QueryInterface(IFoo * This,  const IID * const, void **) ;//鍑芥暟澹版槑紺轟緥
pQI = 0;   // 鍑芥暟鎸囬拡璧嬪鹼紝0琛ㄧず涓嶆寚鍚戜換浣曞嚱鏁般?br>pQI = QueryInterface;  // 鍑芥暟鎸囬拡璧嬪鹼紝pQI鎸囧悜QueryInterface銆?br>pQI = &QueryInterface; // 涓庝笂闈㈢瓑浠楓?/p>

QueryInterface(&this->ifoo, riid, ppv);  // 浣跨敤鍑芥暟鍚嶇洿鎺ヨ皟鐢?br>pQI(&this->ifoo, riid, ppv);             // 鍑芥暟鎸囬拡璋冪敤
(*pQI)(&this->ifoo, riid, ppv);          // 絎簩縐嶅嚱鏁版寚閽堣皟鐢ㄦ柟寮?/p>


瀹忓畾涔夈佸睍寮瑙勫垯
瀵逛簬瀹忥紝涓鐩存湁涓縐嶉浘閲岀湅鑺辯殑鎰熻錛屼技涔庡緢闅忔剰錛屾庝箞鏉ラ兘琛岋紝姣斿錛?br>#define AddRef(pif) \
 (IUNK_VTABLE_OF(pif)->AddRef((IUnknown *)(pif)))

瀹忓畾涔夊簲璇ユ槸鍙互宓屽鐨勶紝鍗沖畯瀹氫箟鐨?#8220;鍐呭“涓繕鍙互鍖呭惈錛堝祵濂楋級瀹忥紝濡傛湰渚嬶紝“IUNK_VTABLE_OF”灝辨槸宓屽瀹忋傚湪灞曞紑鐨勬椂鍊欙紝灝嗗祵濂楃殑瀹忎篃涓騫跺睍寮錛堟浛鎹㈡垚瀹氫箟鐨勫唴瀹癸級錛岀洿鍒頒笉鍐嶆湁瀹忎負姝€?br>閭d箞灝辨湁涓や釜鐤戦棶錛?br>1銆傚鏋滆宓屽鐨勫畯鍖呭惈錛堢洿鎺ユ垨闂存帴錛夊畾涔夌殑瀹忥紝閭d箞灞曞紑灝辨病瀹屾病浜嗭紝姝誨驚鐜簡銆?br>2銆傚鏋滃畾涔夌殑鍐呭涓湁璺熷畾涔夌殑瀹忓悓鍚嶇殑瀛楃涓詫紙姣斿涓婇潰鐨勪緥瀛怚UNK_VTABLE_OF錛夛紝閭d箞鎬庝箞鍖哄垎榪欏悓鍚嶇殑涓滀笢鏄祵濂楃殑瀹忥紙闇瑕佸睍寮錛夛紝榪樻槸涓鑸殑瀛楃涓詫紙涓嶉渶瑕佸睍寮錛夛紵


鍑芥暟璋冪敤瑙勮寖綰﹀畾銆乵ain鍑芥暟璋冪敤瑙勮寖銆?/p>

涓寮濮嬫妸鍑犱釜鏂囦歡姹囨誨埌欏圭洰閲屾椂錛岀紪璇戦氫笉榪囷紝閿欒鎻愮ず澶ц嚧鎰忔濇槸錛屼笉鑳芥妸涓縐嶈皟鐢ㄨ鑼冪殑鍑芥暟鎸囬拡杞崲鎴愬彟涓縐嶈皟鐢ㄨ鑼冪殑鍑芥暟鎸囬拡銆傚悗鏉ユ妸璋冪敤瑙勮寖鏀逛負   /Gz(__stdcall),緙栬瘧涓猴紙Compile As錛夋敼涓?TC(Compile As C Code)灝卞ソ浜嗐?/p>

鎯蟲潵鏄浜?c鏂囦歡錛岀紪璇戝櫒緙虹渷浣跨敤鐨勬槸__cdecl錛岃孖Foo涓殑鎺ュ彛瀹忓畾涔夊湪win32涓嬪睍寮鎴愪簡__stdcall錛屾墍浠ュ嚭鐜頒簡鐭涚浘銆傝屼嬌鐢?Gz寮哄埗鏈0鏄庤皟鐢ㄨ鑼冪殑鍑芥暟浣跨敤__stdcall錛屽疄鐜板氨涓庡0鏄庝竴鑷翠簡銆?/p>


(size_t)&(((s *)0)->m)

c++紼嬪簭鍛樹篃璁?dāng)R兘鐭ラ亾錛岃闂湴鍧“0”澶勭殑鎴愬憳鏄竴澶у繉錛屼細閫犳垚GP銆傜劧鑰岋紝鍙栧湴鍧“0”澶勭殑鎴愬憳鐨勫湴鍧錛屽嵈鏄釜鍚堟硶鐨勬搷浣溿傝櫧鐒跺湴鍧“0”澶勫茍娌℃湁浠涔堝唴瀹癸紝浣嗘槸錛屽鏋滃湪鍦板潃0澶勫瓨鏀句竴涓唴瀹癸紝閭d箞璇ュ唴瀹逛腑鐨勬垚鍛樹篃鏄湁鍦板潃鐨勩傛湰渚嬩腑姝f槸宸у鍦板埄鐢ㄨ繖縐嶆柟娉曪紝浠庢帴鍙e湴鍧璁$畻寰楀嚭瀹炵幇璇ユ帴鍙g殑瀹炰緥鍦板潃錛岃繘鑰岃闂疄渚嬬殑鍐呴儴鍙橀噺銆?br>
------------------------------------------------------------------------------------
2009騫?鏈?鏃?br>闄勪笂婧愮爜錛?a href="http://m.shnenglu.com/Files/gracelee/outside.zip">/Files/gracelee/outside.zip

浠g爜鎵ц緇撴灉錛?br>



]]>
鏈夊叧include guard鐨勪竴涓ソ甯栧瓙錛堟敹钘忥級http://m.shnenglu.com/gracelee/archive/2009/02/19/74233.html灝忚懕铇擱叡灝忚懕铇擱叡Thu, 19 Feb 2009 01:04:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/02/19/74233.htmlhttp://m.shnenglu.com/gracelee/comments/74233.htmlhttp://m.shnenglu.com/gracelee/archive/2009/02/19/74233.html#Feedback2http://m.shnenglu.com/gracelee/comments/commentRss/74233.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/74233.html
鍘熻創(chuàng)鍦板潃錛?a >http://www.keil.com/forum/docs/thread10237.asp

浣滆?nbsp;Per Westermark

The

#ifndef xx
#define xx
...
#endif

method is to make sure that a header file isn't included more than once from the same c file.

You can not - and normally don't want to - stop multiple c files from including the same header file.

A header file is included because:
1) You have specifically added a line #include "xx" or #include <xx> in the source file. Don't do that unless you want the file to be included :)
2) You are including one header file, that it it's turn (one or more steps away) includes another header file. But a header file should only contain a recursive #include if it really needs that other file for some declarations. Hence, you need to include it.

What does this mean?

If the header file must be seen by multiple source files, you can't use it to allocate global variables, since the linker would then complain about multiple sets of global variables with the same name. This can be solved with the following:

//globals.h
#ifndef _GLOBALS_H
#define _GLOBALS_H
#if defined MAIN
#define EXTERN
#else
#define EXTERN extern
#endif
...
EXTERN int my_global_variable;
#endif // _GLOBALS_H

// main.c
#define MAIN
#include "globals.h"
...
// misc.c
#include "globals.h"
...

In this case, only the inclusion in main.c will result in an "allocation" of global variables, because the #define EXTERN will be empty. All other source files that includes "globals.h" will just see the type information for the global variables.



]]>
鑷姩綾誨瀷杞崲鈥斺旀搷浣滅閲嶈澆http://m.shnenglu.com/gracelee/archive/2009/01/16/72176.html灝忚懕铇擱叡灝忚懕铇擱叡Fri, 16 Jan 2009 07:51:00 GMThttp://m.shnenglu.com/gracelee/archive/2009/01/16/72176.htmlhttp://m.shnenglu.com/gracelee/comments/72176.htmlhttp://m.shnenglu.com/gracelee/archive/2009/01/16/72176.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/72176.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/72176.html
鐪嬩笅闈唬鐮侊細

 1 class CBase {
 2 public:
 3     CBase()
 4     {
 5         cout << "CBase constructor()" << endl;
 6     }
 7     virtual ~CBase()
 8     {
 9         cout << "CBase destructor()" << endl;
10     }
11     
12     operator long()
13     {
14         cout << "CBase::operator long()" << endl;
15         return 0;
16     }
17     
18     operator char()
19     {
20         cout << "CBase::operator char()" << endl;
21         return 'a';
22     }
23 }
24 ;
25 class CDerived:public CBase
26 {
27 public:
28     CDerived()
29     {
30          cout << "CDerived constructor()" << endl;
31     }
32              
33     virtual ~CDerived()
34     {
35         cout << "CDerived destructor()" << endl;
36     }
37              
38     operator long()
39     {
40         cout << "CDerived::operator long()" << endl;
41         //return CBase::operator long();
           return *((CBase *)this);//change the above code to this looks better
42     }
43              
44 };
45 
46 void main()
47 {
48     CDerived d;
49     long lTmp = d;
50     cout << "lTmp=" << lTmp << endl;
51     char cTmp = d;
52     cout << "cTmp=" << cTmp << endl;
53 
54 }


鐢變簬瀹氫箟浜嗘搷浣滅閲嶈澆CDerived::operator long() 鍜孋Base::operator long()錛?9琛屽緱浠ョ紪璇戦氳繃銆傚悓鐞嗭紝瀹氫箟浜咰Base::operator char()錛?1琛屽彲浠ョ紪璇戙?br>
鎵ц緇撴灉涓猴細
CBase constructor()
CDerived constructor()
CDerived::operator long()
CBase::operator long()
lTmp=0
CBase::operator char()
cTmp=a
CDerived destructor()
CBase destructor()

榪欓噷娑夊強鍒扮殑姒傚康涓昏鏈夛細
1 綾繪垚鍛樻搷浣滅閲嶈澆錛堜嬌寰楃敤鎴峰畾涔夌被鍨嬭漿鎹負鍐呭緩綾誨瀷鎴愪負鍙兘銆傚浜庣敤鎴峰畾涔夌被鍨嬩箣闂寸殑杞崲錛岃繕鍙互閫氳繃鏋勯犲嚱鏁扮殑鏂瑰紡榪涜錛?br>2 鑷姩綾誨瀷杞崲銆傝嚜鍔ㄧ被鍨嬭漿鎹㈠彂鐢熺殑鎯呭喌鏈変互涓嬪嚑縐嶏細
鍑芥暟璋冪敤鏃朵紶閫掔殑瀹炲弬綾誨瀷涓庡嚱鏁板0鏄庝腑鎸囧畾鐨勫弬鏁扮被鍨嬩笉鍖歸厤
鍑芥暟榪斿洖鐨勫璞$被鍨嬩笌鍑芥暟澹版槑涓寚瀹氱殑榪斿洖綾誨瀷涓嶅尮閰?br>琛ㄨ揪寮忎腑鎿嶄綔鏁扮殑綾誨瀷涓嶄竴鑷達紙榪欐鏄笂闈緥瀛愪腑鐨勬儏鍐碉級

鏈夋剰鎬濈殑鏄紝鍗充嬌涓嶅畾涔塁Base::operator char()錛屼笂闈㈢殑51琛屼粛鑳介氳繃錛岀湡寰楁劅鍙圭紪璇戝櫒鐨勮仾鏄庢墠鏅轟簡錛屾垨璁稿彧鏄紪璇戝櫒source涓浜嗕竴浜涚殑if{}else{}鍛紵

]]>
鍥炲綊http://m.shnenglu.com/gracelee/archive/2008/10/31/65620.html灝忚懕铇擱叡灝忚懕铇擱叡Fri, 31 Oct 2008 05:24:00 GMThttp://m.shnenglu.com/gracelee/archive/2008/10/31/65620.htmlhttp://m.shnenglu.com/gracelee/comments/65620.htmlhttp://m.shnenglu.com/gracelee/archive/2008/10/31/65620.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/65620.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/65620.html鐪嬬湅鏈鏂扮殑闅忕瑪錛岀珶鐒舵湁涓騫村娌℃潵浜嗭紝鑷繁璁劇殑鍗氬鏍囬錛岀湡鏄鑷繁鐨勮鍒恒?br>
寰堜箙浠ュ墠鍐欑殑甯栧瓙錛岀幇鍦ㄧ湅鍒拌繕鏈変漢鍦ㄥ洖澶嶏紝鏈夌偣鎰熷姩錛屼篃鍙楀埌涓鐐歸紦鑸烇細濡傛灉鏈変粈涔堟槸姘告亽鐨勮瘽錛岄偅涔堟枃瀛楀綋灞炰竴縐嶅惂錛岃櫧鐒舵垜鑻嶇櫧鐨勮璦浼氬湪緗戠粶嫻╃氳屼簲鍏夊崄鑹茬殑淇℃伅涓娣卞煁鑰屾棤浜烘敞鎰忥紝姣曠珶涔熸槸涓縐嶆浘緇忓瓨鍦ㄨ繃錛屽彂鐢熻繃鐨勮璇併?br>
璁板綍鑷繁鐨勫績鎯咃紝璁╃敓鍛藉湪榪欑涔﹀啓涓壘鍒板綊灞炲拰瀹夋叞錛岃繖灝辨槸鍗氬浜庢垜鐨勯瓍鍔涘惂銆?/p>

]]>
VBScript鍐欑殑璁$畻寮傛垨鐨勪竴涓皬宸ュ叿http://m.shnenglu.com/gracelee/archive/2007/08/03/29278.html灝忚懕铇擱叡灝忚懕铇擱叡Fri, 03 Aug 2007 05:05:00 GMThttp://m.shnenglu.com/gracelee/archive/2007/08/03/29278.htmlhttp://m.shnenglu.com/gracelee/comments/29278.htmlhttp://m.shnenglu.com/gracelee/archive/2007/08/03/29278.html#Feedback0http://m.shnenglu.com/gracelee/comments/commentRss/29278.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/29278.html
'==========================================================================
'
'
'
 NAME: calc_xor.vbs
'
'
 COMMENT: Calculates the result of 'xor' all elements in the input
'
'
==========================================================================

Option Explicit

Dim strInput

'Promt for string to search for in log files
strInput = InputBox("Enter data to calc on.","calc xor","")

if strInput = "" then
    wscript.quit
end If

'MsgBox(Len(strInput))

Dim arrayBytes()
ReDim arrayBytes(Len(strInput)/2)

Dim i,nBytes
Dim chHalf1,chHalf2,chWhole
= 1
nBytes 
= 0

Do While (i < Len(strInput))
'Skip spaces between elements
Do While Asc(Mid(strInput,i,1)) = 32 'space
    i = i + 1
Loop 

    chHalf1 
= Asc(Mid(strInput,i,1))
    chHalf2 
= Asc(Mid(strInput,i+1,1))
    
'Check and convert first half

    
If chHalf1 >= 48 And chHalf1 <= 57 Then
        chHalf1 
= chHalf1 - 48
    
ElseIf chHalf1 >= 65 And chHalf1 <= 70 Then
        chHalf1 
= chHalf1 - 65 + 10
    
ElseIf chhalf1 >= 97 And chHalf1 <= 104 Then
        chHalf1 
= chHalf1 - 97 + 10
    
Else
        
MsgBox("invalid character")
        wscript.quit
    
End If
    
    
' Check and convert the second half
    If chHalf2 >= 48 And chHalf2 <= 57 Then
        chHalf2 
= chHalf2 - 48
    
ElseIf chHalf2 >= 65 And chHalf2 <= 70 Then
        chHalf2 
= chHalf2 - 65 + 10
    
ElseIf chHalf2 >= 97 And chHalf2 <= 104 Then
        chHalf2 
= chHalf2 - 97 + 10
    
Else
        
MsgBox("invalid character")
        wscript.quit
    
End If
    
    
' Combine the first and second halves together to form a whole byte
    chWhole = chHalf1 * 16 + chHalf2
    arrayBytes(nBytes) 
= chWhole
    i 
= i + 2
    nBytes 
= nBytes + 1
Loop

'MsgBox(CStr(nBytes) + " bytes all together")

Dim WshSHell
set WshShell = CreateObject("WScript.Shell")
WshShell.Run(
"calc")
WScript.Sleep(
100)
WshShell.AppActivate(
"Calculator")
WScript.Sleep(
100)

WshShell.SendKeys(
"{F6}"'Change to Decimal
'
WshShell.SendKeys("{F4}") 'Change to single byte
WScript.Sleep(100)
WshShell.SendKeys(
"0")
For i =1 to nBytes
    WshShell.SendKeys(
"{^}")
    WScript.Sleep(
100)
    WshShell.SendKeys(arrayBytes(i
-1))
    WScript.Sleep(
100)
    WshShell.SendKeys(
"{=}")
    WScript.Sleep(
100)
Next

WshShell.SendKeys(
"{F5}"'Change to Hex for easy recognition





]]>
鐢╯printf鏍煎紡鍖栧瓧絎︿覆http://m.shnenglu.com/gracelee/archive/2007/07/31/29085.html灝忚懕铇擱叡灝忚懕铇擱叡Tue, 31 Jul 2007 08:43:00 GMThttp://m.shnenglu.com/gracelee/archive/2007/07/31/29085.htmlhttp://m.shnenglu.com/gracelee/comments/29085.htmlhttp://m.shnenglu.com/gracelee/archive/2007/07/31/29085.html#Feedback2http://m.shnenglu.com/gracelee/comments/commentRss/29085.htmlhttp://m.shnenglu.com/gracelee/services/trackbacks/29085.htmlsprintf(mess,"This is field 1,Field 2,Field 3\n");

褰撹繖鏍風(fēng)殑鍩熷緢澶氱殑鏃跺欙紝涓琛屾斁涓嶄笅錛屼負浜嗕究浜庨槄璇伙紝闇瑕佹妸瀹冧滑鍒嗘垚鍑犺錛?br>sprintf(mess,"This is filed 1,\
    Field 2,\
    Field 3,\
    ...
    Field n\n");

浣嗘槸錛岃繖鏍峰甫鏉ヤ釜闂錛屽氨鏄牸寮忓寲鍚庣殑mess鐨勫悇涓煙涔嬮棿灝變駭鐢熶簡涓嶆兂瑕佺殑瀛楃錛堝絀烘牸絳夛紝浣跨敤UE鍙互娓呮鐨勭湅鍒幫級錛屽師鍥犳槸鐢變簬浣跨敤浜嗙畫琛岀"\"錛坙ine-continuation character錛夛紝鑰屼笉鐢ㄧ畫琛岀鍙堟棤娉曢氳繃緙栬瘧錛圕2001錛夈?br>
榪欐椂鍙互鐢ㄥ弻寮曞彿鏉ユ妸鍚勪釜鍩熷垎闅斿紑錛岃繖鏍峰氨鏃㈣В鍐充簡鍙鎬х殑闂錛屽張瑙e喅浜嗙紪璇戦棶棰橈細
sprintf(mess,"This is filed 1,"
    "Field 2,"
    "Field 3,"
    ...
    "Field n\n");




]]>
[闅忚闅忚]living鐨勪袱縐嶈瘝鎬х敤娉?/title><link>http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.html</link><dc:creator>灝忚懕铇擱叡</dc:creator><author>灝忚懕铇擱叡</author><pubDate>Tue, 19 Jun 2007 01:58:00 GMT</pubDate><guid>http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.html</guid><wfw:comment>http://m.shnenglu.com/gracelee/comments/26606.html</wfw:comment><comments>http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/gracelee/comments/commentRss/26606.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/gracelee/services/trackbacks/26606.html</trackback:ping><description><![CDATA[1.noun 鐢熸椿錛岀敓璁?br><br>What Londoners do to make a living have changed considerably since the 19th century.<br><br>19涓栫邯浠ユ潵錛屼雞鏁︿漢璋嬬敓鐨勬柟寮忓彂鐢熶簡寰堝ぇ鏀瑰彉銆?br><br>鍑犱釜甯歌鐨勮瘝緇勶細<br>living room<br>living condition<br><br><br>2.adj  媧葷殑<br><br>London is itself a living museum with thousand years of history and culture.<br><br>浼︽暒浠ュ叾鍑犲崈騫寸殑鍘嗗彶鍜屾枃鍖栵紝鍏舵湰韜氨鏄竴搴у崥鐗╅櫌銆?br><br>“living”浣滀負褰㈠璇嶇敤灝辨湁蹇呰鎻愪竴涓?#8220;live”銆?#8220;live”浣滃艦瀹硅瘝涔熸湁“媧葷殑”鎰忔濓紝浣嗘劅瑙変笂榪欓噷浼間箮涓嶈兘鏇挎崲“living”錛屼笉鐭ラ亾瀵逛笉瀵廣?br><br><img src ="http://m.shnenglu.com/gracelee/aggbug/26606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/gracelee/" target="_blank">灝忚懕铇擱叡</a> 2007-06-19 09:58 <a href="http://m.shnenglu.com/gracelee/archive/2007/06/19/26606.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://teqmeta.com" target="_blank">欧美国产日韩一二三区</a>| <a href="http://xtgoldsky.com" target="_blank">欧美在线一区二区三区</a>| <a href="http://mkaqiu.com" target="_blank">久久精品人人</a>| <a href="http://amiee88.com" target="_blank">欧美影院成人</a>| <a href="http://vod3366.com" target="_blank">日韩视频永久免费</a>| <a href="http://xccp4888.com" target="_blank">国产精品高潮呻吟久久</a>| <a href="http://scptw.com" target="_blank">国产伦精品一区二区三区四区免费</a>| <a href="http://www151zh.com" target="_blank">久久手机免费观看</a>| <a href="http://www308eee.com" target="_blank">欧美伊人久久</a>| <a href="http://77mcn.com" target="_blank">欧美aa在线视频</a>| <a href="http://jldianda.com" target="_blank">久久久国产视频91</a>| <a href="http://fengboll.com" target="_blank">久久久久欧美精品</a>| <a href="http://833077.com" target="_blank">亚洲精品视频中文字幕</a>| <a href="http://333666333.com" target="_blank">久久精品一二三</a>| <a href="http://099553.com" target="_blank">亚洲欧美久久</a>| <a href="http://pron12.com" target="_blank">麻豆成人av</a>| <a href="http://cpddddcc.com" target="_blank">久久这里只有精品视频首页</a>| <a href="http://www-4157.com" target="_blank">老司机久久99久久精品播放免费</a>| <a href="http://www37999.com" target="_blank">一本色道久久88综合亚洲精品ⅰ </a>| <a href="http://jxrisen.com" target="_blank">欧美日韩亚洲不卡</a>| <a href="http://tom3958.com" target="_blank">国产精品久久一级</a>| <a href="http://maokk88.com" target="_blank">欧美国产大片</a>| <a href="http://wwww999.com" target="_blank">久久久久亚洲综合</a>| <a href="http://jzsp87.com" target="_blank">免费国产自线拍一欧美视频</a>| <a href="http://yw1998.com" target="_blank">久久久久国产精品麻豆ai换脸</a>| <a href="http://hnspygxjscyfwzx.com" target="_blank">欧美一级一区</a>| <a href="http://51duanxinmao.com" target="_blank">久久视频一区</a>| <a href="http://www497171a.com" target="_blank">欧美精品九九</a>| <a href="http://cnbluebox.com" target="_blank">在线成人av</a>| <a href="http://pigkrtv.com" target="_blank">亚洲婷婷综合久久一本伊一区</a>| <a href="http://yjizzdizhigmail.com" target="_blank">精品99一区二区三区</a>| <a href="http://jzsp94.com" target="_blank">亚洲国产精品va在线观看黑人</a>| <a href="http://www-49hk.com" target="_blank">99视频一区二区</a>| <a href="http://xing69.com" target="_blank">老色鬼久久亚洲一区二区 </a>| <a href="http://mmmm43.com" target="_blank">美女精品自拍一二三四</a>| <a href="http://5cok.com" target="_blank">欧美日韩高清一区</a>| <a href="http://7357538.com" target="_blank">亚洲激情一区二区</a>| <a href="http://jiyixitong.com" target="_blank">欧美一级视频精品观看</a>| <a href="http://fjccjq.com" target="_blank">亚洲人体1000</a>| <a href="http://www-49386.com" target="_blank">久久av二区</a>| <a href="http://004ttt.com" target="_blank">国产日韩欧美在线观看</a>| <a href="http://hhh246.com" target="_blank">亚洲电影欧美电影有声小说</a>| <a href="http://www1982t.com" target="_blank">亚洲人成人77777线观看</a>| <a href="http://www311pi.com" target="_blank">久久婷婷丁香</a>| <a href="http://bocfdj.com" target="_blank">免费欧美电影</a>| <a href="http://ynzhuoyi.com" target="_blank">亚洲激情成人在线</a>| <a href="http://ridenimbus.com" target="_blank">免费国产自线拍一欧美视频</a>| <a href="http://xprinter3d.com" target="_blank">欧美一区二区精品在线</a>| <a href="http://xinghejiuye.com" target="_blank">国产欧美日韩另类视频免费观看</a>| <a href="http://223zzz.com" target="_blank">亚洲在线观看视频网站</a>| <a href="http://www11111111.com" target="_blank">亚洲一品av免费观看</a>| <a href="http://bandycup.com" target="_blank">国产欧美一区二区白浆黑人</a>| <a href="http://tutu80.com" target="_blank">久久精品30</a>| <a href="http://gztcm01.com" target="_blank">欧美日韩精品免费观看</a>| <a href="http://318823.com" target="_blank">亚洲裸体俱乐部裸体舞表演av</a>| <a href="http://by3799.com" target="_blank">亚洲国产精品黑人久久久 </a>| <a href="http://2387463.com" target="_blank">亚洲综合精品一区二区</a>| <a href="http://jxjx11.com" target="_blank">欧美一区二区日韩</a>| <a href="http://jinlijun.com" target="_blank">亚洲精品一区二区在线观看</a>| <a href="http://by3787.com" target="_blank">99日韩精品</a>| <a href="http://830085.com" target="_blank">亚洲激情婷婷</a>| <a href="http://zhhtianyi.com" target="_blank">亚洲午夜精品在线</a>| <a href="http://wwwbaoyu66.com" target="_blank">亚洲电影网站</a>| <a href="http://0855123.com" target="_blank">久久激情五月婷婷</a>| <a href="http://5858yp.com" target="_blank">亚洲无限av看</a>| <a href="http://y65o.com" target="_blank">欧美激情一区二区久久久</a>| <a href="http://phitris.com" target="_blank">久久精品视频播放</a>| <a href="http://sh-hxjdkj.com" target="_blank">欧美日韩在线播放三区四区</a>| <a href="http://521531.com" target="_blank">免费观看不卡av</a>| <a href="http://376524.com" target="_blank">国产午夜精品一区二区三区视频</a>| <a href="http://caca060.com" target="_blank">欧美激情一区</a>| <a href="http://333666333.com" target="_blank">亚洲丰满少妇videoshd</a>| <a href="http://wwwsenvpu.com" target="_blank">亚洲免费在线观看视频</a>| <a href="http://tp-88.com" target="_blank">在线亚洲一区观看</a>| <a href="http://527937.com" target="_blank">欧美成人免费在线视频</a>| <a href="http://www-888005.com" target="_blank">亚洲精品韩国</a>| <a href="http://wce-expo.com" target="_blank">国产精品国产</a>| <a href="http://www-4564949.com" target="_blank">男女激情久久</a>| <a href="http://seqingdao.com" target="_blank">欧美一区在线看</a>| <a href="http://aijiashe.com" target="_blank">亚洲欧洲av一区二区</a>| <a href="http://017492.com" target="_blank">久久综合色影院</a>| <a href="http://czwangluoyouhua.com" target="_blank">亚洲午夜激情网页</a>| <a href="http://esdzu.com" target="_blank">aa亚洲婷婷</a>| <a href="http://4466o.com" target="_blank">日韩亚洲视频在线</a>| <a href="http://436212.com" target="_blank">在线成人亚洲</a>| <a href="http://www4466k.com" target="_blank">国产一区二区三区高清在线观看</a>| <a href="http://345fz.com " target="_blank">欧美日韩在线播放一区</a>| <a href="http://zunguidq.com" target="_blank">免费在线国产精品</a>| <a href="http://hbdxzx.com" target="_blank">久久久一二三</a>| <a href="http://ym5571.com" target="_blank">亚洲二区在线视频</a>| <a href="http://unrealcopgmail.com" target="_blank">99在线观看免费视频精品观看</a>| <a href="http://srojsy.com" target="_blank">国产亚洲亚洲</a>| <a href="http://sz-jyqj.com" target="_blank">久久综合色一综合色88</a>| <a href="http://www77711.com" target="_blank">亚洲精品国产视频</a>| <a href="http://080973.com" target="_blank">久久久久久69</a>| <a href="http://jdavmm.com" target="_blank">午夜精品国产</a>| <a href="http://8222666.com" target="_blank">在线欧美一区</a>| <a href="http://hjk56.com" target="_blank">国产欧美一区二区在线观看</a>| <a href="http://868482.com" target="_blank">另类成人小视频在线</a>| <a href="http://373gg.com" target="_blank">亚洲精品综合</a>| <a href="http://sapronlee.com" target="_blank">免费观看成人网</a>| <a href="http://www433ad.com" target="_blank">午夜一级久久</a>| <a href="http://fuwu56.com" target="_blank">亚洲一区三区视频在线观看</a>| <a href="http://zzzz80.com" target="_blank">1769国内精品视频在线播放</a>| <a href="http://92y5.com" target="_blank">国产视频精品va久久久久久</a>| <a href="http://0359222.com" target="_blank">欧美国产日韩一区二区三区</a>| <a href="http://aijiashe.com" target="_blank">久久视频在线看</a>| <a href="http://8eya.com" target="_blank">久久美女性网</a>| <a href="http://66hhmm.com" target="_blank">久久人人97超碰人人澡爱香蕉</a>| <a href="http://335848.com" target="_blank">亚洲在线1234</a>| <a href="http://7a6a.com" target="_blank">欧美一区二区三区久久精品</a>| <a href="http://66gg6.com" target="_blank">亚洲男女自偷自拍图片另类</a>| <a href="http://wwwcao88.com" target="_blank">中文精品在线</a>| <a href="http://qqx123.com" target="_blank">久久久久久伊人</a>| <a href="http://ruichengxiang.com" target="_blank">最新日韩中文字幕</a>| <a href="http://anal-movie-teen.com" target="_blank">欧美日韩1区2区3区</a>| <a href="http://wwwlywbb.com" target="_blank">乱人伦精品视频在线观看</a>| <a href="http://www-9694.com" target="_blank">欧美三级午夜理伦三级中文幕</a>| <a href="http://y3u7.com" target="_blank">久久婷婷人人澡人人喊人人爽</a>| <a href="http://7782y.com" target="_blank">亚洲欧美精品在线观看</a>| <a href="http://yyyy456.com" target="_blank">一本久久综合亚洲鲁鲁五月天</a>| <a href="http://heshundadi.com" target="_blank">亚洲福利视频网</a>| <a href="http://javliabary.com" target="_blank">日韩亚洲视频在线</a>| <a href="http://77777gao.com" target="_blank">欧美成人亚洲成人</a>| <a href="http://4466o.com" target="_blank">亚洲字幕一区二区</a>| <a href="http://lovehefei.com" target="_blank">亚洲人成在线播放</a>| <a href="http://ym5571.com" target="_blank">国产日韩一区二区三区在线</a>| <a href="http://345fz.com " target="_blank">久久精品理论片</a>| <a href="http://www-222304.com" target="_blank">久久国产精品亚洲77777</a>| <a href="http://wwwcc7777.com" target="_blank">国产一区二区高清不卡</a>| <a href="http://devwang.com" target="_blank">国产一区二区三区成人欧美日韩在线观看</a>| <a href="http://59199m.com" target="_blank">欧美日韩另类丝袜其他</a>| <a href="http://613by.com" target="_blank">欧美性一二三区</a>| <a href="http://1000078.com" target="_blank">国产主播一区二区三区</a>| <a href="http://123yongjiu.com" target="_blank">最新亚洲激情</a>| <a href="http://7c3e.com" target="_blank">久久99在线观看</a>| <a href="http://actinview.com" target="_blank">亚洲激情专区</a>| <a href="http://8558585.com" target="_blank">午夜欧美不卡精品aaaaa</a>| <a href="http://2ejj.com" target="_blank">欧美暴力喷水在线</a>| <a href="http://8558585.com" target="_blank">国产女主播一区二区</a>| <a href="http://666777v3.com" target="_blank">亚洲人成在线观看一区二区</a>| <a href="http://gjjlzs.com" target="_blank">午夜精品一区二区三区四区</a>| <a href="http://v58q.com" target="_blank">91久久国产综合久久91精品网站</a>| <a href="http://cczm4.com" target="_blank">亚洲一二三四区</a>| <a href="http://szzzzzzz.com" target="_blank">欧美喷潮久久久xxxxx</a>| <a href="http://9511331.com" target="_blank">国内精品视频666</a>| <a href="http://www3344uh.com" target="_blank">亚洲影院色在线观看免费</a>| <a href="http://689658.com" target="_blank">亚洲电影第1页</a>| <a href="http://luqintang.com" target="_blank">久久―日本道色综合久久</a>| <a href="http://7777731.com" target="_blank">国产精品日韩一区二区三区</a>| <a href="http://343119.com" target="_blank">亚洲精品一区中文</a>| <a href="http://lampreydb.com" target="_blank">麻豆精品一区二区综合av</a>| <a href="http://59jf.com" target="_blank">性色av一区二区三区</a>| <a href="http://794278.com" target="_blank">国产精品美女午夜av</a>| <a href="http://www0505nn.com" target="_blank">亚洲色图综合久久</a>| <a href="http://707fx.com" target="_blank">99在线热播精品免费99热</a>| <a href="http://ziwufuren.com" target="_blank">欧美成人黄色小视频</a>| <a href="http://7a7d.com" target="_blank">亚洲欧洲在线一区</a>| <a href="http://62san.com" target="_blank">91久久黄色</a>| <a href="http://tubcup.com" target="_blank">欧美色中文字幕</a>| <a href="http://373336.com" target="_blank">亚洲综合视频网</a>| <a href="http://eguge.com" target="_blank">亚洲欧美日韩精品久久久久</a>| <a href="http://obatshaka.com" target="_blank">欧美日韩综合一区</a>| <a href="http://686852a.com" target="_blank">亚洲免费在线电影</a>| <a href="http://haochen072.com" target="_blank">亚洲在线国产日韩欧美</a>| <a href="http://mysuteng.com" target="_blank">国产婷婷色一区二区三区在线</a>| <a href="http://hg98688.com" target="_blank">欧美在线视频全部完</a>| <a href="http://yw-95588.com" target="_blank">久久er99精品</a>| <a href="http://mathck.com" target="_blank">亚洲美女色禁图</a>| <a href="http://by1422.com" target="_blank">亚洲制服丝袜在线</a>| <a href="http://220fuke.com" target="_blank">亚洲第一精品夜夜躁人人爽</a>| <a href="http://xhs015.com" target="_blank">亚洲日本免费</a>| <a href="http://57sa.com" target="_blank">极品av少妇一区二区</a>| <a href="http://www-74987.com" target="_blank">欧美成人午夜激情</a>| <a href="http://8868866.com" target="_blank">欧美日韩亚洲一区二区三区四区 </a>| <a href="http://mmmm37.com" target="_blank">欧美日韩精品是欧美日韩精品</a>| <a href="http://xxxbobba.com" target="_blank">亚洲天堂第二页</a>| <a href="http://proenhub.com" target="_blank">久久午夜羞羞影院免费观看</a>| <a href="http://jdavmm.com" target="_blank">亚洲视频免费看</a>| <a href="http://340996.com" target="_blank">久久九九免费视频</a>| <a href="http://817794.com" target="_blank">亚洲男人天堂2024</a>| <a href="http://www-438686.com" target="_blank">欧美1级日本1级</a>| <a href="http://797298.com" target="_blank">美玉足脚交一区二区三区图片</a>| <a href="http://www-68689.com" target="_blank">欧美日韩精品一区二区</a>| <a href="http://zw1019.com" target="_blank">欧美www在线</a>| <a href="http://744734.com" target="_blank">激情亚洲网站</a>| <a href="http://123273.com" target="_blank">欧美一区成人</a>| <a href="http://hnspygxjscyfwzx.com" target="_blank">先锋影音国产一区</a>| <a href="http://www381818.com" target="_blank">欧美亚州一区二区三区 </a>| <a href="http://bjygp.com" target="_blank">欧美国产精品一区</a>| <a href="http://4080sy.com" target="_blank">国产一区二区三区无遮挡</a>| <a href="http://236664.com" target="_blank">亚洲精选中文字幕</a>| <a href="http://w7727.com" target="_blank">一区二区三区四区国产精品</a>| <a href="http://xzvaz.com" target="_blank">欧美激情一区二区三区</a>| <a href="http://340332.com" target="_blank">亚洲成人资源</a>| <a href="http://yeyesaoqi.com" target="_blank">亚洲视频免费在线观看</a>| <a href="http://mathck.com" target="_blank">欧美色网一区二区</a>| <a href="http://bjayj.com" target="_blank">午夜激情综合网</a>| <a href="http://www-67499.com" target="_blank">久久国产精品99国产精</a>| <a href="http://jivbus.com" target="_blank">国产人妖伪娘一区91</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>