锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美激情中文字幕一区二区,亚洲一区二区三,午夜精品久久久http://m.shnenglu.com/xushaohua/category/2730.html濡傛湁鎭掞紝浣曢』涓夋洿璧鳳紝鍗婂鐪狅紱鏈鎬曡帿錛屼笁澶╂墦楸間袱澶╂檼緗戯紝绔圭鎵撴按涓鍦虹┖錛?/description>zh-cnTue, 17 Feb 2009 05:42:31 GMTTue, 17 Feb 2009 05:42:31 GMT60[杞琞Win32搴旂敤紼嬪簭涓繘紼嬮棿閫氫俊鏂規硶鍒嗘瀽涓庢瘮杈?/title><link>http://m.shnenglu.com/xushaohua/archive/2009/02/17/74015.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Tue, 17 Feb 2009 03:18:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2009/02/17/74015.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/74015.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2009/02/17/74015.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/74015.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/74015.html</trackback:ping><description><![CDATA[<span style="color: rgb(75, 75, 75); font-family: Verdana; font-size: 13px; line-height: 19px; "><p align="center" style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "><strong>Win32</strong><strong>搴旂敤紼嬪簭涓繘紼嬮棿閫氫俊鏂規硶鍒嗘瀽涓庢瘮杈?/strong></p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "> </p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "><strong>1 </strong><strong>榪涚▼涓庤繘紼嬮氫俊</strong></p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "> </p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; ">銆銆榪涚▼鏄鍏ュ唴瀛樺茍鍑嗗鎵ц鐨勭▼搴忥紝姣忎釜榪涚▼閮芥湁縐佹湁鐨勮櫄鎷熷湴鍧絀洪棿錛岀敱浠g爜銆佹暟鎹互鍙婂畠鍙埄鐢ㄧ殑緋葷粺璧勬簮(濡傛枃浠躲佺閬撶瓑)緇勬垚銆傚榪涚▼/澶氱嚎紼嬫槸Windows鎿嶄綔緋葷粺鐨勪竴涓熀鏈壒寰併侻icrosoft Win32搴旂敤緙栫▼鎺ュ彛(Application Programming Interface, API)鎻愪緵浜嗗ぇ閲忔敮鎸佸簲鐢ㄧ▼搴忛棿鏁版嵁鍏變韓鍜屼氦鎹㈢殑鏈哄埗錛岃繖浜涙満鍒惰浣跨殑媧誨姩縐頒負榪涚▼闂撮氫俊(InterProcess Communication, IPC)錛岃繘紼嬮氫俊灝辨槸鎸囦笉鍚岃繘紼嬮棿榪涜鏁版嵁鍏變韓鍜屾暟鎹氦鎹€?br>銆銆姝e洜涓轟嬌鐢╓in32 API榪涜榪涚▼閫氫俊鏂瑰紡鏈夊縐嶏紝濡備綍閫夋嫨鎭板綋鐨勯氫俊鏂瑰紡灝辨垚涓哄簲鐢ㄥ紑鍙戜腑鐨勪竴涓噸瑕侀棶棰橈紝涓嬮潰鏈枃灝嗗Win32涓繘紼嬮氫俊鐨勫嚑縐嶆柟娉曞姞浠ュ垎鏋愬拰姣旇緝銆?/p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "> </p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "><strong>2 </strong><strong>榪涚▼閫氫俊鏂規硶</strong></p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "><strong>2.1 </strong><strong>鏂囦歡鏄犲皠</strong><br>銆銆鏂囦歡鏄犲皠(Memory-Mapped Files)鑳戒嬌榪涚▼鎶婃枃浠跺唴瀹瑰綋浣滆繘紼嬪湴鍧鍖洪棿涓鍧楀唴瀛橀偅鏍鋒潵瀵瑰緟銆傚洜姝わ紝榪涚▼涓嶅繀浣跨敤鏂囦歡I/O鎿嶄綔錛屽彧闇綆鍗曠殑鎸囬拡鎿嶄綔灝卞彲璇誨彇鍜屼慨鏀規枃浠剁殑鍐呭銆?br>銆銆Win32 API鍏佽澶氫釜榪涚▼璁塊棶鍚屼竴鏂囦歡鏄犲皠瀵硅薄錛屽悇涓繘紼嬪湪瀹冭嚜宸辯殑鍦板潃絀洪棿閲屾帴鏀跺唴瀛樼殑鎸囬拡銆傞氳繃浣跨敤榪欎簺鎸囬拡錛屼笉鍚岃繘紼嬪氨鍙互璇繪垨淇敼鏂囦歡鐨勫唴瀹癸紝瀹炵幇浜嗗鏂囦歡涓暟鎹殑鍏變韓銆?br>銆銆搴旂敤紼嬪簭鏈変笁縐嶆柟娉曟潵浣垮涓繘紼嬪叡浜竴涓枃浠舵槧灝勫璞°?br>銆銆(1)緇ф壙錛氱涓涓繘紼嬪緩绔嬫枃浠舵槧灝勫璞★紝瀹冪殑瀛愯繘紼嬬戶鎵胯瀵硅薄鐨勫彞鏌勩?br>銆銆(2)鍛藉悕鏂囦歡鏄犲皠錛氱涓涓繘紼嬪湪寤虹珛鏂囦歡鏄犲皠瀵硅薄鏃跺彲浠ョ粰璇ュ璞℃寚瀹氫竴涓悕瀛?鍙笌鏂囦歡鍚嶄笉鍚?銆傜浜屼釜榪涚▼鍙氳繃榪欎釜鍚嶅瓧鎵撳紑姝ゆ枃浠舵槧灝勫璞°傚彟澶栵紝絎竴涓繘紼嬩篃鍙互閫氳繃涓浜涘叾瀹僆PC鏈哄埗(鏈夊悕綆¢亾銆侀偖浠舵Ы絳?鎶婂悕瀛椾紶緇欑浜屼釜榪涚▼銆?br>銆銆(3)鍙ユ焺澶嶅埗錛氱涓涓繘紼嬪緩绔嬫枃浠舵槧灝勫璞★紝鐒跺悗閫氳繃鍏跺畠IPC鏈哄埗(鏈夊悕綆¢亾銆侀偖浠舵Ы絳?鎶婂璞″彞鏌勪紶閫掔粰絎簩涓繘紼嬨傜浜屼釜榪涚▼澶嶅埗璇ュ彞鏌勫氨鍙栧緱瀵硅鏂囦歡鏄犲皠瀵硅薄鐨勮闂潈闄愩?br>銆銆鏂囦歡鏄犲皠鏄湪澶氫釜榪涚▼闂村叡浜暟鎹殑闈炲父鏈夋晥鏂規硶錛屾湁杈冨ソ鐨勫畨鍏ㄦс備絾鏂囦歡鏄犲皠鍙兘鐢ㄤ簬鏈湴鏈哄櫒鐨勮繘紼嬩箣闂達紝涓嶈兘鐢ㄤ簬緗戠粶涓紝鑰屽紑鍙戣呰繕蹇呴』鎺у埗榪涚▼闂寸殑鍚屾銆?br><strong>2.2 </strong><strong>鍏變韓鍐呭瓨</strong><br>銆銆Win32 API涓叡浜唴瀛?Shared Memory)瀹為檯灝辨槸鏂囦歡鏄犲皠鐨勪竴縐嶇壒孌婃儏鍐點傝繘紼嬪湪鍒涘緩鏂囦歡鏄犲皠瀵硅薄鏃剁敤0xFFFFFFFF鏉ヤ唬鏇挎枃浠跺彞鏌?HANDLE)錛屽氨琛ㄧず浜嗗搴旂殑鏂囦歡鏄犲皠瀵硅薄鏄粠鎿嶄綔緋葷粺欏甸潰鏂囦歡璁塊棶鍐呭瓨錛屽叾瀹冭繘紼嬫墦寮璇ユ枃浠舵槧灝勫璞″氨鍙互璁塊棶璇ュ唴瀛樺潡銆傜敱浜庡叡浜唴瀛樻槸鐢ㄦ枃浠舵槧灝勫疄鐜扮殑錛屾墍浠ュ畠涔熸湁杈冨ソ鐨勫畨鍏ㄦэ紝涔熷彧鑳借繍琛屼簬鍚屼竴璁$畻鏈轟笂鐨勮繘紼嬩箣闂淬?br><strong>2.3 </strong><strong>鍖垮悕綆¢亾</strong><br>銆銆綆¢亾(Pipe)鏄竴縐嶅叿鏈変袱涓鐐圭殑閫氫俊閫氶亾錛氭湁涓绔彞鏌勭殑榪涚▼鍙互鍜屾湁鍙︿竴绔彞鏌勭殑榪涚▼閫氫俊銆傜閬撳彲浠ユ槸鍗曞悜錛嶄竴绔槸鍙鐨勶紝鍙︿竴绔偣鏄彧鍐欑殑錛涗篃鍙互鏄弻鍚戠殑涓綆¢亾鐨勪袱绔偣鏃㈠彲璇諱篃鍙啓銆?br>銆銆鍖垮悕綆¢亾(Anonymous Pipe)鏄湪鐖惰繘紼嬪拰瀛愯繘紼嬩箣闂達紝鎴栧悓涓鐖惰繘紼嬬殑涓や釜瀛愯繘紼嬩箣闂翠紶杈撴暟鎹殑鏃犲悕瀛楃殑鍗曞悜綆¢亾銆傞氬父鐢辯埗榪涚▼鍒涘緩綆¢亾錛岀劧鍚庣敱瑕侀氫俊鐨勫瓙榪涚▼緇ф壙閫氶亾鐨勮绔偣鍙ユ焺鎴栧啓绔偣鍙ユ焺錛岀劧鍚庡疄鐜伴氫俊銆傜埗榪涚▼榪樺彲浠ュ緩绔嬩袱涓垨鏇村涓戶鎵垮尶鍚嶇閬撹鍜屽啓鍙ユ焺鐨勫瓙榪涚▼銆傝繖浜涘瓙榪涚▼鍙互浣跨敤綆¢亾鐩存帴閫氫俊錛屼笉闇瑕侀氳繃鐖惰繘紼嬨?br>銆銆鍖垮悕綆¢亾鏄崟鏈轟笂瀹炵幇瀛愯繘紼嬫爣鍑咺/O閲嶅畾鍚戠殑鏈夋晥鏂規硶錛屽畠涓嶈兘鍦ㄧ綉涓婁嬌鐢紝涔熶笉鑳界敤浜庝袱涓笉鐩稿叧鐨勮繘紼嬩箣闂淬?br><strong>2.4 </strong><strong>鍛藉悕綆¢亾</strong><br>銆銆鍛藉悕綆¢亾(Named Pipe)鏄湇鍔″櫒榪涚▼鍜屼竴涓垨澶氫釜瀹㈡埛榪涚▼涔嬮棿閫氫俊鐨勫崟鍚戞垨鍙屽悜綆¢亾銆備笉鍚屼簬鍖垮悕綆¢亾鐨勬槸鍛藉悕綆¢亾鍙互鍦ㄤ笉鐩稿叧鐨勮繘紼嬩箣闂村拰涓嶅悓璁$畻鏈轟箣闂翠嬌鐢紝鏈嶅姟鍣ㄥ緩绔嬪懡鍚嶇閬撴椂緇欏畠鎸囧畾涓涓悕瀛楋紝浠諱綍榪涚▼閮藉彲浠ラ氳繃璇ュ悕瀛楁墦寮綆¢亾鐨勫彟涓绔紝鏍規嵁緇欏畾鐨勬潈闄愬拰鏈嶅姟鍣ㄨ繘紼嬮氫俊銆?br>銆銆鍛藉悕綆¢亾鎻愪緵浜嗙浉瀵圭畝鍗曠殑緙栫▼鎺ュ彛錛屼嬌閫氳繃緗戠粶浼犺緭鏁版嵁騫朵笉姣斿悓涓璁$畻鏈轟笂涓よ繘紼嬩箣闂撮氫俊鏇村洶闅撅紝涓嶈繃濡傛灉瑕佸悓鏃跺拰澶氫釜榪涚▼閫氫俊瀹冨氨鍔涗笉浠庡績浜嗐?br><strong>2.5 </strong><strong>閭歡妲?/strong><br>銆銆閭歡妲?Mailslots)鎻愪緵榪涚▼闂村崟鍚戦氫俊鑳藉姏錛屼換浣曡繘紼嬮兘鑳藉緩绔嬮偖浠舵Ы鎴愪負閭歡妲芥湇鍔″櫒銆傚叾瀹冭繘紼嬶紝縐頒負閭歡妲藉鎴鳳紝鍙互閫氳繃閭歡妲界殑鍚嶅瓧緇欓偖浠舵Ы鏈嶅姟鍣ㄨ繘紼嬪彂閫佹秷鎭傝繘鏉ョ殑娑堟伅涓鐩存斁鍦ㄩ偖浠舵Ы涓紝鐩村埌鏈嶅姟鍣ㄨ繘紼嬭鍙栧畠涓烘銆備竴涓繘紼嬫棦鍙互鏄偖浠舵Ы鏈嶅姟鍣ㄤ篃鍙互鏄偖浠舵Ы瀹㈡埛錛屽洜姝ゅ彲寤虹珛澶氫釜閭歡妲藉疄鐜拌繘紼嬮棿鐨勫弻鍚戦氫俊銆?br>銆銆閫氳繃閭歡妲藉彲浠ョ粰鏈湴璁$畻鏈轟笂鐨勯偖浠舵Ы銆佸叾瀹冭綆楁満涓婄殑閭歡妲芥垨鎸囧畾緗戠粶鍖哄煙涓墍鏈夎綆楁満涓婃湁鍚屾牱鍚嶅瓧鐨勯偖浠舵Ы鍙戦佹秷鎭傚箍鎾氫俊鐨勬秷鎭暱搴︿笉鑳借秴榪?00瀛楄妭錛岄潪騫挎挱娑堟伅鐨勯暱搴﹀垯鍙楅偖浠舵Ы鏈嶅姟鍣ㄦ寚瀹氱殑鏈澶ф秷鎭暱搴︾殑闄愬埗銆?br>銆銆閭歡妲戒笌鍛藉悕綆¢亾鐩鎬技錛屼笉榪囧畠浼犺緭鏁版嵁鏄氳繃涓嶅彲闈犵殑鏁版嵁鎶?濡俆CP/IP鍗忚涓殑UDP鍖?瀹屾垚鐨勶紝涓鏃︾綉緇滃彂鐢熼敊璇垯鏃犳硶淇濊瘉娑堟伅姝g‘鍦版帴鏀訛紝鑰屽懡鍚嶇閬撲紶杈撴暟鎹垯鏄緩绔嬪湪鍙潬榪炴帴鍩虹涓婄殑銆備笉榪囬偖浠舵Ы鏈夌畝鍖栫殑緙栫▼鎺ュ彛鍜岀粰鎸囧畾緗戠粶鍖哄煙鍐呯殑鎵鏈夎綆楁満騫挎挱娑堟伅鐨勮兘鍔涳紝鎵浠ラ偖浠舵Ы涓嶅け涓哄簲鐢ㄧ▼搴忓彂閫佸拰鎺ユ敹娑堟伅鐨勫彟涓縐嶉夋嫨銆?br><strong>2.6 </strong><strong>鍓創鏉?/strong><br>銆銆鍓創鏉?Clipped Board)瀹炶川鏄疻in32 API涓竴緇勭敤鏉ヤ紶杈撴暟鎹殑鍑芥暟鍜屾秷鎭紝涓篧indows搴旂敤紼嬪簭涔嬮棿榪涜鏁版嵁鍏變韓鎻愪緵浜嗕竴涓腑浠嬶紝Windows宸插緩绔嬬殑鍓垏(澶嶅埗)錛嶇矘璐寸殑鏈哄埗涓轟笉鍚屽簲鐢ㄧ▼搴忎箣闂村叡浜笉鍚屾牸寮忔暟鎹彁渚涗簡涓鏉℃嵎寰勩傚綋鐢ㄦ埛鍦ㄥ簲鐢ㄧ▼搴忎腑鎵ц鍓垏鎴栧鍒舵搷浣滄椂錛屽簲鐢ㄧ▼搴忔妸閫夊彇鐨勬暟鎹敤涓縐嶆垨澶氱鏍煎紡鏀懼湪鍓創鏉夸笂銆傜劧鍚庝換浣曞叾瀹冨簲鐢ㄧ▼搴忛兘鍙互浠庡壀璐存澘涓婃嬀鍙栨暟鎹紝浠庣粰瀹氭牸寮忎腑閫夋嫨閫傚悎鑷繁鐨勬牸寮忋?br>銆銆鍓創鏉挎槸涓涓潪甯告澗鏁g殑浜ゆ崲濯掍粙錛屽彲浠ユ敮鎸佷換浣曟暟鎹牸寮忥紝姣忎竴鏍煎紡鐢變竴鏃犵鍙鋒暣鏁版爣璇嗭紝瀵規爣鍑?棰勫畾涔?鍓創鏉挎牸寮忥紝璇ュ兼槸Win32 API瀹氫箟鐨勫父閲忥紱瀵歸潪鏍囧噯鏍煎紡鍙互浣跨敤Register Clipboard Format鍑芥暟娉ㄥ唽涓烘柊鐨勫壀璐存澘鏍煎紡銆傚埄鐢ㄥ壀璐存澘榪涜浜ゆ崲鐨勬暟鎹彧闇鍦ㄦ暟鎹牸寮忎笂涓鑷存垨閮藉彲浠ヨ漿鍖栦負鏌愮鏍煎紡灝辮銆備絾鍓創鏉垮彧鑳藉湪鍩轟簬Windows鐨勭▼搴忎腑浣跨敤錛屼笉鑳藉湪緗戠粶涓婁嬌鐢ㄣ?br><strong>2.7 </strong><strong>鍔ㄦ佹暟鎹氦鎹?/strong><br>銆銆鍔ㄦ佹暟鎹氦鎹?DDE)鏄嬌鐢ㄥ叡浜唴瀛樺湪搴旂敤紼嬪簭涔嬮棿榪涜鏁版嵁浜ゆ崲鐨勪竴縐嶈繘紼嬮棿閫氫俊褰㈠紡銆傚簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢―DE榪涜涓嬈℃ф暟鎹紶杈擄紝涔熷彲浠ュ綋鍑虹幇鏂版暟鎹椂錛岄氳繃鍙戦佹洿鏂板煎湪搴旂敤紼嬪簭闂村姩鎬佷氦鎹㈡暟鎹?br>銆銆DDE鍜屽壀璐存澘涓鏍鋒棦鏀寔鏍囧噯鏁版嵁鏍煎紡(濡傛枃鏈佷綅鍥劇瓑)錛屽張鍙互鏀寔鑷繁瀹氫箟鐨勬暟鎹牸寮忋備絾瀹冧滑鐨勬暟鎹紶杈撴満鍒跺嵈涓嶅悓錛屼竴涓槑鏄懼尯鍒槸鍓創鏉挎搷浣滃嚑涔庢繪槸鐢ㄤ綔瀵圭敤鎴鋒寚瀹氭搷浣滅殑涓嬈℃у簲絳旓紞濡備粠鑿滃崟涓夋嫨Paste鍛戒護銆傚敖綆DE涔熷彲浠ョ敱鐢ㄦ埛鍚姩錛屼絾瀹冪戶緇彂鎸ヤ綔鐢ㄤ竴鑸笉蹇呯敤鎴瘋繘涓姝ュ共棰勩侱DE鏈変笁縐嶆暟鎹氦鎹㈡柟寮忥細<br>銆銆(1) 鍐烽摼錛氭暟鎹氦鎹㈡槸涓嬈℃ф暟鎹紶杈擄紝涓庡壀璐存澘鐩稿悓銆?br>銆銆(2) 娓╅摼錛氬綋鏁版嵁浜ゆ崲鏃舵湇鍔″櫒閫氱煡瀹㈡埛錛岀劧鍚庡鎴峰繀欏昏姹傛柊鐨勬暟鎹?br>銆銆(3) 鐑摼錛氬綋鏁版嵁浜ゆ崲鏃舵湇鍔″櫒鑷姩緇欏鎴峰彂閫佹暟鎹?br>銆銆DDE浜ゆ崲鍙互鍙戠敓鍦ㄥ崟鏈烘垨緗戠粶涓笉鍚岃綆楁満鐨勫簲鐢ㄧ▼搴忎箣闂淬傚紑鍙戣呰繕鍙互瀹氫箟瀹氬埗鐨凞DE鏁版嵁鏍煎紡榪涜搴旂敤紼嬪簭涔嬮棿鐗瑰埆鐩殑IPC錛屽畠浠湁鏇寸揣瀵嗚﹀悎鐨勯氫俊瑕佹眰銆傚ぇ澶氭暟鍩轟簬Windows鐨勫簲鐢ㄧ▼搴忛兘鏀寔DDE銆?br><strong>2.8 </strong><strong>瀵硅薄榪炴帴涓庡祵鍏?/strong><br>銆銆搴旂敤紼嬪簭鍒╃敤瀵硅薄榪炴帴涓庡祵鍏?OLE)鎶鏈鐞嗗鍚堟枃妗?鐢卞縐嶆暟鎹牸寮忕粍鎴愮殑鏂囨。)錛孫LE鎻愪緵浣挎煇搴旂敤紼嬪簭鏇村鏄撹皟鐢ㄥ叾瀹冨簲鐢ㄧ▼搴忚繘琛屾暟鎹紪杈戠殑鏈嶅姟銆備緥濡傦紝OLE鏀寔鐨勫瓧澶勭悊鍣ㄥ彲浠ュ祵濂楃數瀛愯〃鏍鹼紝褰撶敤鎴瘋緙栬緫鐢靛瓙琛ㄦ牸鏃禣LE搴撳彲鑷姩鍚姩鐢靛瓙琛ㄦ牸緙栬緫鍣ㄣ傚綋鐢ㄦ埛閫鍑虹數瀛愯〃鏍肩紪杈戝櫒鏃訛紝璇ヨ〃鏍煎凡鍦ㄥ師濮嬪瓧澶勭悊鍣ㄦ枃妗d腑寰楀埌鏇存柊銆傚湪榪欓噷鐢靛瓙琛ㄦ牸緙栬緫鍣ㄥ彉鎴愪簡瀛楀鐞嗗櫒鐨勬墿灞曪紝鑰屽鏋滀嬌鐢―DE錛岀敤鎴瘋鏄懼紡鍦板惎鍔ㄧ數瀛愯〃鏍肩紪杈戝櫒銆?br>銆銆鍚孌DE鎶鏈浉鍚岋紝澶у鏁板熀浜嶹indows鐨勫簲鐢ㄧ▼搴忛兘鏀寔OLE鎶鏈?br><strong>2.9 </strong><strong>鍔ㄦ佽繛鎺ュ簱</strong><br>銆銆Win32鍔ㄦ佽繛鎺ュ簱(DLL)涓殑鍏ㄥ眬鏁版嵁鍙互琚皟鐢―LL鐨勬墍鏈夎繘紼嬪叡浜紝榪欏氨鍙堢粰榪涚▼闂撮氫俊寮杈熶簡涓鏉℃柊鐨勯斿緞錛屽綋鐒惰闂椂瑕佹敞鎰忓悓姝ラ棶棰樸?br>銆銆铏界劧鍙互閫氳繃DLL榪涜榪涚▼闂存暟鎹叡浜紝浣嗕粠鏁版嵁瀹夊叏鐨勮搴﹁冭檻錛屾垜浠茍涓嶆彁鍊¤繖縐嶆柟娉曪紝浣跨敤甯︽湁璁塊棶鏉冮檺鎺у埗鐨勫叡浜唴瀛樼殑鏂規硶鏇村ソ涓浜涖?br><strong>2.10 </strong><strong>榪滅▼榪囩▼璋冪敤</strong><br>銆銆Win32 API鎻愪緵鐨勮繙紼嬭繃紼嬭皟鐢?RPC)浣垮簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢ㄨ繙紼嬭皟鐢ㄥ嚱鏁幫紝榪欎嬌鍦ㄧ綉緇滀笂鐢≧PC榪涜榪涚▼閫氫俊灝卞儚鍑芥暟璋冪敤閭f牱綆鍗曘俁PC鏃㈠彲浠ュ湪鍗曟満涓嶅悓榪涚▼闂翠嬌鐢ㄤ篃鍙互鍦ㄧ綉緇滀腑浣跨敤銆?br>銆銆鐢變簬Win32 API鎻愪緵鐨凴PC鏈嶄粠OSF-DCE(Open Software Foundation Distributed Computing Environment)鏍囧噯銆傛墍浠ラ氳繃Win32 API緙栧啓鐨凴PC搴旂敤紼嬪簭鑳戒笌鍏跺畠鎿嶄綔緋葷粺涓婃敮鎸丏EC鐨凴PC搴旂敤紼嬪簭閫氫俊銆備嬌鐢≧PC寮鍙戣呭彲浠ュ緩绔嬮珮鎬ц兘銆佺揣瀵嗚﹀悎鐨勫垎甯冨紡搴旂敤紼嬪簭銆?br><strong>2.11 NetBios</strong><strong>鍑芥暟</strong><br>銆銆Win32 API鎻愪緵NetBios鍑芥暟鐢ㄤ簬澶勭悊浣庣駭緗戠粶鎺у埗錛岃繖涓昏鏄負IBM NetBios緋葷粺緙栧啓涓嶹indows鐨勬帴鍙c傞櫎闈為偅浜涙湁鐗規畩浣庣駭緗戠粶鍔熻兘瑕佹眰鐨勫簲鐢ㄧ▼搴忥紝鍏跺畠搴旂敤紼嬪簭鏈濂戒笉瑕佷嬌鐢∟etBios鍑芥暟鏉ヨ繘琛岃繘紼嬮棿閫氫俊銆?br><strong>2.12 Sockets</strong><br>銆銆Windows Sockets瑙勮寖鏄互U.C.Berkeley澶уBSD UNIX涓祦琛岀殑Socket鎺ュ彛涓鴻寖渚嬪畾涔夌殑涓濂梂indows涓嬬殑緗戠粶緙栫▼鎺ュ彛銆傞櫎浜咮erkeley Socket鍘熸湁鐨勫簱鍑芥暟浠ュ錛岃繕鎵╁睍浜嗕竴緇勯拡瀵筗indows鐨勫嚱鏁幫紝浣跨▼搴忓憳鍙互鍏呭垎鍒╃敤Windows鐨勬秷鎭満鍒惰繘琛岀紪紼嬨?br>銆銆鐜板湪閫氳繃Sockets瀹炵幇榪涚▼閫氫俊鐨勭綉緇滃簲鐢ㄨ秺鏉ヨ秺澶氾紝榪欎富瑕佺殑鍘熷洜鏄疭ockets鐨勮法騫沖彴鎬ц姣斿叾瀹僆PC鏈哄埗濂藉緱澶氾紝鍙﹀WinSock 2.0涓嶄粎鏀寔TCP/IP鍗忚錛岃屼笖榪樻敮鎸佸叾瀹冨崗璁?濡侷PX)銆係ockets鐨勫敮涓緙虹偣鏄畠鏀寔鐨勬槸搴曞眰閫氫俊鎿嶄綔錛岃繖浣垮緱鍦ㄥ崟鏈虹殑榪涚▼闂磋繘琛岀畝鍗曟暟鎹紶閫掍笉澶柟渚匡紝榪欐椂浣跨敤涓嬮潰灝嗕粙緇嶇殑WM_COPYDATA娑堟伅灝嗘洿鍚堥備簺銆?br><strong>2.13 WM_COPYDATA</strong><strong>娑堟伅</strong><br>銆銆WM_COPYDATA鏄竴縐嶉潪甯稿己澶у嵈椴滀負浜虹煡鐨勬秷鎭傚綋涓涓簲鐢ㄥ悜鍙︿竴涓簲鐢ㄤ紶閫佹暟鎹椂錛屽彂閫佹柟鍙渶浣跨敤璋冪敤SendMessage鍑芥暟錛屽弬鏁版槸鐩殑紿楀彛鐨勫彞鏌勩佷紶閫掓暟鎹殑璧峰鍦板潃銆乄M_COPYDATA娑堟伅銆傛帴鏀舵柟鍙渶鍍忓鐞嗗叾瀹冩秷鎭偅鏍峰鐞哤M_COPY DATA娑堟伅錛岃繖鏍鋒敹鍙戝弻鏂瑰氨瀹炵幇浜嗘暟鎹叡浜?br>銆銆WM_COPYDATA鏄竴縐嶉潪甯哥畝鍗曠殑鏂規硶錛屽畠鍦ㄥ簳灞傚疄闄呬笂鏄氳繃鏂囦歡鏄犲皠鏉ュ疄鐜扮殑銆傚畠鐨勭己鐐規槸鐏墊椿鎬т笉楂橈紝騫朵笖瀹冨彧鑳界敤浜嶹indows騫沖彴鐨勫崟鏈虹幆澧冧笅銆?/p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "> </p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; "><strong>3 </strong><strong>緇撴潫璇?/strong></p><p style="line-height: 150%; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; ">銆銆Win32 API涓哄簲鐢ㄧ▼搴忓疄鐜拌繘紼嬮棿閫氫俊鎻愪緵浜嗗姝ゅ縐嶉夋嫨鏂規錛岄偅涔堝紑鍙戣呭浣曡繘琛岄夋嫨鍛紵閫氬父鍦ㄥ喅瀹氫嬌鐢ㄥ摢縐岻PC鏂規硶涔嬪墠搴旇冭檻涓嬩竴浜涢棶棰橈紝濡傚簲鐢ㄧ▼搴忔槸鍦ㄧ綉緇滅幆澧冧笅榪樻槸鍦ㄥ崟鏈虹幆澧冧笅宸ヤ綔絳夈?/p></span> <img src ="http://m.shnenglu.com/xushaohua/aggbug/74015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2009-02-17 11:18 <a href="http://m.shnenglu.com/xushaohua/archive/2009/02/17/74015.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>BCD鐮?/title><link>http://m.shnenglu.com/xushaohua/archive/2007/12/24/39499.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Mon, 24 Dec 2007 04:34:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2007/12/24/39499.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/39499.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2007/12/24/39499.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/39499.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/39499.html</trackback:ping><description><![CDATA[鍗矪CD浠g爜銆侭inary-Coded Decimal‎錛岀畝縐癇CD錛岀ОBCD鐮佹垨浜?鍗佽繘鍒朵唬鐮侊紝浜︾О浜岃繘鐮佸崄榪涙暟銆傛槸涓縐?a target=_blank><u><font color=#0000ff>浜岃繘鍒?/font></u></a>鐨勬暟瀛楃紪鐮佸艦寮忥紝鐢ㄤ簩榪涘埗緙栫爜鐨?a target=_blank><u><font color=#0000ff>鍗佽繘鍒?/font></u></a>浠g爜銆傝繖縐嶇紪鐮佸艦寮忓埄鐢ㄤ簡鍥涗釜浣嶅厓鏉ュ偍瀛樹竴涓崄榪涘埗鐨勬暟鐮侊紝浣夸簩榪涘埗鍜屽崄榪涘埗涔嬮棿鐨勮漿鎹㈠緱浠ュ揩鎹風殑榪涜銆傝繖縐嶇紪鐮佹妧宸э紝鏈甯哥敤浜庝細璁$郴緇熺殑璁捐閲岋紝鍥犱負浼氳鍒跺害緇忓父闇瑕佸寰堥暱鐨勬暟瀛椾覆浣滃噯紜殑璁$畻銆傜浉瀵逛簬涓鑸殑嫻偣寮忚鏁版硶錛岄噰鐢˙CD鐮侊紝鏃㈠彲淇濆瓨鏁板肩殑綺劇‘搴︼紝鍙堝彲鍏嶅嵈浣跨數鑴戜綔嫻偣榪愮畻鏃舵墍鑰楄垂鐨勬椂闂淬傛澶栵紝瀵逛簬鍏朵粬闇瑕侀珮綺劇‘搴︾殑璁$畻錛孊CD緙栫爜浜﹀緢甯哥敤銆?br><br>鐢變簬鍗佽繘鍒舵暟鍏辨湁0銆?銆?銆?#8230;…銆?鍗佷釜鏁扮爜錛屽洜姝わ紝鑷沖皯闇瑕?浣嶄簩榪涘埗鐮佹潵琛ㄧず1浣嶅崄榪涘埗鏁般?浣嶄簩榪涘埗鐮佸叡鏈?^4=16縐嶇爜緇勶紝鍦ㄨ繖16縐嶄唬鐮佷腑錛屽彲浠ヤ換閫?0縐嶆潵琛ㄧず10涓崄榪涘埗鏁扮爜錛屽叡鏈塏=16錛?錛?6-10錛夛紒綰︾瓑浜?.9涔樹互10鐨?0嬈℃柟縐嶆柟妗堛傚父鐢ㄧ殑BCD浠g爜鍒椾簬鏈?br><br><strong>甯哥敤BCD緙栫爜鏂瑰紡</strong><br>鏈甯哥敤鐨凚CD緙栫爜錛屽氨鏄嬌鐢?0"鑷?9"榪欏崄涓暟鍊肩殑浜岃繘鐮佹潵琛ㄧず銆傝繖縐嶇紪鐮佹柟寮忥紝鍦ㄤ腑鍥藉ぇ闄嗙О涔嬩負“8421鐮?#8221;銆傞櫎姝や互澶栵紝瀵瑰簲涓嶅悓闇姹傦紝鍚勪漢浜﹀紑鍙戜簡涓嶅悓鐨勭紪鐮佹柟娉曪紝浠ラ傚簲涓嶅悓鐨勯渶姹傘傝繖浜涚紪鐮侊紝澶ц嚧鍙互鍒嗘垚鏈夋潈鐮佸拰鏃犳潈鐮佷袱縐嶏細<br><br>鏈夋潈BCD鐮侊紝濡傦細8421(鏈甯哥敤)銆?421銆?421… <br>鏃犳潈BCD鐮侊紝濡傦細浣?鐮併佹牸闆風爜… <br><br>甯哥敤<span>BCD緙栫爜琛?/span> <div align=center> <table cellSpacing=0 cellPadding=0 width="74%" border=1> <tbody> <tr> <td> <div align=center> <table cellSpacing=0 cellPadding=0 width=410 border=0> <tbody> <tr> <td width=90> <p> </p> </td> <td width=67> <p align=center><span>8421鐮?/span></p> </td> <td width=60> <p align=center><span>5421鐮?/span></p> </td> <td width=66> <p align=center><span>2421鐮?/span></p> </td> <td width=67> <p align=center><span>5211鐮?/span></p> </td> <td width=60> <p align=center><span>浣?span>3鐮?/span></span></p> </td> </tr> <tr> <td width=90> <p align=center><span>0</span></p> </td> <td width=67> <p align=center><span>0000</span></p> </td> <td width=60> <p align=center><span>0000</span></p> </td> <td width=66> <p align=center><span>0000</span></p> </td> <td width=67> <p align=center><span>0000</span></p> </td> <td width=60> <p align=center><span>0000</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>1</span></p> </td> <td width=67> <p align=center><span>0001</span></p> </td> <td width=60> <p align=center><span>0001</span></p> </td> <td width=66> <p align=center><span>0001</span></p> </td> <td width=67> <p align=center><span>0001</span></p> </td> <td width=60> <p align=center><span>0100</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>2</span></p> </td> <td width=67> <p align=center><span>0010</span></p> </td> <td width=60> <p align=center><span>0010</span></p> </td> <td width=66> <p align=center><span>0010</span></p> </td> <td width=67> <p align=center><span>0100</span></p> </td> <td width=60> <p align=center><span>0101</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>3</span></p> </td> <td width=67> <p align=center><span>0011</span></p> </td> <td width=60> <p align=center><span>0011</span></p> </td> <td width=66> <p align=center><span>0011</span></p> </td> <td width=67> <p align=center><span>0101</span></p> </td> <td width=60> <p align=center><span>0110</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>4</span></p> </td> <td width=67> <p align=center><span>0100</span></p> </td> <td width=60> <p align=center><span>0100</span></p> </td> <td width=66> <p align=center><span>0100</span></p> </td> <td width=67> <p align=center><span>0111</span></p> </td> <td width=60> <p align=center><span>0111</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>5</span></p> </td> <td width=67> <p align=center><span>0101</span></p> </td> <td width=60> <p align=center><span>1000</span></p> </td> <td width=66> <p align=center><span>0101</span></p> </td> <td width=67> <p align=center><span>1000</span></p> </td> <td width=60> <p align=center><span>1000</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>6</span></p> </td> <td width=67> <p align=center><span>0110</span></p> </td> <td width=60> <p align=center><span>1001</span></p> </td> <td width=66> <p align=center><span>0110</span></p> </td> <td width=67> <p align=center><span>1001</span></p> </td> <td width=60> <p align=center><span>1001</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>7</span></p> </td> <td width=67> <p align=center><span>0111</span></p> </td> <td width=60> <p align=center><span>1010</span></p> </td> <td width=66> <p align=center><span>0111</span></p> </td> <td width=67> <p align=center><span>1100</span></p> </td> <td width=60> <p align=center><span>1010</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>8</span></p> </td> <td width=67> <p align=center><span>1000</span></p> </td> <td width=60> <p align=center><span>1011</span></p> </td> <td width=66> <p align=center><span>1110</span></p> </td> <td width=67> <p align=center><span>1101</span></p> </td> <td width=60> <p align=center><span>1011</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>9</span></p> </td> <td width=67> <p align=center><span>1001</span></p> </td> <td width=60> <p align=center><span>1100</span></p> </td> <td width=66> <p align=center><span>1111</span></p> </td> <td width=67> <p align=center><span>1111</span></p> </td> <td width=60> <p align=center><span>1100</span></p> </td> </tr> <tr> <td width=90> <p align=center><span>鏉?/span></p> </td> <td width=67> <p align=center><span>8421</span></p> </td> <td width=60> <p align=center><span>5421</span></p> </td> <td width=66> <p align=center><span>2421</span></p> </td> <td width=67> <p align=center><span>5211</span></p> </td> <td width=60> <p> </p> </td> </tr> </tbody> </table> </div> <p> </p> </td> </tr> </tbody> </table> </div> <span><font size=3>闈炲帇緙╁紡鍜屽帇緙╁紡BCD鐮?br>    BCD鍙堝垎涓轟袱縐嶏紝闈炲帇緙╁紡鍜屽帇緙╁紡涓ょ銆?br>    鍓嶉潰榪欑81瀛樻垚 “08,01” 鏄潪鍘嬬緝寮忥紝鑰屽帇緙╁紡浼氬瓨鎴?“81h” (鐩存帴浠ュ崄鍏繘鍒跺偍瀛?銆傞潪鍘嬬緝鐨凚CD鐮佸彧鏈変綆鍥涗綅鏈夋晥錛岃屽帇緙╃殑BCD鐮佸垯灝嗛珮鍥涗綅涔熺敤涓婁簡錛屽氨鏄涓涓瓧鑺傛湁涓や釜BCD鐮併侭CD鏄敤0鍜?琛ㄧず鍗佽繘鍒訛紝濡?000琛ㄧず0錛?001琛ㄧず1錛?010琛ㄧず2銆傝屽帇緙╃殑BCD鏄敤00琛ㄧず0錛?1琛ㄧず1錛?0琛ㄧず2錛?10琛ㄧず3絳夈?br>    渚嬶細<br>    1234琛ㄧず鎴愰潪鍘嬬緝鐨凚CD鐮佹槸00000001000000100000001100000100錛屼篃灝辨槸0x01020304錛涜屽帇緙〣CD鐮佸垯琛ㄧず鎴?001001000110100錛屼篃灝辨槸0x1234銆?br>    浣嗗帇緙╃殑BCD騫朵笉鍥哄畾錛屽彲鐪嬫儏鍐佃屽畾錛屾墍瑕佺殑灝辨槸鐢ㄦ渶灝戠殑浣嶆暟琛ㄧず灝藉彲鑳藉鐨勬暟銆?/font><br></span> <img src ="http://m.shnenglu.com/xushaohua/aggbug/39499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2007-12-24 12:34 <a href="http://m.shnenglu.com/xushaohua/archive/2007/12/24/39499.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞琞緙栧啓楂樻晥鐨勬暟鎹簱榪炴帴姹?/title><link>http://m.shnenglu.com/xushaohua/archive/2007/12/21/39172.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Thu, 20 Dec 2007 17:42:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2007/12/21/39172.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/39172.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2007/12/21/39172.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/39172.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/39172.html</trackback:ping><description><![CDATA[<p><font face="Times New Roman" size=2>鐩稿叧鎶鏈細</font></p> <ul> <li><font face="Times New Roman" size=2>榪炴帴姹?/font> <li><font face="Times New Roman" size=2>寮曠敤璁版暟</font> <li><font face="Times New Roman" size=2>澶氱嚎紼?/font> <li><font face="Times New Roman" size=2>Timer綾昏繍琛屽熀鐞?/font> <li><font face="Times New Roman" size=2>C#.Net</font>   </li> </ul> <p><font face="Times New Roman" size=2>閫傚疁浜虹兢</font></p> <ul> <li><font face="Times New Roman" size=2>鏁版嵁搴撳簲鐢ㄧ▼搴忕▼搴忓憳</font> <li><font face="Times New Roman" size=2>緋葷粺鍒嗘瀽鍛?/font> <li><font face="Times New Roman" size=2>妯″潡璁捐甯?/font> <li>鏈変竴瀹氬姛搴曠殑紼嬪簭鍛?</li> </ul> <p>鐩綍</p> <ul> <li><font size=2>寮曡█</font> <ol> <li><font face="Times New Roman" size=2>鏁版嵁搴撹繛鎺ユ睜錛圕onnection Pool錛夌殑宸ヤ綔鍘熺悊</font> </li> </ol> <li><font face="Times New Roman" size=2>榪炴帴姹犲叧閿棶棰樺垎鏋?/font> <ol> <li><font face="Times New Roman" size=2>騫跺彂闂</font> <li><font face="Times New Roman" size=2>浜嬪姟澶勭悊</font> <li><font face="Times New Roman" size=2>榪炴帴姹犵殑鍒嗛厤涓庨噴鏀?/font> <li><font face="Times New Roman" size=2>榪炴帴姹犵殑閰嶇疆涓庣淮鎶?/font> </li> </ol> <li> <div align=left><font face="Times New Roman" size=2>鍏抽敭璁</font></div> <ol> <li> <div align=left><font face="Times New Roman" size=2>寮曠敤璁版暟</font></div> <li> <div align=left>濡備綍瀹炵幇浜嬪姟澶勭悊</div> <li> <div align=left> <div align=left> 綆$悊榪炴帴姹?/div> </div> </li> </ol> <li> <div align=left> <div align=left>緇撳悎浠g爜璇存槑</div> </div> <ol> <li> <div align=left>鏋勯犳柟娉?/div> <li> <div align=left><font size=2>鍚姩鏈嶅姟StartService</font></div> <li> <div align=left><font size=2>鍋滄鏈嶅姟StopService</font></div> <li> <div align=left><font size=2>鐢寵 GetConnectionFormPool</font></div> <li> <div align=left><font size=2>閲婃斁DisposeConnection</font></div> <li> <div align=left><font size=2>濡備綍鏇存柊灞炴?/font></div> <li> <div align=left><font size=2>濡備綍紜畾榪炴帴鏄惁澶辨晥</font></div> <li> <div align=left><font size=2>浣跨敤綰跨▼綆$悊榪炴帴姹?/font></div> <ol> <li> <div align=left><font size=2>threadCreate</font></div> <li> <div align=left><font size=2>threadCheck</font></div> </li> </ol> <li> <div align=left><font size=2></font> <p> <font size=2>鍏朵粬</font></p> </div> </li> </ol> </li> </ul> <hr> <p><font color=#ff0000 size=3>寮曡█</font></p> <p><font face="Times New Roman" size=2>涓鑸殑鏁版嵁搴撳簲鐢ㄧ▼搴忓ぇ鑷撮兘閬靛驚涓嬮潰鐨勬楠?</font></p> <ol> <li><font face="Times New Roman"><font size=2><font color=#ff99cc>鍒濆鍖栫▼搴?/font> </font></font> <li><font face="Times New Roman"><font size=2><font color=#ff99cc>鐢ㄦ埛鍦║I涓婅緭鍏ユ搷浣?/font> </font></font> <li><font face="Times New Roman"><font size=2><font color=#ff99cc>鐢辯敤鎴鋒搷浣滀駭鐢熸暟鎹簱鎿嶄綔</font> </font></font> <li><font face="Times New Roman"><font size=2><font color=#ff99cc>灝嗘暟鎹簱鎿嶄綔閫掍氦鍒版暟鎹簱鏈嶅姟鍣?/font> </font></font> <li><font face="Times New Roman"><font color=#ff99cc size=2>.... (閲嶅2~4)</font></font> <li><font face="Times New Roman"><font size=2><font color=#ff99cc>鍏抽棴搴旂敤紼嬪簭</font> </font></font></li> </ol> <p><font face="Times New Roman" size=2>銆銆鑰屾湰鏂囧垯鐫閲嶈瑙d笂闈㈢<font color=#ff0000>4</font>姝ラ.鍦ㄧ潃涓姝ラ涓垜浠粡甯告槸,鎵撳紑鏁版嵁搴撹繛鎺ユ搷浣滄暟鎹簱,鏈鍚庡叧闂暟鎹簱.<br></font><font face="Times New Roman" size=2>銆銆鍦ㄦ湇鍔″櫒绔▼搴忚璁′笂涓庢暟鎹簱鐨勬搷浣滄樉寰楀崄鍒嗛噸瑕?鍥犱負浣犺澶勭悊鐨勬暟鎹搷浣滃崄鍒嗗法澶?濡傛灉棰戠箒鍒涘緩鏁版嵁搴撹繛鎺ラ綣佸叧闂暟鎹簱榪炴帴鍒欎細寮曡搗鏁堢巼浣庝笅鐢氳嚦寮曞彂紼嬪簭宕╂簝.<br>銆銆涔熻鎴戜滑鍙互鏈夊彟涓縐嶆搷浣滄暟鎹簱鐨勫艦寮?鎴戜滑鍙互鍦ㄧ▼搴忚繍琛屾椂鎵撳紑涓涓暟鎹簱榪炴帴,璁╄繖涓繛鎺ユ案涔呭瓨鍦ㄧ洿鍒扮▼搴?姝諱骸',閭d箞榪欐牱鍋氫篃鏈変笉瀹夊叏闅愭偅,鎴戜滑鐭ラ亾涓涓璞″瓨鍦ㄦ椂闂磋秺闀挎垨琚嬌鐢ㄦ鏁拌秺澶氬垯瀹冭〃鐜扮殑瓚婁笉紼沖畾,鐫涓嶇ǔ瀹氬洜绱犳槸鐢變簬瀵硅薄鍐呴儴鍙兘瀛樺湪鐨勬綔鍦ㄨ璁¢棶棰樹駭鐢?瀵逛簬鏁版嵁搴撹繛鎺ュ璞¢亾鐞嗕篃涓鏍?鎴戜滑涓嶈兘淇濊瘉涓涓狢onnection瀵硅薄閲岄潰鑳戒竴鐐歸棶棰樹笉瀛樺湪.鎵浠ユ垜浠篃涓嶆暍闀挎椂闂村皢瀹冮暱鏃墮棿鍗犵敤鍐呭瓨.<br></font><font face="Times New Roman" size=2>銆銆鏃㈢劧鏈夎繖涔堝鐨勯棶棰樼敱姝ゆ垜浠渶瑕佷竴涓兘甯垜浠淮鎶ゆ暟鎹簱榪炴帴鐨勪笢瑗?瀹冨氨鏄?font color=#ff0000>榪炴帴姹?/font>,緗戜笂鏈夊緢澶氱殑榪炴帴姹犱緥瀛?浣嗘槸澶氭暟閮芥槸綆鍗曠殑渚嬪瓙,鎴栬呬粙緇嶆瘮杈冨鏉傜殑榪炴帴姹犲師鐞?娌℃湁涓涓瘮杈冨畬鏁翠粙緇嶅拰瀹炵幇榪炴帴姹犵殑渚嬪瓙.榪欓噷灝變粙緇嶄綘濡備綍鑷繁鍒朵綔涓涓繛鎺ユ睜.<br></font><font face="Times New Roman" size=2>銆銆瀵逛簬鍏變韓璧勬簮錛屾湁涓涓緢钁楀悕鐨勮璁℃ā寮忥細璧勬簮姹狅紙Resource Pool錛夈傝妯″紡姝f槸涓轟簡瑙e喅璧勬簮鐨勯綣佸垎閰嶏箲閲婃斁鎵閫犳垚鐨勯棶棰樸備負瑙e喅鎴戜滑鐨勯棶棰橈紝鍙互閲囩敤鏁版嵁搴撹繛鎺ユ睜鎶鏈傛暟鎹簱榪炴帴姹犵殑鍩烘湰鎬濇兂灝辨槸涓烘暟鎹簱榪炴帴寤虹珛涓涓?#8220;緙撳啿姹?#8221;銆傞鍏堝湪緙撳啿姹犱腑鏀懼叆涓瀹氭暟閲忕殑榪炴帴錛屽綋闇瑕佸緩绔嬫暟鎹簱榪炴帴鏃訛紝鍙渶浠?#8220;緙撳啿姹?#8221;涓彇鍑轟竴涓紝浣跨敤瀹屾瘯涔嬪悗鍐嶆斁鍥炲幓銆傛垜浠彲浠ラ氳繃璁懼畾榪炴帴姹犳渶澶ц繛鎺ユ暟鏉ラ槻姝㈢郴緇熸棤灝界殑涓庢暟鎹簱榪炴帴銆傛洿涓洪噸瑕佺殑鏄垜浠彲浠ラ氳繃榪炴帴姹犵殑綆$悊鏈哄埗鐩戣鏁版嵁搴撶殑榪炴帴鐨勬暟閲忥箲浣跨敤鎯呭喌錛屼負緋葷粺寮鍙戯箲嫻嬭瘯鍙婃ц兘璋冩暣鎻愪緵渚濇嵁銆傝繛鎺ユ睜鐨勫熀鏈伐浣滃師鐞嗚涓嬪浘銆?/font></p> <p align=center><font face="Times New Roman" size=3>鏁版嵁搴撹繛鎺ユ睜錛圕onnection Pool錛夌殑宸ヤ綔鍘熺悊</font></p> <p align=center><font face="Times New Roman" size=2><img height=227 alt="" src="http://www.mx68.com/WebDeveloper/UploadFiles_5122/200601/2006118234027410.gif" width=563></font></p> <p align=left><font face="Times New Roman" size=2><font face=Arial color=#ff0000 size=3></font></font></p> <p><font color=#ff0000 size=3> 榪炴帴姹犲叧閿棶棰樺垎鏋?/font></p> <p align=left><font face="Times New Roman" size=2>銆銆1銆佸茍鍙戦棶棰?/font></p> <p align=left><font face="Times New Roman" size=2>銆銆涓轟簡浣胯繛鎺ョ鐞嗘湇鍔″叿鏈夋渶澶х殑閫氱敤鎬э紝蹇呴』鑰冭檻澶氱嚎紼嬬幆澧冿紝鍗沖茍鍙戦棶棰樸傝繖涓棶棰樼浉瀵規瘮杈冨ソ瑙e喅錛屽洜涓哄悇涓璦鑷韓鎻愪緵浜嗗騫跺彂綆$悊鐨勬敮鎸佸儚java,c#絳夌瓑錛屼嬌鐢╯ynchronized(java)lock(C#)鍏抽敭瀛楀嵆鍙‘淇濈嚎紼嬫槸鍚屾鐨勩備嬌鐢ㄦ柟娉曞彲浠ュ弬鑰冿紝鐩稿叧鏂囩尞銆?/font></p> <p align=left><font face="Times New Roman" size=2>銆銆錛掋佷簨鍔″鐞?/font></p> <p align=left><font face="Times New Roman" size=2>銆銆鎴戜滑鐭ラ亾錛屼簨鍔″叿鏈夊師瀛愭э紝姝ゆ椂瑕佹眰瀵規暟鎹簱鐨勬搷浣滅鍚?#8220;ALL-ALL-NOTHING”鍘熷垯,鍗沖浜庝竴緇凷QL璇彞瑕佷箞鍏ㄥ仛錛岃涔堝叏涓嶅仛銆?br></font><font face="Times New Roman" size=2>銆銆鎴戜滑鐭ラ亾褰擄紥涓嚎紼嬪叕鐢ㄤ竴涓繛鎺onnection瀵硅薄錛岃屼笖鍚勮嚜閮芥湁鑷繁鐨勪簨鍔¤澶勭悊鏃跺欙紝瀵逛簬榪炴帴姹犳槸涓涓緢澶寸柤鐨勯棶棰橈紝鍥犱負鍗充嬌Connection綾繪彁渚涗簡鐩稿簲鐨勪簨鍔℃敮鎸侊紝鍙槸鎴戜滑浠嶇劧涓嶈兘紜畾閭d釜鏁版嵁搴撴搷浣滄槸瀵瑰簲閭d釜浜嬪姟鐨勶紝榪欐槸鐢變簬鎴戜滑鏈夛紥涓嚎紼嬮兘鍦ㄨ繘琛屼簨鍔℃搷浣滆屽紩璧風殑銆備負姝ゆ垜浠彲浠ヤ嬌鐢?/font><font face="Times New Roman" size=2>姣忎竴涓簨鍔$嫭鍗犱竴涓繛鎺ユ潵瀹炵幇錛岃櫧鐒惰繖縐嶆柟娉曟湁鐐規氮璐硅繛鎺ユ睜璧勬簮浣嗘槸鍙互澶уぇ闄嶄綆浜嬪姟綆$悊鐨勫鏉傛с?/font></p> <p align=left><font face="Times New Roman" size=2>銆銆錛撱佽繛鎺ユ睜鐨勫垎閰嶄笌閲婃斁</font></p> <p align=left><font face="Times New Roman" size=2>銆銆榪炴帴姹犵殑鍒嗛厤涓庨噴鏀撅紝瀵圭郴緇熺殑鎬ц兘鏈夊緢澶х殑褰卞搷銆傚悎鐞嗙殑鍒嗛厤涓庨噴鏀撅紝鍙互鎻愰珮榪炴帴鐨勫鐢ㄥ害錛屼粠鑰岄檷浣庡緩绔嬫柊榪炴帴鐨勫紑閿錛屽悓鏃惰繕鍙互鍔犲揩鐢ㄦ埛鐨勮闂熷害銆?br></font><font face="Times New Roman" size=2>銆銆瀵逛簬榪炴帴鐨勭鐞嗗彲浣跨敤涓涓狶ist銆傚嵆鎶婂凡緇忓垱寤虹殑榪炴帴閮芥斁鍏ist涓幓緇熶竴綆$悊銆傛瘡褰撶敤鎴瘋姹備竴涓繛鎺ユ椂錛岀郴緇熸鏌ヨ繖涓狶ist涓湁娌℃湁鍙互鍒嗛厤鐨勮繛鎺ャ傚鏋滄湁灝辨妸閭d釜鏈鍚堥傜殑榪炴帴鍒嗛厤緇欎粬<font color=#339966>錛堝浣曡兘鎵懼埌鏈鍚堥傜殑榪炴帴鏂囩珷灝嗗湪鍏抽敭璁涓寚鍑?/font>錛夛紱濡傛灉娌℃湁灝辨姏鍑轟竴涓紓甯哥粰鐢ㄦ埛錛孡ist涓繛鎺ユ槸鍚﹀彲浠ヨ鍒嗛厤鐢變竴涓嚎紼嬫潵涓撻棬綆$悊鎹庡悗鎴戜細浠嬬粛榪欎釜綰跨▼鐨勫叿浣撳疄鐜般?</font></p> <p> <font face="Times New Roman" size=2>銆銆錛斻佽繛鎺ユ睜鐨勯厤緗笌緇存姢</font></p> <p align=left><font face="Times New Roman" size=2>銆銆榪炴帴姹犱腑鍒板簳搴旇鏀劇疆澶氬皯榪炴帴錛屾墠鑳戒嬌緋葷粺鐨勬ц兘鏈浣籌紵緋葷粺鍙噰鍙栬緗渶灝忚繛鎺ユ暟錛坢inConnection錛夊拰鏈澶ц繛鎺ユ暟錛坢axConnection錛夌瓑鍙傛暟鏉ユ帶鍒惰繛鎺ユ睜涓殑榪炴帴銆傛瘮鏂硅錛屾渶灝忚繛鎺ユ暟鏄郴緇熷惎鍔ㄦ椂榪炴帴姹犳墍鍒涘緩鐨勮繛鎺ユ暟銆傚鏋滃垱寤鴻繃澶氾紝鍒欑郴緇熷惎鍔ㄥ氨鎱紝浣嗗垱寤哄悗緋葷粺鐨勫搷搴旈熷害浼氬緢蹇紱濡傛灉鍒涘緩榪囧皯錛屽垯緋葷粺鍚姩鐨勫緢蹇紝鍝嶅簲璧鋒潵鍗存參銆傝繖鏍鳳紝鍙互鍦ㄥ紑鍙戞椂錛岃緗緝灝忕殑鏈灝忚繛鎺ユ暟錛屽紑鍙戣搗鏉ヤ細蹇紝鑰屽湪緋葷粺瀹為檯浣跨敤鏃惰緗緝澶х殑錛屽洜涓鴻繖鏍峰璁塊棶瀹㈡埛鏉ヨ閫熷害浼氬揩浜涖傛渶澶ц繛鎺ユ暟鏄繛鎺ユ睜涓厑璁歌繛鎺ョ殑鏈澶ф暟鐩紝鍏蜂綋璁劇疆澶氬皯錛岃鐪嬬郴緇熺殑璁塊棶閲忥紝鍙氳繃杞歡闇姹備笂寰楀埌銆?br></font><font face="Times New Roman" size=2>銆銆濡備綍紜繚榪炴帴姹犱腑鐨勬渶灝忚繛鎺ユ暟鍛紵鏈夊姩鎬佸拰闈欐佷袱縐嶇瓥鐣ャ傚姩鎬佸嵆姣忛殧涓瀹氭椂闂村氨瀵硅繛鎺ユ睜榪涜媯嫻嬶紝濡傛灉鍙戠幇榪炴帴鏁伴噺灝忎簬鏈灝忚繛鎺ユ暟錛屽垯琛ュ厖鐩稿簲鏁伴噺鐨勬柊榪炴帴,浠ヤ繚璇佽繛鎺ユ睜鐨勬甯歌繍杞傞潤鎬佹槸鍙戠幇絀洪棽榪炴帴涓嶅鏃跺啀鍘繪鏌ャ?</font></p> <img src ="http://m.shnenglu.com/xushaohua/aggbug/39172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2007-12-21 01:42 <a href="http://m.shnenglu.com/xushaohua/archive/2007/12/21/39172.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[MSDN]浣跨敤榪炴帴姹?/title><link>http://m.shnenglu.com/xushaohua/archive/2007/12/21/39171.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Thu, 20 Dec 2007 17:33:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2007/12/21/39171.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/39171.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2007/12/21/39171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/39171.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/39171.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=title>浣跨敤榪炴帴姹?!----></div> <!--content type: DocStudio. Transform: devdiv2mtps.xslt.--> <div class="hvzpftn" id=mainSection> <div class="hvzpftn" id=mainBody> <p> <p>榪炴帴鍒版暟鎹簱鏈嶅姟鍣ㄩ氬父鐢卞嚑涓渶瑕佸緢闀挎椂闂寸殑姝ラ緇勬垚銆傚繀欏誨緩绔嬬墿鐞嗛氶亾錛堜緥濡傚鎺ュ瓧鎴栧懡鍚嶇閬擄級錛屽繀欏諱笌鏈嶅姟鍣ㄨ繘琛屽垵嬈℃彙鎵嬶紝蹇呴』鍒嗘瀽榪炴帴瀛楃涓蹭俊鎭紝蹇呴』鐢辨湇鍔″櫒瀵硅繛鎺ヨ繘琛岃韓浠介獙璇侊紝蹇呴』榪愯媯鏌ヤ互渚垮湪褰撳墠浜嬪姟涓櫥璁幫紝絳夌瓑銆?</p> <p>瀹為檯涓婏紝澶у鏁板簲鐢ㄧ▼搴忎粎浣跨敤涓涓垨鍑犱釜涓嶅悓鐨勮繛鎺ラ厤緗傝繖鎰忓懗鐫鍦ㄦ墽琛屽簲鐢ㄧ▼搴忔湡闂達紝璁稿鐩稿悓鐨勮繛鎺ュ皢鍙嶅鍦版墦寮鍜屽叧闂備負浜嗕嬌鎵撳紑鐨勮繛鎺ユ垚鏈渶浣庯紝ADO.NET 浣跨敤縐頒負<em>榪炴帴姹?/em>鐨勪紭鍖栨柟娉曘?/p> <p>榪炴帴姹犲噺灝戞柊榪炴帴闇瑕佹墦寮鐨勬鏁般?em>姹犺繘紼?/em>淇濇寔鐗╃悊榪炴帴鐨勬墍鏈夋潈銆傞氳繃涓烘瘡涓粰瀹氱殑榪炴帴閰嶇疆淇濈暀涓緇勬椿鍔ㄨ繛鎺ユ潵綆$悊榪炴帴銆傚彧瑕佺敤鎴峰湪榪炴帴涓婅皟鐢?Open錛屾睜榪涚▼灝變細媯鏌ユ睜涓槸鍚︽湁鍙敤鐨勮繛鎺ャ傚鏋滄煇涓睜榪炴帴鍙敤錛屼細灝嗚榪炴帴榪斿洖緇欒皟鐢ㄨ咃紝鑰屼笉鏄墦寮鏂拌繛鎺ャ傚簲鐢ㄧ▼搴忓湪璇ヨ繛鎺ヤ笂璋冪敤 Close 鏃訛紝姹犺繘紼嬩細灝嗚繛鎺ヨ繑鍥炲埌媧誨姩榪炴帴姹犻泦涓紝鑰屼笉鏄湡姝e叧闂繛鎺ャ傝繛鎺ヨ繑鍥炲埌姹犱腑涔嬪悗錛屽嵆鍙湪涓嬩竴涓?Open 璋冪敤涓噸澶嶄嬌鐢ㄣ?/p> <p>鍙湁閰嶇疆鐩稿悓鐨勮繛鎺ュ彲浠ュ緩绔嬫睜榪炴帴銆侫DO.NET 鍚屾椂淇濈暀澶氫釜姹狅紝姣忎釜閰嶇疆涓涓睜銆傝繛鎺ョ敱榪炴帴瀛楃涓蹭互鍙?Windows 鏍囪瘑錛堝湪浣跨敤闆嗘垚鐨勫畨鍏ㄦф椂錛夊垎涓哄涓睜銆?/p> <p>姹犺繛鎺ュ彲浠ュぇ澶ф彁楂樺簲鐢ㄧ▼搴忕殑鎬ц兘鍜屽彲緙╂斁鎬с傞粯璁ゆ儏鍐典笅錛孉DO.NET 涓惎鐢ㄨ繛鎺ユ睜銆傞櫎闈炴樉寮忕鐢紝鍚﹀垯錛岃繛鎺ュ湪搴旂敤紼嬪簭涓墦寮鍜屽叧闂椂錛屾睜榪涚▼灝嗗榪炴帴榪涜浼樺寲銆傝繕鍙互鎻愪緵鍑犱釜榪炴帴瀛楃涓蹭慨楗扮鏉ユ帶鍒惰繛鎺ユ睜鐨勮涓恒傛湁鍏蟲洿澶氫俊鎭紝璇峰弬瑙佹湰涓婚鍚庨潰鐨?#8220;浣跨敤榪炴帴瀛楃涓插叧閿瓧鎺у埗榪炴帴姹?#8221;銆?/p> <h1 class=heading>姹犵殑鍒涘緩鍜屽垎閰?/h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection0> <p>鍦ㄥ垵嬈℃墦寮榪炴帴鏃訛紝灝嗘牴鎹畬鍏ㄥ尮閰嶇畻娉曞垱寤鴻繛鎺ユ睜錛岃綆楁硶灝嗘睜涓庤繛鎺ヤ腑鐨勮繛鎺ュ瓧絎︿覆鍏寵仈銆傛瘡涓繛鎺ユ睜涓庝笉鍚岀殑榪炴帴瀛楃涓插叧鑱斻傛墦寮鏂拌繛鎺ユ椂錛屽鏋滆繛鎺ュ瓧絎︿覆騫墮潪涓庣幇鏈夋睜瀹屽叏鍖歸厤錛屽皢鍒涘緩涓涓柊姹犮傛寜榪涚▼銆佹寜搴旂敤紼嬪簭鍩熴佹寜榪炴帴瀛楃涓蹭互鍙婏紙鍦ㄤ嬌鐢ㄩ泦鎴愮殑瀹夊叏鎬ф椂錛夋寜 Windows 鏍囪瘑鏉ュ緩绔嬫睜榪炴帴銆?/p> <p>鍦ㄤ互涓?C# 紺轟緥涓垱寤轟簡涓変釜鏂扮殑 <a id=ctl00_rs1_mainContentContainer_ctl01 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl01',this);" tabIndex=0 ><u><font color=#0000ff>SqlConnection</font></u></a> 瀵硅薄錛屼絾鏄鐞嗘椂鍙渶瑕佷袱涓繛鎺ユ睜銆傛敞鎰忥紝鏍規嵁涓?<tt>Initial Catalog</tt> 鍒嗛厤鐨勫鹼紝絎竴涓拰絎簩涓繛鎺ュ瓧絎︿覆鏈夋墍涓嶅悓銆?/p> <div id="hvzpftn" class=code id=ctl00_rs1_mainContentContainer_ctl02_other> <pre class=code id=ctl00_rs1_mainContentContainer_ctl02other space="preserve">using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=Northwind")) { connection.Open(); // Pool A is created. } using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=pubs")) { connection.Open(); // Pool B is created because the connection strings differ. } using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=Northwind")) { connection.Open(); // The connection string matches pool A. }</pre> </div> <p>濡傛灉 MinPoolSize 鍦ㄨ繛鎺ュ瓧絎︿覆涓湭鎸囧畾鎴栨寚瀹氫負闆訛紝姹犱腑鐨勮繛鎺ュ皢鍦ㄤ竴孌墊椂闂翠笉媧誨姩鍚庡叧闂備絾鏄紝濡傛灉鎸囧畾鐨?MinPoolSize 澶т簬闆訛紝鍦?AppDomain 琚嵏杞藉茍涓旇繘紼嬬粨鏉熶箣鍓嶏紝榪炴帴姹犱笉浼氳鐮村潖銆傞潪媧誨姩鎴栫┖姹犵殑緇存姢鍙渶瑕佹渶灝戠殑緋葷粺寮閿銆?/p> <div id="hvzpftn" class=alert> <table width="100%"> <tbody> <tr> <th align=left><img class=note alt=Note src="http://msdn2.microsoft.com/zh-cn/library/8xx3tyca.note(zh-cn,VS.80).gif">娉ㄦ剰</th> </tr> <tr> <td> <p>濡傛灉鍙戠敓鑷村懡閿欒錛堜緥濡傛晠闅滆漿縐繪垨娉ㄥ唽琛ㄤ腑鐨勫埆鍚嶆洿鏀癸級錛屾睜灝嗚嚜鍔ㄦ竻闄ゃ?/p> </td> </tr> </tbody> </table> </div> </div> <h1 class=heading>娣誨姞榪炴帴</h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection1> <p>榪炴帴姹犳槸涓烘瘡涓敮涓鐨勮繛鎺ュ瓧絎︿覆鍒涘緩鐨勩傚綋鍒涘緩涓涓睜鍚庯紝灝嗗垱寤哄涓繛鎺ュ璞″茍灝嗗叾娣誨姞鍒拌姹犱腑錛屼互婊¤凍鏈灝忔睜澶у皬鐨勮姹傘傝繛鎺ユ牴鎹渶瑕佹坊鍔犲埌姹犱腑錛屼絾鏄笉鑳借秴榪囨寚瀹氱殑鏈澶ф睜澶у皬錛堥粯璁ゅ間負 100錛夈傝繛鎺ュ湪鍏抽棴鎴栨柇寮鏃墮噴鏀懼洖姹犱腑銆?</p> <p>鍦ㄨ姹?SqlConnection 瀵硅薄鏃訛紝濡傛灉瀛樺湪鍙敤鐨勮繛鎺ワ紝灝嗕粠姹犱腑鑾峰彇璇ュ璞°傝繛鎺ヨ鍙敤錛屽繀欏繪湭浣跨敤錛屽叿鏈夊尮閰嶇殑浜嬪姟涓婁笅鏂囨垨鏈笌浠諱綍浜嬪姟涓婁笅鏂囧叧鑱旓紝騫朵笖鍏鋒湁涓庢湇鍔″櫒鐨勬湁鏁堥摼鎺ャ?/p> <p>榪炴帴姹犺繘紼嬮氳繃鍦ㄨ繛鎺ラ噴鏀懼洖姹犱腑鏃墮噸鏂板垎閰嶈繛鎺ワ紝鏉ユ弧瓚寵繖浜涜繛鎺ヨ姹傘傚鏋滃凡杈懼埌鏈澶ф睜澶у皬涓斾笉瀛樺湪鍙敤鐨勮繛鎺ワ紝鍒欒璇鋒眰灝嗕細鎺掗槦銆傜劧鍚庯紝姹犺繘紼嬪皾璇曢噸鏂板緩绔嬩換浣曡繛鎺ワ紝鐩村埌鍒拌揪瓚呮椂鏃墮棿錛堥粯璁ゅ間負 15 縐掞級銆傚鏋滄睜榪涚▼鍦ㄨ繛鎺ヨ秴鏃朵箣鍓嶆棤娉曟弧瓚寵姹傦紝灝嗗紩鍙戝紓甯搞?</p> <div id="hvzpftn" class=alert> <table width="100%"> <tbody> <tr> <th align=left><img class=note alt="Caution note" src="http://msdn2.microsoft.com/zh-cn/library/8xx3tyca.Caution(zh-cn,VS.80).gif">璀﹀憡</th> </tr> <tr> <td> <p>鎴戜滑寤鴻鎮ㄥ湪浣跨敤瀹岃繛鎺ユ椂涓瀹氳鍏抽棴榪炴帴錛屼互渚胯繛鎺ュ彲浠ヨ繑鍥炴睜銆傝鍏抽棴榪炴帴錛屽彲浠ヤ嬌鐢?Connection 瀵硅薄鐨?Close 鎴?Dispose 鏂規硶錛屼篃鍙互閫氳繃鍦?C# 鐨?using 璇彞涓垨鍦?Visual Basic 鐨?Using 璇彞涓墦寮鎵鏈夎繛鎺ャ備笉鏄樉寮忓叧闂殑榪炴帴鍙兘涓嶄細娣誨姞鎴栬繑鍥炲埌姹犱腑銆備緥濡傦紝濡傛灉榪炴帴宸茶秴鍑鴻寖鍥翠絾娌℃湁鏄懼紡鍏抽棴錛屽垯浠呭綋杈懼埌鏈澶ф睜澶у皬鑰岃榪炴帴浠嶇劧鏈夋晥鏃訛紝璇ヨ繛鎺ユ墠浼氳繑鍥炲埌榪炴帴姹犱腑銆傛湁鍏蟲洿澶氫俊鎭紝璇峰弬瑙?Visual Basic 鐨?a id=ctl00_rs1_mainContentContainer_ctl03 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl03',this);" tabIndex=0 ><u><font color=#0000ff>using 璇彞錛圕# 鍙傝冿級</font></u></a>鎴?a id=ctl00_rs1_mainContentContainer_ctl04 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl04',this);" tabIndex=0 ><u><font color=#0000ff>濡備綍錛氶噴鏀劇郴緇熻祫婧?/font></u></a>銆?/p> </td> </tr> </tbody> </table> </div> <div id="hvzpftn" class=alert> <table width="100%"> <tbody> <tr> <th align=left><img class=note alt=Note src="http://msdn2.microsoft.com/zh-cn/library/8xx3tyca.note(zh-cn,VS.80).gif">娉ㄦ剰</th> </tr> <tr> <td> <p>涓嶈鍦ㄧ被鐨?Finalize 鏂規硶涓 Connection銆丏ataReader 鎴栦換浣曞叾浠栨墭綆″璞¤皟鐢?Close 鎴?Dispose銆傚湪緇堢粨鍣ㄤ腑錛屼粎閲婃斁綾葷洿鎺ユ嫢鏈夌殑闈炴墭綆¤祫婧愩傚鏋滅被涓嶆嫢鏈変換浣曢潪鎵樼璧勬簮錛屽垯涓嶈鍦ㄧ被瀹氫箟涓寘鍚?Finalize 鏂規硶銆傛湁鍏蟲洿澶氫俊鎭紝璇峰弬瑙?a id=ctl00_rs1_mainContentContainer_ctl05 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl05',this);" tabIndex=0 ><u><font color=#0000ff>鍨冨溇鍥炴敹</font></u></a>銆?/p> </td> </tr> </tbody> </table> </div> </div> <h1 class=heading>縐婚櫎榪炴帴</h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection2> <p>榪炴帴姹犺繘紼嬪畾鏈熸壂鎻忚繛鎺ユ睜錛屾煡鎵炬病鏈夐氳繃 Close 鎴?Dispose 鍏抽棴鐨勬湭鐢ㄨ繛鎺ワ紝騫墮噸鏂板緩绔嬫壘鍒扮殑榪炴帴銆傚鏋滃簲鐢ㄧ▼搴忔病鏈夋樉寮忓叧闂垨鏂紑鍏惰繛鎺ワ紝榪炴帴姹犺繘紼嬪彲鑳介渶瑕佸緢闀挎椂闂存墠鑳介噸鏂板緩绔嬭繛鎺ワ紝鎵浠ワ紝鏈濂界‘淇濆湪榪炴帴涓樉寮忚皟鐢?Close 鍜?Dispose銆?/p> <p>濡傛灉榪炴帴闀挎椂闂寸┖闂詫紝鎴栨睜榪涚▼媯嫻嬪埌涓庢湇鍔″櫒鐨勮繛鎺ュ凡鏂紑錛岃繛鎺ユ睜榪涚▼浼氬皢璇ヨ繛鎺ヤ粠姹犱腑縐婚櫎銆傛敞鎰忥紝鍙湁鍦ㄥ皾璇曚笌鏈嶅姟鍣ㄨ繘琛岄氫俊涔嬪悗鎵嶈兘媯嫻嬪埌鏂紑鐨勮繛鎺ャ傚鏋滃彂鐜版煇榪炴帴涓嶅啀榪炴帴鍒版湇鍔″櫒錛屽垯浼氬皢鍏舵爣璁頒負鏃犳晥銆傛棤鏁堣繛鎺ュ彧鏈夊湪鍏抽棴鎴栭噸鏂板緩绔嬪悗錛屾墠浼氫粠榪炴帴姹犱腑縐婚櫎銆?/p> <p>濡傛灉瀛樺湪涓庡凡娑堝け鐨勬湇鍔″櫒鐨勮繛鎺ワ紝閭d箞鍗充嬌榪炴帴姹犵鐞嗙▼搴忔湭媯嫻嬪埌宸叉柇寮鐨勮繛鎺ュ茍灝嗗叾鏍囪涓烘棤鏁堬紝浠嶆湁鍙兘灝嗘榪炴帴浠庢睜涓彇鍑恒傝繖縐嶆儏鍐墊槸鍥犱負媯鏌ヨ繛鎺ユ槸鍚︿粛鏈夋晥鐨勭郴緇熷紑閿灝嗛犳垚涓庢湇鍔″櫒鐨勫彟涓嬈″線榪旓紝浠庤屾姷娑堜簡姹犺繘紼嬬殑浼樺娍銆傚彂鐢熸鎯呭喌鏃訛紝鍒濇灝濊瘯浣跨敤璇ヨ繛鎺ュ皢媯嫻嬭繛鎺ユ槸鍚︽浘鏂紑錛屽茍寮曞彂寮傚父銆?/p> </div> <h1 class=heading>娓呴櫎姹?/h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection3> <p>ADO.NET 2.0 寮曞叆浜嗕袱縐嶆柊鐨勬柟娉曟潵娓呴櫎姹狅細<a id=ctl00_rs1_mainContentContainer_ctl06 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl06',this);" tabIndex=0 ><u><font color=#0000ff>ClearAllPools</font></u></a> 鍜?<a id=ctl00_rs1_mainContentContainer_ctl07 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl07',this);" tabIndex=0 ><u><font color=#0000ff>ClearPool</font></u></a>銆侰learAllPools 娓呴櫎緇欏畾鎻愪緵紼嬪簭鐨勮繛鎺ユ睜錛孋learPool 娓呴櫎涓庣壒瀹氳繛鎺ュ叧鑱旂殑榪炴帴姹犮傚鏋滃湪璋冪敤鏃惰繛鎺ユ鍦ㄤ嬌鐢紝灝嗚繘琛岀浉搴旂殑鏍囪銆傝繛鎺ュ叧闂椂錛屽皢琚涪寮冿紝鑰屼笉鏄繑鍥炴睜涓?/p> </div> <h1 class=heading>浜嬪姟鏀寔</h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection4> <p>榪炴帴鏄牴鎹簨鍔′笂涓嬫枃鏉ヤ粠姹犱腑鍙栧嚭騫惰繘琛屽垎閰嶇殑銆傞櫎闈炲湪榪炴帴瀛楃涓蹭腑鎸囧畾浜?<tt>Enlist=false</tt>錛屽惁鍒欙紝榪炴帴姹犲皢紜繚榪炴帴鍦?<a id=ctl00_rs1_mainContentContainer_ctl08 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl08',this);" tabIndex=0 ><u><font color=#0000ff>Current</font></u></a> 涓婁笅鏂囦腑鐧昏銆傚鏋滆繛鎺ヤ嬌鐢ㄧ櫥璁扮殑 System.Transactions 浜嬪姟鍏抽棴騫惰繑鍥炴睜涓紝榪炴帴灝嗕繚鐣欏湪姹犱腑錛屼互渚夸嬌鐢ㄧ浉鍚?System.Transactions 浜嬪姟瀵硅榪炴帴姹犵殑涓嬩竴嬈¤姹傚皢榪斿洖鐩稿悓鐨勮繛鎺ャ傚鏋滆浜嬪姟娌℃湁鍙敤榪炴帴錛屽湪璇ヨ繛鎺ユ墦寮鏃訛紝灝嗚嚜鍔ㄦ敞鍐岃榪炴帴銆?/p> <p>褰撹繛鎺ュ叧闂椂錛屽畠灝嗚閲婃斁鍥炴睜涓紝騫舵牴鎹叾浜嬪姟涓婁笅鏂囨斁鍏ョ浉搴旂殑瀛愰儴鍒嗐傚洜姝わ紝鍗充嬌鍒嗗竷寮忎簨鍔′粛鐒舵寕璧鳳紝浠嶅彲浠ュ叧闂榪炴帴鑰屼笉浼氱敓鎴愰敊璇傝繖鏍鳳紝鎮ㄥ氨鍙互鍦ㄩ殢鍚庢彁浜ゆ垨涓鍒嗗竷寮忎簨鍔°?/p> </div> <h1 class=heading>浣跨敤榪炴帴瀛楃涓插叧閿瓧鎺у埗榪炴帴姹?/h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection5> <p>SqlConnection 瀵硅薄鐨?ConnectionString 灞炴ф敮鎸佽繛鎺ュ瓧絎︿覆閿?鍊煎錛屽彲浠ョ敤浜庤皟鏁磋繛鎺ユ睜閫昏緫鐨勮涓恒傛湁鍏蟲洿澶氫俊鎭紝璇峰弬瑙?<a id=ctl00_rs1_mainContentContainer_ctl09 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl09',this);" tabIndex=0 ><u><font color=#0000ff>ConnectionString</font></u></a>銆?/p> </div> <h1 class=heading>姹犵鐗?/h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection6> <p>姹犵鐗囨槸璁稿 Web 搴旂敤紼嬪簭涓殑涓涓父瑙侀棶棰橈紝搴旂敤紼嬪簭鍙兘浼氬垱寤哄ぇ閲忓湪榪涚▼閫鍑哄悗鎵嶄細閲婃斁鐨勬睜銆傝繖鏍鳳紝灝嗘墦寮澶ч噺鐨勮繛鎺ワ紝鍗犵敤璁稿鍐呭瓨錛屼粠鑰屽獎鍝嶆ц兘銆?/p> <h3 class=subHeading>鍥犱負闆嗘垚瀹夊叏鎬т駭鐢熺殑姹犵鐗?/h3> <div id="hvzpftn" class=subSection> <p>榪炴帴鏍規嵁榪炴帴瀛楃涓蹭互鍙婄敤鎴鋒爣璇嗘潵寤虹珛姹犺繛鎺ャ傚洜姝わ紝濡傛灉浣跨敤緗戠珯涓婄殑鍩烘湰韜喚楠岃瘉鎴?Windows 韜喚楠岃瘉浠ュ強闆嗘垚鐨勫畨鍏ㄧ櫥褰曪紝姣忎釜鐢ㄦ埛灝嗚幏寰椾竴涓睜銆傚敖綆¤繖鏍峰彲浠ユ彁楂樺崟涓敤鎴風殑鍚庣畫鏁版嵁搴撹姹傜殑鎬ц兘錛屼絾鏄鐢ㄦ埛鏃犳硶鍒╃敤鍏朵粬鐢ㄦ埛寤虹珛鐨勮繛鎺ャ傝繖鏍瘋繕浣挎瘡涓敤鎴瘋嚦灝戜駭鐢熶竴涓笌鏁版嵁搴撴湇鍔″櫒鐨勮繛鎺ャ傝繖瀵圭壒瀹?Web 搴旂敤紼嬪簭緇撴瀯浼氫駭鐢熷壇浣滅敤錛屽洜涓哄紑鍙戜漢鍛橀渶瑕佽 閲忓畨鍏ㄦу拰瀹¤瑕佹眰銆?/p> </div> <h3 class=subHeading>鍥犱負璁稿鏁版嵁搴撲駭鐢熺殑姹犵鐗?/h3> <div id="hvzpftn" class=subSection> <p>璁稿 Internet 鏈嶅姟鎻愪緵鍟嗗湪涓鍙版湇鍔″櫒涓婃墭綆″涓綉绔欍備粬浠彲鑳戒嬌鐢ㄥ崟涓暟鎹簱紜紿椾綋韜喚楠岃瘉鐧誨綍錛岀劧鍚庝負璇ョ敤鎴鋒垨鐢ㄦ埛緇勬墦寮涓庣壒瀹氭暟鎹簱鐨勮繛鎺ャ備笌韜喚楠岃瘉鏁版嵁搴撶殑榪炴帴灝嗗緩绔嬫睜榪炴帴錛屼緵姣忎釜鐢ㄦ埛浣跨敤銆備絾鏄紝姣忎釜鏁版嵁搴撶殑榪炴帴瀛樺湪涓涓嫭绔嬬殑姹狅紝鍥犳澧炲姞浜嗕笌鏈嶅姟鍣ㄧ殑榪炴帴鏁般?/p> <p>榪欎篃浼氬搴旂敤紼嬪簭璁捐浜х敓鍓綔鐢ㄣ備絾鏄紝鍙互閫氳繃涓涓浉瀵圭畝鍗曠殑鏂瑰紡閬垮厤姝ゅ壇浣滅敤錛岃屽張涓嶄細褰卞搷榪炴帴 SQL Server 鏃剁殑瀹夊叏鎬с備笉鏄負姣忎釜鐢ㄦ埛鎴栫粍榪炴帴鐙珛鐨勬暟鎹簱錛岃屾槸榪炴帴鍒版湇鍔″櫒涓婄殑鐩稿悓鏁版嵁搴擄紝鐒跺悗鎵ц Transact-SQL USE 璇彞鏉ュ垏鎹負鎵闇鐨勬暟鎹簱銆備互涓嬩唬鐮佹婕旂ず鍏ュ浣曞垱寤轟笌 master 鏁版嵁搴撶殑鍒濆榪炴帴錛岀劧鍚庡垏鎹㈠埌 <tt>databaseName</tt> 瀛楃涓插彉閲忎腑鎸囧畾鐨勬墍闇鏁版嵁搴撱?/p> <div id="hvzpftn" class=code id=ctl00_rs1_mainContentContainer_ctl11_CSharp>C#:<br><span style="COLOR: green">// Assumes that command is a SqlCommand object.</span><br><span style="COLOR: blue">using</span> (SqlConnection connection = <span style="COLOR: blue">new</span> SqlConnection(<br>  <span style="COLOR: maroon">"Server=MSSQL1;uid=xxx;pwd=xxx;database=master"</span>))<br>  {<br>    connection.Open();<br>    command.ExecuteNonQuery(<span style="COLOR: maroon">"USE "</span> + databaseName);<br>  }<br></div> </div> </div> <h1 class=heading>搴旂敤紼嬪簭瑙掕壊鍜岃繛鎺ユ睜</h1> <div id="hvzpftn" class=seeAlsoNoToggleSection id=sectionSection7> <p>閫氳繃璋冪敤 sp_setapprole 緋葷粺瀛樺偍榪囩▼嬋媧諱簡 SQL Server 搴旂敤紼嬪簭瑙掕壊涔嬪悗錛岃榪炴帴鐨勫畨鍏ㄤ笂涓嬫枃鏃犳硶閲嶇疆銆備絾鏄紝濡傛灉鍚敤浜嗘睜錛岃繛鎺ュ皢榪斿洖姹狅紝鍦ㄩ噸澶嶄嬌鐢ㄦ睜榪炴帴鏃朵細鍑洪敊銆?/p> <p>濡傛灉浣跨敤鐨勬槸 SQL Server 搴旂敤紼嬪簭瑙掕壊錛屾垜浠緩璁偍鍦ㄨ繛鎺ュ瓧絎︿覆涓負搴旂敤紼嬪簭紱佺敤榪炴帴姹犮傛湁鍏蟲洿澶氫俊鎭紝璇峰弬瑙佺煡璇嗗簱鏂囩珷“<a id=ctl00_rs1_mainContentContainer_ctl12 onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl12',this);" tabIndex=0 ><u><font color=#0000ff>SQL application role errors with OLE DB resource pooling</font></u></a>”銆?/p> </div> </div> </div> <img src ="http://m.shnenglu.com/xushaohua/aggbug/39171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2007-12-21 01:33 <a href="http://m.shnenglu.com/xushaohua/archive/2007/12/21/39171.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞琞VC涓熀浜?Windows 鐨勭簿紜畾鏃?/title><link>http://m.shnenglu.com/xushaohua/archive/2007/12/04/37817.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Tue, 04 Dec 2007 12:56:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2007/12/04/37817.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/37817.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2007/12/04/37817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/37817.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/37817.html</trackback:ping><description><![CDATA[涓浗縐戝闄㈠厜鐢墊妧鏈爺絀舵墍 <a href="mailto:yzyseal@126.com"><u><font color=#0000ff>娓稿織瀹?/font></u></a><br><br>鍦ㄥ伐涓氱敓浜ф帶鍒剁郴緇熶腑錛屾湁璁稿闇瑕佸畾鏃跺畬鎴愮殑鎿嶄綔錛屽瀹氭椂鏄劇ず褰撳墠鏃墮棿錛屽畾鏃跺埛鏂板睆騫曚笂鐨勮繘搴︽潯錛屼笂浣?wbr> 鏈哄畾鏃跺悜涓嬩綅鏈哄彂閫佸懡浠ゅ拰浼犻佹暟鎹瓑銆傜壒鍒槸鍦ㄥ鎺у埗鎬ц兘瑕佹眰杈冮珮鐨勫疄鏃舵帶鍒剁郴緇熷拰鏁版嵁閲囬泦緋葷粺涓紝灝辨洿闇瑕佺簿紜畾鏃舵搷浣溿?br>銆銆浼楁墍鍛ㄧ煡錛學indows 鏄熀浜庢秷鎭満鍒剁殑緋葷粺錛屼換浣曚簨浠剁殑鎵ц閮芥槸閫氳繃鍙戦佸拰鎺ユ敹娑堟伅鏉ュ畬鎴愮殑銆?wbr> 榪欐牱灝卞甫鏉ヤ簡涓浜涢棶棰橈紝濡備竴鏃﹁綆楁満鐨凜PU琚煇涓繘紼嬪崰鐢紝鎴栫郴緇熻祫婧愮揣寮犳椂錛屽彂閫佸埌娑堟伅闃熷垪<wbr> 涓殑娑堟伅灝辨殏鏃惰鎸傝搗錛屽緱涓嶅埌瀹炴椂澶勭悊銆傚洜姝わ紝涓嶈兘綆鍗曞湴閫氳繃Windows娑堟伅寮曞彂涓涓瀹氭椂瑕佹眰<wbr> 涓ユ牸鐨勪簨浠躲傚彟澶栵紝鐢變簬鍦╓indows涓凡緇忓皝瑁呬簡璁$畻鏈哄簳灞傜‖浠剁殑璁塊棶錛屾墍浠ワ紝瑕佹兂閫氳繃鐩存帴鍒╃敤<wbr> 璁塊棶紜歡鏉ュ畬鎴愮簿紜畾鏃訛紝涔熸瘮杈冨洶闅俱傛墍浠ュ湪瀹為檯搴旂敤鏃訛紝搴旈拡瀵瑰叿浣撳畾鏃剁簿搴︾殑瑕佹眰錛岄噰鍙栫浉閫?搴旂殑瀹氭椂鏂規硶銆?br>銆銆VC涓彁渚涗簡寰堝鍏充簬鏃墮棿鎿嶄綔鐨勫嚱鏁幫紝鍒╃敤瀹冧滑鎺у埗紼嬪簭鑳藉綺劇‘鍦板畬鎴愬畾鏃跺拰璁℃椂鎿嶄綔銆傛湰鏂囪緇嗕粙緇嶄簡<wbr> VC涓熀浜嶹indows鐨勭簿紜畾鏃剁殑涓冪鏂瑰紡錛屽涓嬪浘鎵紺猴細<br><img height=419 alt="" src="http://m.shnenglu.com/images/cppblog_com/xushaohua/MultiTimerDemoimg.gif" width=639 border=0><br>鍥句竴 鍥懼儚鎻忚堪 <br><br>銆銆鏂瑰紡涓錛歏C涓殑WM_TIMER娑堟伅鏄犲皠鑳借繘琛岀畝鍗曠殑鏃墮棿鎺у埗銆傞鍏堣皟鐢ㄥ嚱鏁癝etTimer()璁劇疆瀹氭椂<wbr> 闂撮殧錛屽SetTimer(0,200,NULL)鍗充負璁劇疆200ms鐨勬椂闂撮棿闅斻傜劧鍚庡湪搴旂敤紼嬪簭涓鍔犲畾鏃跺搷搴斿嚱鏁?wbr> OnTimer()錛屽茍鍦ㄨ鍑芥暟涓坊鍔犲搷搴旂殑澶勭悊璇彞錛岀敤鏉ュ畬鎴愬埌杈懼畾鏃舵椂闂寸殑鎿嶄綔銆傝繖縐嶅畾鏃舵柟娉曢潪甯?wbr> 綆鍗曪紝鍙互瀹炵幇涓瀹氱殑瀹氭椂鍔熻兘錛屼絾鍏跺畾鏃跺姛鑳藉鍚孲leep()鍑芥暟鐨勫歡鏃跺姛鑳戒竴鏍鳳紝綺懼害闈炲父浣庯紝鏈灝?wbr> 璁℃椂綺懼害浠呬負30ms錛孋PU鍗犵敤浣庯紝涓斿畾鏃跺櫒娑堟伅鍦ㄥ浠誨姟鎿嶄綔緋葷粺涓殑浼樺厛綰у緢浣庯紝涓嶈兘寰楀埌鍙婃椂鍝?wbr> 搴旓紝寰寰涓嶈兘婊¤凍瀹炴椂鎺у埗鐜涓嬬殑搴旂敤銆傚彧鍙互鐢ㄦ潵瀹炵幇璇稿浣嶅浘鐨勫姩鎬佹樉紺虹瓑瀵瑰畾鏃剁簿搴﹁姹備笉楂樼殑鎯呭喌銆傚紺轟緥宸ョ▼涓殑Timer1銆?<br>銆銆鏂瑰紡浜岋細VC涓嬌鐢╯leep()鍑芥暟瀹炵幇寤舵椂錛屽畠鐨勫崟浣嶆槸ms錛屽寤舵椂2縐掞紝鐢╯leep(2000)銆傜簿搴﹂潪甯?wbr> 浣庯紝鏈灝忚鏃剁簿搴︿粎涓?0ms錛岀敤sleep鍑芥暟鐨勪笉鍒╁鍦ㄤ簬寤舵椂鏈熼棿涓嶈兘澶勭悊鍏朵粬鐨勬秷鎭紝濡傛灉鏃墮棿澶?wbr> 闀匡紝灝卞ソ璞℃鏈轟竴鏍鳳紝CPU鍗犵敤鐜囬潪甯擱珮錛屽彧鑳界敤浜庤姹備笉楂樼殑寤舵椂紼嬪簭涓傚紺轟緥宸ョ▼涓殑Timer2銆?br>銆銆鏂瑰紡涓夛細鍒╃敤COleDateTime綾誨拰COleDateTimeSpan綾葷粨鍚圵INDOWS鐨勬秷鎭鐞嗚繃紼嬫潵瀹炵幇縐掔駭寤舵椂銆傚紺轟緥宸ョ▼涓殑Timer3鍜孴imer3_1銆備互涓嬫槸瀹炵幇2縐掔殑寤舵椂浠g爜錛?br>COleDateTime      start_time = COleDateTime::GetCurrentTime();<br>      COleDateTimeSpan  end_time= COleDateTime::GetCurrentTime()-start_time;<br>      while(end_time.GetTotalSeconds()< 2) //瀹炵幇寤舵椂2縐?br>     { <br>              MSG   msg;<br>              GetMessage(&msg,NULL,0,0);<br>              TranslateMessage(&msg); <br>              DispatchMessage(&msg);<br>              <br>             //浠ヤ笂鍥涜鏄疄鐜板湪寤舵椂鎴栧畾鏃舵湡闂磋兘澶勭悊鍏朵粬鐨勬秷鎭紝<br>銆銆銆銆銆銆 //铏界劧榪欐牱鍙互闄嶄綆CPU鐨勫崰鏈夌巼錛?br>             //浣嗛檷浣庝簡寤舵椂鎴栧畾鏃剁簿搴︼紝瀹為檯搴旂敤涓彲浠ュ幓鎺夈?br>             end_time = COleDateTime::GetCurrentTime()-start_time;<br>      }//榪欐牱鍦ㄥ歡鏃剁殑鏃跺欐垜浠篃鑳藉澶勭悊鍏朵粬鐨勬秷鎭?nbsp;     <br>鏂瑰紡鍥涳細鍦ㄧ簿搴﹁姹傝緝楂樼殑鎯呭喌涓嬶紝VC涓彲浠ュ埄鐢℅etTickCount()鍑芥暟錛岃鍑芥暟鐨勮繑鍥炲兼槸<wbr>  DWORD鍨嬶紝琛ㄧず浠s涓哄崟浣嶇殑璁$畻鏈哄惎鍔ㄥ悗緇忓巻鐨勬椂闂撮棿闅斻傜簿搴︽瘮WM_TIMER娑堟伅鏄犲皠楂橈紝鍦ㄨ緝<wbr> 鐭殑瀹氭椂涓叾璁℃椂璇樊涓?5ms錛屽湪杈冮暱鐨勫畾鏃朵腑鍏惰鏃惰宸緝浣庯紝濡傛灉瀹氭椂鏃墮棿澶暱錛屽氨濂借薄姝繪満涓鏍鳳紝CPU鍗犵敤鐜囬潪甯擱珮錛屽彧鑳界敤浜庤姹備笉楂樼殑寤舵椂紼嬪簭涓傚紺轟緥宸ョ▼涓殑Timer4鍜孴imer4_1銆備笅鍒椾唬鐮佸彲浠ュ疄鐜?0ms鐨勭簿紜畾鏃訛細<br> <pre> DWORD dwStart = GetTickCount(); DWORD dwEnd = dwStart; do { dwEnd = GetTickCount()-dwStart; }while(dwEnd <50);</pre> 涓轟嬌GetTickCount()鍑芥暟鍦ㄥ歡鏃舵垨瀹氭椂鏈熼棿鑳藉鐞嗗叾浠栫殑娑堟伅錛屽彲浠ユ妸浠g爜鏀逛負錛?br> <pre> DWORD dwStart = GetTickCount(); DWORD dwEnd = dwStart; do { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg); dwEnd = GetTickCount()-dwStart; }while(dwEnd <50);</pre> 铏界劧榪欐牱鍙互闄嶄綆CPU鐨勫崰鏈夌巼錛屽茍鍦ㄥ歡鏃舵垨瀹氭椂鏈熼棿涔熻兘澶勭悊鍏朵粬鐨勬秷鎭紝浣嗛檷浣庝簡寤舵椂鎴栧畾鏃剁簿搴︺?br>銆銆鏂瑰紡浜旓細涓嶨etTickCount()鍑芥暟綾諱技鐨勫濯掍綋瀹氭椂鍣ㄥ嚱鏁癉WORD timeGetTime(void)錛岃鍑芥暟瀹氭椂綺?wbr> 搴︿負ms綰э紝榪斿洖浠嶹indows鍚姩寮濮嬬粡榪囩殑姣鏁般傚井杞叕鍙稿湪鍏跺濯掍綋Windows涓彁渚涗簡綺劇‘瀹氭椂鍣ㄧ殑搴?wbr> 灞侫PI鎸侊紝鍒╃敤澶氬獟浣撳畾鏃跺櫒鍙互寰堢簿紜湴璇誨嚭緋葷粺鐨勫綋鍓嶆椂闂達紝騫朵笖鑳藉湪闈炲父綺劇‘鐨勬椂闂撮棿闅斿唴瀹屾垚涓<wbr> 涓簨浠躲佸嚱鏁版垨榪囩▼鐨勮皟鐢ㄣ備笉鍚屼箣澶勫湪浜庤皟鐢―WORD timeGetTime(void) 鍑芥暟涔嬪墠蹇呴』灝?Winmm.lib <wbr> 鍜?Mmsystem.h 娣誨姞鍒板伐紼嬩腑錛屽惁鍒欏湪緙栬瘧鏃舵彁紺篋WORD timeGetTime(void)鍑芥暟鏈畾涔夈傜敱浜庝嬌鐢ㄨ<wbr> 鍑芥暟鏄氳繃鏌ヨ鐨勬柟寮忚繘琛屽畾鏃舵帶鍒剁殑錛屾墍浠ワ紝搴旇寤虹珛瀹氭椂寰幆鏉ヨ繘琛屽畾鏃朵簨浠剁殑鎺у埗銆傚紺轟緥宸ョ▼涓殑Timer5鍜孴imer5_1銆?br>銆銆鏂瑰紡鍏細浣跨敤澶氬獟浣撳畾鏃跺櫒timeSetEvent()鍑芥暟錛岃鍑芥暟瀹氭椂綺懼害涓簃s綰с傚埄鐢ㄨ鍑芥暟鍙互瀹炵幇鍛ㄦ湡鎬х殑鍑芥暟璋冪敤銆傚紺轟緥宸ョ▼涓殑Timer6鍜孴imer6_1銆傚嚱鏁扮殑鍘熷瀷濡備笅錛?<br> <pre> MMRESULT timeSetEvent錛?UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, WORD dwUser, UINT fuEvent 錛?/pre> 銆銆璇ュ嚱鏁拌緗竴涓畾鏃跺洖璋冧簨浠訛紝姝や簨浠跺彲浠ユ槸涓涓竴嬈℃т簨浠舵垨鍛ㄦ湡鎬т簨浠躲備簨浠朵竴鏃﹁嬋媧伙紝渚胯皟鐢ㄦ寚瀹氱殑鍥炶皟鍑芥暟錛?wbr> 鎴愬姛鍚庤繑鍥炰簨浠剁殑鏍囪瘑絎︿唬鐮侊紝鍚﹀垯榪斿洖NULL銆傚嚱鏁扮殑鍙傛暟璇存槑濡備笅錛?br> <pre> uDelay錛氫互姣鎸囧畾浜嬩歡鐨勫懆鏈熴? Uresolution錛氫互姣鎸囧畾寤舵椂鐨勭簿搴︼紝鏁板艱秺灝忓畾鏃跺櫒浜嬩歡鍒嗚鯨鐜囪秺楂樸傜己鐪佸間負1ms銆? LpTimeProc錛氭寚鍚戜竴涓洖璋冨嚱鏁般? DwUser錛氬瓨鏀劇敤鎴鋒彁渚涚殑鍥炶皟鏁版嵁銆? FuEvent錛氭寚瀹氬畾鏃跺櫒浜嬩歡綾誨瀷錛? TIME_ONESHOT錛歶Delay姣鍚庡彧浜х敓涓嬈′簨浠? TIME_PERIODIC 錛氭瘡闅攗Delay姣鍛ㄦ湡鎬у湴浜х敓浜嬩歡銆? </pre> 銆銆鍏蜂綋搴旂敤鏃訛紝鍙互閫氳繃璋冪敤timeSetEvent()鍑芥暟錛屽皢闇瑕佸懆鏈熸ф墽琛岀殑浠誨姟瀹氫箟鍦↙pTimeProc鍥炶皟鍑芥暟<wbr> 涓?濡傦細瀹氭椂閲囨牱銆佹帶鍒剁瓑)錛屼粠鑰屽畬鎴愭墍闇澶勭悊鐨勪簨浠躲傞渶瑕佹敞鎰忕殑鏄紝浠誨姟澶勭悊鐨勬椂闂翠笉鑳藉ぇ浜庡懆鏈熼棿闅旀椂闂淬傚彟澶栵紝鍦ㄥ畾鏃跺櫒浣跨敤瀹屾瘯鍚庯紝<wbr> 搴斿強鏃惰皟鐢╰imeKillEvent()灝嗕箣閲婃斁銆?<br>銆銆鏂瑰紡涓冿細瀵逛簬綺劇‘搴﹁姹傛洿楂樼殑瀹氭椂鎿嶄綔錛屽垯搴旇浣跨敤QueryPerformanceFrequency()鍜?wbr> QueryPerformanceCounter()鍑芥暟銆傝繖涓や釜鍑芥暟鏄疺C鎻愪緵鐨勪粎渚沇indows 95鍙婂叾鍚庣畫鐗堟湰浣跨敤鐨勭簿紜椂闂村嚱鏁幫紝騫惰姹傝綆楁満浠庣‖浠朵笂鏀寔綺劇‘瀹氭椂鍣ㄣ傚紺轟緥宸ョ▼涓殑Timer7銆乀imer7_1銆乀imer7_2銆乀imer7_3銆?br>QueryPerformanceFrequency()鍑芥暟鍜孮ueryPerformanceCounter()鍑芥暟鐨勫師鍨嬪涓嬶細<br> <pre> BOOL QueryPerformanceFrequency(LARGE_INTEGER 錛妉pFrequency); BOOL QueryPerformanceCounter(LARGE_INTEGER 錛妉pCount);</pre> 銆銆鏁版嵁綾誨瀷ARGE_INTEGER鏃㈠彲浠ユ槸涓涓?瀛楄妭闀跨殑鏁村瀷鏁幫紝涔熷彲浠ユ槸涓や釜4瀛楄妭闀跨殑鏁村瀷鏁扮殑鑱斿悎緇撴瀯錛?wbr> 鍏跺叿浣撶敤娉曟牴鎹紪璇戝櫒鏄惁鏀寔64浣嶈屽畾銆傝綾誨瀷鐨勫畾涔夊涓嬶細<br> <pre> typedef union _LARGE_INTEGER { struct { DWORD LowPart ;// 4瀛楄妭鏁村瀷鏁? LONG HighPart;// 4瀛楄妭鏁村瀷鏁? }; LONGLONG QuadPart ;// 8瀛楄妭鏁村瀷鏁? }LARGE_INTEGER ;</pre> 銆銆鍦ㄨ繘琛屽畾鏃朵箣鍓嶏紝鍏堣皟鐢≦ueryPerformanceFrequency()鍑芥暟鑾峰緱鏈哄櫒鍐呴儴瀹氭椂鍣ㄧ殑鏃墮挓棰戠巼錛?wbr> 鐒跺悗鍦ㄩ渶瑕佷弗鏍煎畾鏃剁殑浜嬩歡鍙戠敓涔嬪墠鍜屽彂鐢熶箣鍚庡垎鍒皟鐢≦ueryPerformanceCounter()鍑芥暟錛屽埄鐢ㄤ袱嬈¤幏寰楃殑璁℃暟涔嬪樊鍙婃椂閽熼鐜囷紝璁$畻鍑轟簨浠剁粡<wbr> 鍘嗙殑綺劇‘鏃墮棿銆備笅鍒椾唬鐮佸疄鐜?ms鐨勭簿紜畾鏃訛細<br> <pre> LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 鑾峰緱璁℃暟鍣ㄧ殑鏃墮挓棰戠巼 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 鑾峰緱鍒濆鍊? do { QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//鑾峰緱涓鍊? dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 鑾峰緱瀵瑰簲鐨勬椂闂村鹼紝鍗曚綅涓虹 }while(dfTim<0.001);</pre> 銆銆鍏跺畾鏃惰宸笉瓚呰繃1寰錛岀簿搴︿笌CPU絳夋満鍣ㄩ厤緗湁鍏熾?涓嬮潰鐨勭▼搴忕敤鏉ユ祴璇曞嚱鏁癝leep(100)鐨勭簿紜寔緇椂闂達細<br> <pre> LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 鑾峰緱璁℃暟鍣ㄧ殑鏃墮挓棰戠巼 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 鑾峰緱鍒濆鍊? Sleep(100); QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//鑾峰緱涓鍊? dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 鑾峰緱瀵瑰簲鐨勬椂闂村鹼紝鍗曚綅涓虹 </pre> 銆銆鐢變簬Sleep()鍑芥暟鑷韓鐨勮宸紝涓婅堪紼嬪簭姣忔鎵ц鐨勭粨鏋滈兘浼氭湁寰皬璇樊銆備笅鍒椾唬鐮佸疄鐜?寰鐨勭簿紜畾鏃訛細<br> <pre> LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 鑾峰緱璁℃暟鍣ㄧ殑鏃墮挓棰戠巼 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 鑾峰緱鍒濆鍊? do { QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//鑾峰緱涓鍊? dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 鑾峰緱瀵瑰簲鐨勬椂闂村鹼紝鍗曚綅涓虹 }while(dfTim<0.000001);</pre> 鍏跺畾鏃惰宸竴鑸笉瓚呰繃0.5寰錛岀簿搴︿笌CPU絳夋満鍣ㄩ厤緗湁鍏熾? <img src ="http://m.shnenglu.com/xushaohua/aggbug/37817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2007-12-04 20:56 <a href="http://m.shnenglu.com/xushaohua/archive/2007/12/04/37817.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍩轟簬 Visual C++6.0 鐨?DLL 緙栫▼瀹炵幇http://m.shnenglu.com/xushaohua/archive/2007/12/04/37783.htmlshaohuashaohuaTue, 04 Dec 2007 05:44:00 GMThttp://m.shnenglu.com/xushaohua/archive/2007/12/04/37783.htmlhttp://m.shnenglu.com/xushaohua/comments/37783.htmlhttp://m.shnenglu.com/xushaohua/archive/2007/12/04/37783.html#Feedback1http://m.shnenglu.com/xushaohua/comments/commentRss/37783.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/37783.html涓銆佸墠璦

銆銆鑷粠寰蔣鎺ㄥ嚭 16 浣嶇殑 Windows 鎿嶄綔緋葷粺璧鳳紝姝ゅ悗姣忕鐗堟湰鐨?/span> Windows 鎿嶄綔緋葷粺閮介潪甯鎬緷璧栦簬鍔ㄦ侀摼鎺ュ簱 (DLL) 涓殑鍑芥暟鍜屾暟鎹紝瀹為檯涓?/span> Windows 鎿嶄綔緋葷粺涓嚑涔庢墍鏈夌殑鍐呭閮界敱 DLL 浠ヤ竴縐嶆垨鍙﹀涓縐嶅艦寮忎唬琛ㄧ潃錛屼緥濡傛樉紺虹殑瀛椾綋鍜屽浘鏍囧瓨鍌ㄥ湪 GDI DLL 涓佹樉紺?/span> Windows 妗岄潰鍜屽鐞嗙敤鎴風殑杈撳叆鎵闇瑕佺殑浠g爜琚瓨鍌ㄥ湪涓涓?/span> User DLL 涓?/span> Windows 緙栫▼鎵闇瑕佺殑澶ч噺鐨?/span> API 鍑芥暟涔熻鍖呭惈鍦?/span> Kernel DLL 涓?/span>

銆銆鍦?/span> Windows 鎿嶄綔緋葷粺涓嬌鐢?/span> DLL 鏈夊緢澶氫紭鐐癸紝鏈涓昏鐨勪竴鐐規槸澶氫釜搴旂敤紼嬪簭銆佺敋鑷蟲槸涓嶅悓璇█緙栧啓鐨勫簲鐢ㄧ▼搴忓彲浠ュ叡浜竴涓?/span> DLL 鏂囦歡錛岀湡姝e疄鐜頒簡璧勬簮 " 鍏變韓 " 錛屽ぇ澶х緝灝忎簡搴旂敤紼嬪簭鐨勬墽琛屼唬鐮侊紝鏇村姞鏈夋晥鐨勫埄鐢ㄤ簡鍐呭瓨錛涗嬌鐢?/span> DLL 鐨勫彟涓涓紭鐐規槸 DLL 鏂囦歡浣滀負涓涓崟鐙殑紼嬪簭妯″潡錛屽皝瑁呮с佺嫭绔嬫уソ錛屽湪杞歡闇瑕佸崌綰х殑鏃跺欙紝寮鍙戜漢鍛樺彧闇瑕佷慨鏀圭浉搴旂殑 DLL 鏂囦歡灝卞彲浠ヤ簡錛岃屼笖錛屽綋 DLL 涓殑鍑芥暟鏀瑰彉鍚庯紝鍙涓嶆槸鍙傛暟鐨勬敼鍙?/span> , 紼嬪簭浠g爜騫朵笉闇瑕侀噸鏂扮紪璇戙傝繖鍦ㄧ紪紼嬫椂鍗佸垎鏈夌敤錛屽ぇ澶ф彁楂樹簡杞歡寮鍙戝拰緇存姢鐨勬晥鐜囥?/span>

銆銆鏃㈢劧 DLL 閭d箞閲嶈錛屾墍浠ユ悶娓呮浠涔堟槸 DLL 銆佸浣曞湪 Windows 鎿嶄綔緋葷粺涓紑鍙戜嬌鐢?/span> DLL 鏄▼搴忓紑鍙戜漢鍛樹笉寰椾笉瑙e喅鐨勪竴涓棶棰樸傛湰鏂囬拡瀵硅繖浜涢棶棰橈紝閫氳繃涓涓畝鍗曠殑渚嬪瓙錛屽嵆鍦ㄤ竴涓?/span> DLL 涓疄鐜版瘮杈冩渶澶с佹渶灝忔暣鏁拌繖涓や釜綆鍗曞嚱鏁幫紝鍏ㄩ潰鍦拌В鏋愪簡鍦?/span> Visual C++ 緙栬瘧鐜涓嬬紪紼嬪疄鐜?/span> DLL 鐨勮繃紼嬶紝鏂囩珷涓墍鐢ㄥ埌鐨勭▼搴忎唬鐮佸湪 Windows98 緋葷粺銆?/span> Visual C++6.0 緙栬瘧鐜涓嬮氳繃銆?/span>

銆銆浜屻?/strong> DLL 鐨勬蹇?/span>

銆銆 DLL 鏄緩绔嬪湪瀹㈡埛 / 鏈嶅姟鍣ㄩ氫俊鐨勬蹇典笂錛屽寘鍚嫢騫插嚱鏁般佺被鎴栬祫婧愮殑搴撴枃浠訛紝鍑芥暟鍜屾暟鎹瀛樺偍鍦ㄤ竴涓?/span> DLL 錛堟湇鍔″櫒錛変笂騫剁敱涓涓垨澶氫釜瀹㈡埛瀵煎嚭鑰屼嬌鐢紝榪欎簺瀹㈡埛鍙互鏄簲鐢ㄧ▼搴忔垨鑰呮槸鍏跺畠鐨?/span> DLL 銆?/span> DLL 搴撲笉鍚屼簬闈欐佸簱錛屽湪闈欐佸簱鎯呭喌涓嬶紝鍑芥暟鍜屾暟鎹緙栬瘧榪涗竴涓簩榪涘埗鏂囦歡錛堥氬父鎵╁睍鍚嶄負 *.LIB 錛夛紝 Visual C++ 鐨勭紪璇戝櫒鍦ㄥ鐞嗙▼搴忎唬鐮佹椂灝嗕粠闈欐佸簱涓仮澶嶈繖浜涘嚱鏁板拰鏁版嵁騫舵妸浠栦滑鍜屽簲鐢ㄧ▼搴忎腑鐨勫叾浠栨ā鍧楃粍鍚堝湪涓璧風敓鎴愬彲鎵ц鏂囦歡銆傝繖涓繃紼嬬О涓?/span> " 闈欐侀摼鎺?/span> " 錛屾鏃跺洜涓哄簲鐢ㄧ▼搴忔墍闇鐨勫叏閮ㄥ唴瀹歸兘鏄粠搴撲腑澶嶅埗浜嗗嚭鏉ワ紝鎵浠ラ潤鎬佸簱鏈韓騫朵笉闇瑕佷笌鍙墽琛屾枃浠朵竴璧峰彂琛屻?/span>

銆銆鍦ㄥ姩鎬佸簱鐨勬儏鍐典笅錛屾湁涓や釜鏂囦歡錛屼竴涓槸寮曞叆搴擄紙 .LIB 錛夋枃浠訛紝涓涓槸 DLL 鏂囦歡錛屽紩鍏ュ簱鏂囦歡鍖呭惈琚?/span> DLL 瀵煎嚭鐨勫嚱鏁扮殑鍚嶇О鍜屼綅緗紝 DLL 鍖呭惈瀹為檯鐨勫嚱鏁板拰鏁版嵁錛屽簲鐢ㄧ▼搴忎嬌鐢?/span> LIB 鏂囦歡閾炬帴鍒版墍闇瑕佷嬌鐢ㄧ殑 DLL 鏂囦歡錛屽簱涓殑鍑芥暟鍜屾暟鎹茍涓嶅鍒跺埌鍙墽琛屾枃浠朵腑錛屽洜姝ゅ湪搴旂敤紼嬪簭鐨勫彲鎵ц鏂囦歡涓紝瀛樻斁鐨勪笉鏄璋冪敤鐨勫嚱鏁頒唬鐮侊紝鑰屾槸 DLL 涓墍瑕佽皟鐢ㄧ殑鍑芥暟鐨勫唴瀛樺湴鍧錛岃繖鏍峰綋涓涓垨澶氫釜搴旂敤紼嬪簭榪愯鏄啀鎶婄▼搴忎唬鐮佸拰琚皟鐢ㄧ殑鍑芥暟浠g爜閾炬帴璧鋒潵錛屼粠鑰岃妭鐪佷簡鍐呭瓨璧勬簮銆備粠涓婇潰鐨勮鏄庡彲浠ョ湅鍑猴紝 DLL 鍜?/span> .LIB 鏂囦歡蹇呴』闅忓簲鐢ㄧ▼搴忎竴璧峰彂琛岋紝鍚﹀垯搴旂敤紼嬪簭灝嗕細浜х敓閿欒銆?/span>

銆銆寰蔣鐨?/span> Visual C++ 鏀寔涓夌 DLL 錛屽畠浠垎鍒槸 Non-MFC Dll 錛堥潪 MFC 鍔ㄦ佸簱錛夈?/span> Regular Dll 錛堝父瑙?/span> DLL 錛夈?/span> Extension Dll 錛堟墿灞?/span> DLL 錛夈?/span> Non-MFC DLL 鎸囩殑鏄笉鐢?/span> MFC 鐨勭被搴撶粨鏋勶紝鐩存帴鐢?/span> C 璇█鍐欑殑 DLL 錛屽叾瀵煎嚭鐨勫嚱鏁版槸鏍囧噯鐨?/span> C 鎺ュ彛錛岃兘琚潪 MFC 鎴?/span> MFC 緙栧啓鐨勫簲鐢ㄧ▼搴忔墍璋冪敤銆?/span> Regular DLL: 鍜屼笅榪扮殑 Extension Dlls 涓鏍鳳紝鏄敤 MFC 綾誨簱緙栧啓鐨勶紝瀹冪殑涓涓槑鏄劇殑鐗圭偣鏄湪婧愭枃浠墮噷鏈変竴涓戶鎵?/span> CWinApp 鐨勭被錛堟敞鎰忥細姝ょ被 DLL 铏界劧浠?/span> CWinApp 媧劇敓錛屼絾娌℃湁娑堟伅寰幆錛?/span> , 琚鍑虹殑鍑芥暟鏄?/span> C 鍑芥暟銆?/span> C++ 綾繪垨鑰?/span> C++ 鎴愬憳鍑芥暟錛堟敞鎰忎笉瑕佹妸鏈 C++ 綾諱笌 MFC 鐨勫井杞熀紜 C++ 綾葷浉娣鋒穯錛夛紝璋冪敤甯歌 DLL 鐨勫簲鐢ㄧ▼搴忎笉蹇呮槸 MFC 搴旂敤紼嬪簭錛屽彧瑕佹槸鑳借皟鐢ㄧ被 C 鍑芥暟鐨勫簲鐢ㄧ▼搴忓氨鍙互錛屽畠浠彲浠ユ槸鍦?/span> Visual C++ 銆?/span> Dephi 銆?/span> Visual Basic 銆?/span> Borland C 絳夌紪璇戠幆澧冧笅鍒╃敤 DLL 寮鍙戝簲鐢ㄧ▼搴忋?/span>

銆銆甯歌 DLL 鍙堝彲緇嗗垎鎴愰潤鎬侀摼鎺ュ埌 MFC 鍜屽姩鎬侀摼鎺ュ埌 MFC 涓婄殑錛岃繖涓ょ甯歌 DLL 鐨勫尯鍒皢鍦ㄤ笅闈粙緇嶃備笌甯歌 DLL 鐩告瘮錛屼嬌鐢ㄦ墿灞?/span> DLL 鐢ㄤ簬瀵煎嚭澧炲己 MFC 鍩虹綾葷殑鍑芥暟鎴栧瓙綾伙紝鐢ㄨ繖縐嶇被鍨嬬殑鍔ㄦ侀摼鎺ュ簱錛屽彲浠ョ敤鏉ヨ緭鍑轟竴涓粠 MFC 鎵緇ф壙涓嬫潵鐨勭被銆?/span>

銆銆鎵╁睍 DLL 鏄嬌鐢?/span> MFC 鐨勫姩鎬侀摼鎺ョ増鏈墍鍒涘緩鐨勶紝騫朵笖瀹冨彧琚敤 MFC 綾誨簱鎵緙栧啓鐨勫簲鐢ㄧ▼搴忔墍璋冪敤銆備緥濡備綘宸茬粡鍒涘緩浜嗕竴涓粠 MFC 鐨?/span> CtoolBar 綾葷殑媧劇敓綾葷敤浜庡垱寤轟竴涓柊鐨勫伐鍏鋒爮錛屼負浜嗗鍑鴻繖涓被錛屼綘蹇呴』鎶婂畠鏀懼埌涓涓?/span> MFC 鎵╁睍鐨?/span> DLL 涓傛墿灞?/span> DLL 鍜屽父瑙?/span> DLL 涓嶄竴鏍鳳紝瀹冩病鏈変竴涓粠 CWinApp 緇ф壙鑰屾潵鐨勭被鐨勫璞★紝鎵浠ワ紝寮鍙戜漢鍛樺繀欏誨湪 DLL 涓殑 DllMain 鍑芥暟娣誨姞鍒濆鍖栦唬鐮佸拰緇撴潫浠g爜銆?/span>

涓夈佸姩鎬侀摼鎺ュ簱鐨勫垱寤?/font>

銆銆鍦?/span> Visual C++6.0 寮鍙戠幆澧冧笅錛屾墦寮 FileNewProject 閫夐」錛屽彲浠ラ夋嫨 Win32 Dynamic-Link Library 鎴?/span> MFC AppWizard[dll] 鏉ヤ互涓嶅悓鐨勬柟寮忔潵鍒涘緩 Non-MFC Dll 銆?/span> Regular Dll 銆?/span> Extension Dll 絳変笉鍚岀綾葷殑鍔ㄦ侀摼鎺ュ簱銆?/span>

銆銆 1 錛?/span> Win32 Dynamic-Link Library 鏂瑰紡鍒涘緩 Non-MFC DLL 鍔ㄦ侀摼鎺ュ簱

銆銆姣忎竴涓?/span> DLL 蹇呴』鏈変竴涓叆鍙g偣錛岃繖灝辮薄鎴戜滑鐢?/span> C 緙栧啓鐨勫簲鐢ㄧ▼搴忎竴鏍鳳紝蹇呴』鏈変竴涓?/span> WINMAIN 鍑芥暟涓鏍楓傚湪 Non-MFC DLL 涓?/span> DllMain 鏄竴涓己鐪佺殑鍏ュ彛鍑芥暟錛屼綘涓嶉渶瑕佺紪鍐欒嚜宸辯殑 DLL 鍏ュ彛鍑芥暟錛岀敤榪欎釜緙虹渷鐨勫叆鍙e嚱鏁板氨鑳戒嬌鍔ㄦ侀摼鎺ュ簱琚皟鐢ㄦ椂寰楀埌姝g‘鐨勫垵濮嬪寲銆傚鏋滃簲鐢ㄧ▼搴忕殑 DLL 闇瑕佸垎閰嶉澶栫殑鍐呭瓨鎴栬祫婧愭椂錛屾垨鑰呰闇瑕佸姣忎釜榪涚▼鎴栫嚎紼嬪垵濮嬪寲鍜屾竻闄ゆ搷浣滄椂錛岄渶瑕佸湪鐩稿簲鐨?/span> DLL 宸ョ▼鐨?/span> .CPP 鏂囦歡涓 DllMain() 鍑芥暟鎸夌収涓嬮潰鐨勬牸寮忎功鍐欍?/span>

BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:
.......
case DLL_THREAD_ATTACH:
.......
case DLL_THREAD_DETACH:
.......
case DLL_PROCESS_DETACH:
.......
}
return TRUE;
}

銆銆鍙傛暟涓紝 hMoudle 鏄姩鎬佸簱琚皟鐢ㄦ椂鎵浼犻掓潵鐨勪竴涓寚鍚戣嚜宸辯殑鍙ユ焺 ( 瀹為檯涓婏紝瀹冩槸鎸囧悜 _DGROUP 孌電殑涓涓夋嫨絎?/span> ) 錛?/span> ul_reason_for_call 鏄竴涓鏄庡姩鎬佸簱琚皟鍘熷洜鐨勬爣蹇楋紝褰撹繘紼嬫垨綰跨▼瑁呭叆鎴栧嵏杞藉姩鎬侀摼鎺ュ簱鐨勬椂鍊欙紝鎿嶄綔緋葷粺璋冪敤鍏ュ彛鍑芥暟錛屽茍璇存槑鍔ㄦ侀摼鎺ュ簱琚皟鐢ㄧ殑鍘熷洜錛屽畠鎵鏈夌殑鍙兘鍊間負錛?/span> DLL_PROCESS_ATTACH: 榪涚▼琚皟鐢ㄣ?/span> DLL_THREAD_ATTACH: 綰跨▼琚皟鐢ㄣ?/span> DLL_PROCESS_DETACH: 榪涚▼琚仠姝€?/span> DLL_THREAD_DETACH: 綰跨▼琚仠姝紱 lpReserved 涓轟繚鐣欏弬鏁般傚埌姝や負姝紝 DLL 鐨勫叆鍙e嚱鏁板凡緇忓啓浜嗭紝鍓╀笅閮ㄥ垎鐨勫疄鐜頒篃涓嶉毦錛屼綘鍙互鍦?/span> DLL 宸ョ▼涓姞鍏ヤ綘鎵鎯寵杈撳嚭鐨勫嚱鏁版垨鍙橀噺浜嗐?/span>

銆銆鎴戜滑宸茬粡鐭ラ亾 DLL 鏄寘鍚嫢騫蹭釜鍑芥暟鐨勫簱鏂囦歡錛屽簲鐢ㄧ▼搴忎嬌鐢?/span> DLL 涓殑鍑芥暟涔嬪墠錛屽簲璇ュ厛瀵煎嚭榪欎簺鍑芥暟錛屼互渚夸緵緇欏簲鐢ㄧ▼搴忎嬌鐢ㄣ傝瀵煎嚭榪欎簺鍑芥暟鏈変袱縐嶆柟娉曪紝涓鏄湪瀹氫箟鍑芥暟鏃朵嬌鐢ㄥ鍑哄叧閿瓧 _declspec(dllexport) 錛屽彟澶栦竴縐嶆柟娉曟槸鍦ㄥ垱寤?/span> DLL 鏂囦歡鏃朵嬌鐢ㄦā鍧楀畾涔夋枃浠?/span> .Def 銆傞渶瑕佽鑰呮敞鎰忕殑鏄湪浣跨敤絎竴縐嶆柟娉曠殑鏃跺欙紝涓嶈兘浣跨敤 DEF 鏂囦歡銆備笅闈㈤氳繃涓や釜渚嬪瓙鏉ヨ鏄庡浣曚嬌鐢ㄨ繖涓ょ鏂規硶鍒涘緩 DLL 鏂囦歡銆?/span>

銆銆 1 錛変嬌鐢ㄥ鍑哄嚱鏁板叧閿瓧 _declspec(dllexport) 鍒涘緩 MyDll.dll 錛岃鍔ㄦ侀摼鎺ュ簱涓湁涓や釜鍑芥暟錛屽垎鍒敤鏉ュ疄鐜板緱鍒頒袱涓暟鐨勬渶澶у拰鏈灝忔暟銆傚湪 MyDll.h 鍜?/span> MyDLL.cpp 鏂囦歡涓垎鍒緭鍏ュ涓嬪師浠g爜錛?/span>

//MyDLL.h
extern "C" _declspec(dllexport) int Max(int a, int b);
extern "C" _declspec(dllexport) int Min(int a, int b);
//MyDll.cpp
錛僫 nclude
錛僫 nclude"MyDll.h"
int Max(int a, int b)
{
if(a>=b)return a;
else
return b;
}
int Min(int a, int b)
{
if(a>=b)return b;
else
return a;
}

銆銆璇ュ姩鎬侀摼鎺ュ簱緙栬瘧鎴愬姛鍚庯紝鎵撳紑 MyDll 宸ョ▼涓殑 debug 鐩綍錛屽彲浠ョ湅鍒?/span> MyDll.dll 銆?/span> MyDll.lib 涓や釜鏂囦歡銆?/span> LIB 鏂囦歡涓寘鍚?/span> DLL 鏂囦歡鍚嶅拰 DLL 鏂囦歡涓殑鍑芥暟鍚嶇瓑錛岃 LIB 鏂囦歡鍙槸瀵瑰簲璇?/span> DLL 鏂囦歡鐨?/span> " 鏄犲儚鏂囦歡 " 錛屼笌 DLL 鏂囦歡涓紝 LIB 鏂囦歡鐨勯暱搴﹁灝忕殑澶氾紝鍦ㄨ繘琛岄殣寮忛摼鎺?/span> DLL 鏃惰鐢ㄥ埌瀹冦傝鑰呭彲鑳藉凡緇忔敞鎰忓埌鍦?/span> MyDll.h 涓湁鍏抽敭瀛?/span> "extern C" 錛屽畠鍙互浣垮叾浠栫紪紼嬭璦璁塊棶浣犵紪鍐欑殑 DLL 涓殑鍑芥暟銆?/span>

銆銆 2 錛夌敤 .def 鏂囦歡鍒涘緩宸ョ▼ MyDll

銆銆涓轟簡鐢?/span> .def 鏂囦歡鍒涘緩 DLL 錛岃鍏堝垹闄や笂涓緥瀛愬垱寤虹殑宸ョ▼涓殑 MyDll.h 鏂囦歡錛屼繚鐣?/span> MyDll.cpp 騫跺湪璇ユ枃浠跺ご鍒犻櫎 錛僫 nclude MyDll.h 璇彞錛屽悓鏃跺線璇ュ伐紼嬩腑鍔犲叆涓涓枃鏈枃浠訛紝鍛藉悕涓?/span> MyDll.def 錛屽啀鍦ㄨ鏂囦歡涓姞鍏ュ涓嬩唬鐮侊細


LIBRARY MyDll
EXPORTS
Max
Min

銆銆鍏朵腑 LIBRARY 璇彞璇存槑璇?/span> def 鏂囦歡鏄睘浜庣浉搴?/span> DLL 鐨勶紝 EXPORTS 璇彞涓嬪垪鍑鴻瀵煎嚭鐨勫嚱鏁板悕縐般傛垜浠彲浠ュ湪 .def 鏂囦歡涓殑瀵煎嚭鍑芥暟鍚庡姞 @n 錛屽 Max@1 錛?/span> Min@2 錛岃〃紺鴻瀵煎嚭鐨勫嚱鏁伴『搴忓彿錛屽湪榪涜鏄懼紡榪炴椂鍙互鐢ㄥ埌瀹冦傝 DLL 緙栬瘧鎴愬姛鍚庯紝鎵撳紑宸ョ▼涓殑 Debug 鐩綍錛屽悓鏍蜂篃浼氱湅鍒?/span> MyDll.dll 鍜?/span> MyDll.lib 鏂囦歡銆?/span>

銆銆 2 錛?/span> MFC AppWizard[dll] 鏂瑰紡鐢熸垚甯歌 / 鎵╁睍 DLL

銆銆鍦?/span> MFC AppWizard[dll] 涓嬬敓鎴?/span> DLL 鏂囦歡鍙堟湁涓夌鏂瑰紡錛屽湪鍒涘緩 DLL 鏄紝瑕佹牴鎹疄闄呮儏鍐甸夋嫨鍒涘緩 DLL 鐨勬柟寮忋備竴縐嶆槸甯歌 DLL 闈欐侀摼鎺ュ埌 MFC 錛屽彟涓縐嶆槸甯歌 DLL 鍔ㄦ侀摼鎺ュ埌 MFC 銆備袱鑰呯殑鍖哄埆鏄細鍓嶈呬嬌鐢ㄧ殑鏄?/span> MFC 鐨勯潤鎬侀摼鎺ュ簱錛岀敓鎴愮殑 DLL 鏂囦歡闀垮害澶э紝涓鑸笉浣跨敤榪欑鏂瑰紡錛屽悗鑰呬嬌鐢?/span> MFC 鐨勫姩鎬侀摼鎺ュ簱錛岀敓鎴愮殑 DLL 鏂囦歡闀垮害灝忥紱鍔ㄦ侀摼鎺ュ埌 MFC 鐨勮鍒?/span> DLL 鎵鏈夎緭鍑虹殑鍑芥暟搴旇浠ュ涓嬭鍙ュ紑濮嬶細

AFX_MANAGE_STATE(AfxGetStaticModuleState( )) // 姝よ鍙ョ敤鏉ユ紜湴鍒囨崲 MFC 妯″潡鐘舵?/span>

銆銆鏈鍚庝竴縐嶆槸 MFC 鎵╁睍 DLL 錛岃繖縐?/span> DLL 鐗圭偣鏄敤鏉ュ緩绔?/span> MFC 鐨勬淳鐢熺被錛?/span> Dll 鍙鐢?/span> MFC 綾誨簱鎵緙栧啓鐨勫簲鐢ㄧ▼搴忔墍璋冪敤銆傚墠闈㈡垜浠凡緇忎粙緇嶈繃錛?/span> Extension DLLs 鍜?/span> Regular DLLs 涓嶄竴鏍鳳紝瀹冩病鏈変竴涓粠 CWinApp 緇ф壙鑰屾潵鐨勭被鐨勫璞★紝緙栬瘧鍣ㄩ粯璁や簡涓涓?/span> DLL 鍏ュ彛鍑芥暟 DLLMain() 浣滀負瀵?/span> DLL 鐨勫垵濮嬪寲錛屼綘鍙互鍦ㄦ鍑芥暟涓疄鐜板垵濮嬪寲 , 浠g爜濡備笅錛?/span>

BOOL WINAPI APIENTRY DLLMain(HINSTANCE hinstDll 錛?/span> DWORD reason 錛?/span> LPVOID flmpload)
{
switch(reason)
{
……………//
鍒濆鍖栦唬鐮侊紱

}
return true;
}

銆銆鍙傛暟 hinstDll 瀛樻斁 DLL 鐨勫彞鏌勶紝鍙傛暟 reason 鎸囨槑璋冪敤鍑芥暟鐨勫師鍥狅紝 lpReserved 鏄竴涓緋葷粺鎵淇濈暀鐨勫弬鏁般傚浜庨殣寮忛摼鎺ユ槸涓涓潪闆跺鹼紝瀵逛簬鏄懼紡閾炬帴鍊兼槸闆躲?/span>

銆銆鍦?/span> MFC 涓嬪緩绔?/span> DLL 鏂囦歡錛屼細鑷姩鐢熸垚 def 鏂囦歡妗嗘灦錛屽叾瀹冧笌寤虹珛浼犵粺鐨?/span> Non-MFC DLL 娌℃湁浠涔堝尯鍒紝鍙鍦ㄧ浉搴旂殑澶存枃浠跺啓鍏ュ叧閿瓧 _declspec(dllexport) 鍑芥暟綾誨瀷鍜屽嚱鏁板悕絳夛紝鎴栧湪鐢熸垚鐨?/span> def 鏂囦歡涓?/span> EXPORTS 涓嬭緭鍏ュ嚱鏁板悕灝卞彲浠ヤ簡銆傞渶瑕佹敞鎰忕殑鏄湪鍚戝叾瀹冨紑鍙戜漢鍛樺垎鍙?/span> MFC 鎵╁睍 DLL 鏃訛紝涓嶈蹇樿鎻愪緵鎻忚堪 DLL 涓被鐨勫ご鏂囦歡浠ュ強鐩稿簲鐨?/span> .LIB 鏂囦歡鍜?/span> DLL 鏈韓錛屾鍚庡紑鍙戜漢鍛樺氨鑳藉厖鍒嗗埄鐢ㄤ綘寮鍙戠殑鎵╁睍 DLL 浜嗐?br>
銆搴旂敤紼嬪簭浣跨敤DLL鍙互閲囩敤涓ょ鏂瑰紡錛氫竴縐嶆槸闅愬紡閾炬帴錛屽彟涓縐嶆槸鏄懼紡閾炬帴銆傚湪浣跨敤DLL涔嬪墠棣栧厛瑕佺煡閬?/span>DLL涓嚱鏁扮殑緇撴瀯淇℃伅銆?/span>Visual C++6.0鍦?/span>VCin鐩綍涓嬫彁渚涗簡涓涓悕涓?/span>Dumpbin.exe鐨勫皬紼嬪簭錛岀敤瀹冨彲浠ユ煡鐪?/span>DLL鏂囦歡涓殑鍑芥暟緇撴瀯銆傚彟澶栵紝Windows緋葷粺灝嗛伒寰笅闈㈢殑鎼滅儲欏哄簭鏉ュ畾浣?/span>DLL錛?/span> 1錛庡寘鍚?/span>EXE鏂囦歡鐨勭洰褰曪紝2錛庤繘紼嬬殑褰撳墠宸ヤ綔鐩綍錛?/span> 3錛?/span>Windows緋葷粺鐩綍錛?/span> 4錛?/span>Windows鐩綍錛?/span>5錛庡垪鍦?/span>Path鐜鍙橀噺涓殑涓緋誨垪鐩綍銆?/span>

銆銆1錛庨殣寮忛摼鎺?/span>

銆銆闅愬紡閾炬帴灝辨槸鍦ㄧ▼搴忓紑濮嬫墽琛屾椂灝卞皢DLL鏂囦歡鍔犺澆鍒板簲鐢ㄧ▼搴忓綋涓傚疄鐜伴殣寮忛摼鎺ュ緢瀹規槗錛屽彧瑕佸皢瀵煎叆鍑芥暟鍏抽敭瀛?/span>_declspec(dllimport)鍑芥暟鍚嶇瓑鍐欏埌搴旂敤紼嬪簭鐩稿簲鐨勫ご鏂囦歡涓氨鍙互浜嗐備笅闈㈢殑渚嬪瓙閫氳繃闅愬紡閾炬帴璋冪敤MyDll.dll搴撲腑鐨?/span>Min鍑芥暟銆傞鍏堢敓鎴愪竴涓」鐩負TestDll錛屽湪DllTest.h銆?/span>DllTest.cpp鏂囦歡涓垎鍒緭鍏ュ涓嬩唬鐮侊細

 

//Dlltest.h
#pragma comment(lib
錛?/span> "MyDll.lib")
extern "C"_declspec(dllimport) int Max(int a,int b);
extern "C"_declspec(dllimport) int Min(int a,int b);
//TestDll.cpp
錛僫 nclude
錛僫 nclude"Dlltest.h"
void main()
{int a;
a=min(8,10)
printf("
姣旇緝鐨勭粨鏋滀負 %d " 錛?/span> a);
}

銆銆鍦ㄥ垱寤?/span> DllTest.exe 鏂囦歡涔嬪墠錛岃鍏堝皢 MyDll.dll 鍜?/span> MyDll.lib 鎷瘋礉鍒板綋鍓嶅伐紼嬫墍鍦ㄧ殑鐩綍涓嬮潰錛屼篃鍙互鎷瘋礉鍒?/span> windows 鐨?/span> System 鐩綍涓嬨傚鏋?/span> DLL 浣跨敤鐨勬槸 def 鏂囦歡錛岃鍒犻櫎 TestDll.h 鏂囦歡涓叧閿瓧 extern "C" 銆?/span> TestDll.h 鏂囦歡涓殑鍏抽敭瀛?/span> Progam commit 鏄 Visual C+ 鐨勭紪璇戝櫒鍦?/span> link 鏃訛紝閾炬帴鍒?/span> MyDll.lib 鏂囦歡錛屽綋鐒訛紝寮鍙戜漢鍛樹篃鍙互涓嶄嬌鐢?/span> #pragma comment(lib 錛?/span> "MyDll.lib") 璇彞錛岃岀洿鎺ュ湪宸ョ▼鐨?/span> Setting->Link 欏電殑 Object/Moduls 鏍忓~鍏?/span> MyDll.lib 鏃㈠彲銆?/span>

銆銆 2 錛庢樉寮忛摼鎺?/span>

銆銆鏄懼紡閾炬帴鏄簲鐢ㄧ▼搴忓湪鎵ц榪囩▼涓殢鏃跺彲浠ュ姞杞?/span> DLL 鏂囦歡錛屼篃鍙互闅忔椂鍗歌澆 DLL 鏂囦歡錛岃繖鏄殣寮忛摼鎺ユ墍鏃犳硶浣滃埌鐨勶紝鎵浠ユ樉寮忛摼鎺ュ叿鏈夋洿濂界殑鐏墊椿鎬э紝瀵逛簬瑙i噴鎬ц璦鏇翠負鍚堥傘備笉榪囧疄鐜版樉寮忛摼鎺ヨ楹葷儲涓浜涖傚湪搴旂敤紼嬪簭涓敤 LoadLibrary 鎴?/span> MFC 鎻愪緵鐨?/span> AfxLoadLibrary 鏄懼紡鐨勫皢鑷繁鎵鍋氱殑鍔ㄦ侀摼鎺ュ簱璋冭繘鏉ワ紝鍔ㄦ侀摼鎺ュ簱鐨勬枃浠跺悕鍗蟲槸涓婅堪涓や釜鍑芥暟鐨勫弬鏁幫紝姝ゅ悗鍐嶇敤 GetProcAddress() 鑾峰彇鎯寵寮曞叆鐨勫嚱鏁般傝嚜姝わ紝浣犲氨鍙互璞′嬌鐢ㄥ鍚屽湪搴旂敤紼嬪簭鑷畾涔夌殑鍑芥暟涓鏍鋒潵璋冪敤姝ゅ紩鍏ュ嚱鏁頒簡銆傚湪搴旂敤紼嬪簭閫鍑轟箣鍓嶏紝搴旇鐢?/span> FreeLibrary 鎴?/span> MFC 鎻愪緵鐨?/span> AfxFreeLibrary 閲婃斁鍔ㄦ侀摼鎺ュ簱銆備笅闈㈡槸閫氳繃鏄懼紡閾炬帴璋冪敤 DLL 涓殑 Max 鍑芥暟鐨勪緥瀛愩?/span>

 

錛僫 nclude
錛僫 nclude
void main(void)
{
typedef int(*pMax)(int a,int b);
typedef int(*pMin)(int a,int b);
HINSTANCE hDLL;
PMax Max
HDLL=LoadLibrary("MyDll.dll");//
鍔犺澆鍔ㄦ侀摼鎺ュ簱 MyDll.dll 鏂囦歡錛?/span>
Max=(pMax)GetProcAddress(hDLL,"Max");
A=Max(5,8);
Printf("
姣旇緝鐨勭粨鏋滀負 %d " 錛?/span> a);
FreeLibrary(hDLL);//
鍗歌澆 MyDll.dll 鏂囦歡錛?/span>
}

銆銆鍦ㄤ笂渚嬩腑浣跨敤綾誨瀷瀹氫箟鍏抽敭瀛?/span> typedef 錛屽畾涔夋寚鍚戝拰 DLL 涓浉鍚岀殑鍑芥暟鍘熷瀷鎸囬拡錛岀劧鍚庨氳繃 LoadLibray() 灝?/span> DLL 鍔犺澆鍒板綋鍓嶇殑搴旂敤紼嬪簭涓茍榪斿洖褰撳墠 DLL 鏂囦歡鐨勫彞鏌勶紝鐒跺悗閫氳繃 GetProcAddress() 鍑芥暟鑾峰彇瀵煎叆鍒板簲鐢ㄧ▼搴忎腑鐨勫嚱鏁版寚閽堬紝鍑芥暟璋冪敤瀹屾瘯鍚庯紝浣跨敤 FreeLibrary() 鍗歌澆 DLL 鏂囦歡銆傚湪緙栬瘧紼嬪簭涔嬪墠錛岄鍏堣灝?/span> DLL 鏂囦歡鎷瘋礉鍒板伐紼嬫墍鍦ㄧ殑鐩綍鎴?/span> Windows 緋葷粺鐩綍涓嬨?/span>

銆銆浣跨敤鏄懼紡閾炬帴搴旂敤紼嬪簭緙栬瘧鏃朵笉闇瑕佷嬌鐢ㄧ浉搴旂殑 Lib 鏂囦歡銆傚彟澶栵紝浣跨敤 GetProcAddress() 鍑芥暟鏃訛紝鍙互鍒╃敤 MAKEINTRESOURCE() 鍑芥暟鐩存帴浣跨敤 DLL 涓嚱鏁板嚭鐜扮殑欏哄簭鍙鳳紝濡傚皢 GetProcAddress(hDLL,"Min") 鏀逛負 GetProcAddress(hDLL, MAKEINTRESOURCE(2)) 錛堝嚱鏁?/span> Min() 鍦?/span> DLL 涓殑欏哄簭鍙鋒槸 2 錛夛紝榪欐牱璋冪敤 DLL 涓殑鍑芥暟閫熷害寰堝揩錛屼絾鏄璁頒綇鍑芥暟鐨勪嬌鐢ㄥ簭鍙鳳紝鍚﹀垯浼氬彂鐢熼敊璇?/span> 



shaohua 2007-12-04 13:44 鍙戣〃璇勮
]]>
[鍚庤]澶х摱瀛愪笌灝忕摱瀛愮殑闂 http://m.shnenglu.com/xushaohua/archive/2006/11/15/15181.htmlshaohuashaohuaWed, 15 Nov 2006 06:09:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/15/15181.htmlhttp://m.shnenglu.com/xushaohua/comments/15181.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/15/15181.html#Feedback1http://m.shnenglu.com/xushaohua/comments/commentRss/15181.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/15181.html
using聽System;

class聽Client
{
聽聽聽
publicstaticvoid聽Main聽()
聽聽聽
{
聽聽聽聽聽聽A聽a聽
=new聽A();
聽聽聽聽聽聽B聽b聽
=new聽B();
聽聽聽聽聽聽a.b聽
=聽b;
聽聽聽聽聽聽b.a聽
=聽a;
聽聽聽}

}


class聽A
{
聽聽聽
public聽B聽b;
}


class聽B
{
聽聽聽
public聽A聽a;聽
}
涓轟粈涔堣繖閲屼笉鐢ㄥ儚C++璇█鎻忚堪閭f牱瑕佸仛涓浜涘鐞?鑰屼笖娌℃湁鎶ラ敊鍛?
緋葷粺榪愯鍚庯紝鍐呭瓨緇撴瀯濡備笅錛?br />

涓嶤++璇█鏈変笉鍚岀殑鏄?鍦–#璇█涓?class榪欑鑷畾涔夌殑鏁版嵁綾誨瀷灞炰簬寮曠敤綾誨瀷,鎵浠ュ湪澹板悕鐨勬椂鍊欐槸涓縐嶅紩鐢ㄨ屽凡.鐢變簬鏄紩鐢紝鎵浠ヤ篃鏃犳墍璋撳ぇ鐡跺瓙榪樻槸灝忕摱瀛愪簡銆?img src ="http://m.shnenglu.com/xushaohua/aggbug/15181.html" width = "1" height = "1" />

shaohua 2006-11-15 14:09 鍙戣〃璇勮
]]>
澶х摱瀛愪笌灝忕摱瀛愮殑闂http://m.shnenglu.com/xushaohua/archive/2006/11/15/15179.htmlshaohuashaohuaWed, 15 Nov 2006 06:01:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/15/15179.htmlhttp://m.shnenglu.com/xushaohua/comments/15179.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/15/15179.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/15179.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/15179.html class 聽B;

class 聽A
{
public :
聽聽聽聽A(
void );
聽聽聽聽
~ A( void );
聽聽聽聽B聽b;
}
;

A::A(
void )
{
}


A::
~ A( void )
{
}


class 聽B
{
public :
聽聽聽聽B(
void );
聽聽聽聽
~ B( void );
聽聽聽聽A聽a;
}
;

B::B(
void )
{
}


B::
~ B( void )
{
}


int 聽main()
{
聽聽聽聽
return 0 ;

}
鍦ㄧ紪璇戝櫒涓紪璇戣鎶ョ殑閿欒鍗蟲槸:聽 error C2079: 'A::b' uses undefined class 'B'
鍘熷洜鏄粈涔堝憿?浠庝唬鐮佹潵鐪?鐢ㄤ簡綾葷殑鍓嶈鐨勫晩,涓嶅簲璇ユ湁浠涔堥棶棰樼殑鍟?
浣嗗洜涓哄湪鍒嗛厤鍐呭瓨絀洪棿鐨勬椂鍊?涓嶇煡閬撳叾class B 鐨勫ぇ灝?鎵浠ユ病鏈夊姙娉曚負鍏跺垎閰嶅瓨鍌ㄧ┖闂?闅忓嵆鎶ュ嚭浜嗕竴涓病鏈夊畾涔夌殑閿欒.
鍏惰В鍐崇殑鏂規鏈変袱縐?濡備笅浜嬩緥:
鏂規A:
class聽B;

class聽A
{
public:
聽聽聽聽A(
void);
聽聽聽聽
~A(void);
聽聽聽聽B聽b();
}
;

A::A(
void)
{
}


A::
~A(void)
{
}


class聽B
{
public:
聽聽聽聽B(
void);
聽聽聽聽
~B(void);
聽聽聽聽A聽a();
}
;

B::B(
void)
{
}


B::
~B(void)
{
}


int聽main()
{
聽聽聽聽
return0;

}
鏄劇ず鍦拌皟鐢ㄤ竴涓嬪叾鏋勯犲嚱鏁版瀯閫犱竴涓叿浣撶殑瀹炰緥鍑烘潵鍗蟲湁浜嗗浐瀹氱殑瀛樺偍絀洪棿
鏂規B:
class聽B;

class聽A
{
public:
聽聽聽聽A(
void);
聽聽聽聽
~A(void);
聽聽聽聽B聽
*b;
}
;

A::A(
void)
{
}


A::
~A(void)
{
}


class聽B
{
public:
聽聽聽聽B(
void);
聽聽聽聽
~B(void);
聽聽聽聽A聽
*a;
}
;

B::B(
void)
{
}


B::
~B(void)
{
}


int聽main()
{
聽聽聽聽
return0;

}
鐢ㄦ寚閽堟潵瀛樺偍鍏朵竴涓湴鍧鑰屽凡,鍏蜂綋鐨勫ぇ灝忕瓑鍒扮敤鐨勬椂鍊欏啀涓哄叾瀹為檯鍒嗛厤.

shaohua 2006-11-15 14:01 鍙戣〃璇勮
]]>
鐢–鎻忚堪MD5綆楁硶http://m.shnenglu.com/xushaohua/archive/2006/11/09/14919.htmlshaohuashaohuaThu, 09 Nov 2006 12:54:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/09/14919.htmlhttp://m.shnenglu.com/xushaohua/comments/14919.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/09/14919.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/14919.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/14919.html闃呰鍏ㄦ枃

shaohua 2006-11-09 20:54 鍙戣〃璇勮
]]>
鍒濊瘑MD5綆楁硶http://m.shnenglu.com/xushaohua/archive/2006/11/09/14918.htmlshaohuashaohuaThu, 09 Nov 2006 12:51:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/09/14918.htmlhttp://m.shnenglu.com/xushaohua/comments/14918.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/09/14918.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/14918.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/14918.html闃呰鍏ㄦ枃

shaohua 2006-11-09 20:51 鍙戣〃璇勮
]]>
[杞琞鑷矯/C++鍒濆鑰?----------------鍫嗕笌鏍?/title><link>http://m.shnenglu.com/xushaohua/archive/2006/11/09/14917.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Thu, 09 Nov 2006 12:45:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2006/11/09/14917.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/14917.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2006/11/09/14917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/14917.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/14917.html</trackback:ping><description><![CDATA[ <div> <p class="vcerHeading"> <img src="http://vcer.net/images/item.gif" align="top" />鍏抽敭璇?/p> <font style="BACKGROUND-COLOR: #ffff00">鍫?/font>聽<font style="BACKGROUND-COLOR: #00ffff">鏍?/font><br /><p class="vcerHeading"><img src="http://vcer.net/images/item.gif" align="top" />鎽樿</p><br /><p class="vcerHeading"><img src="http://vcer.net/images/item.gif" align="top" />姝f枃</p><div id="hvzpftn" class="vcerParagraph"><p>涓銆侀澶囩煡璇嗏旂▼搴忕殑鍐呭瓨鍒嗛厤 </p><p>涓涓敱c/C++緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎 </p><p>1銆?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鍖猴紙stack錛夆斅犅?鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁 錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>銆?</p><p>2銆?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鍖猴紙heap錛?鈥斅犅?涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝 鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥炴敹 銆傛敞鎰忓畠涓庢暟鎹粨鏋勪腑鐨?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鏄袱鍥炰簨錛屽垎閰嶆柟寮忓掓槸綾諱技浜庨摼琛紝鍛靛懙銆?</p><p>3銆佸叏灞鍖猴紙闈欐佸尯錛夛紙static錛夆旓紝鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤鎬佸彉閲忓湪涓鍧楀尯鍩燂紝 鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴?- 紼嬪簭緇撴潫鍚庢湁緋葷粺閲婃斁 </p><p>4銆佹枃瀛楀父閲忓尯聽 鈥斿父閲忓瓧絎︿覆灝辨槸鏀懼湪榪欓噷鐨勩?紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁 </p><p>5銆佺▼搴忎唬鐮佸尯鈥斿瓨鏀懼嚱鏁頒綋鐨勪簩榪涘埗浠g爜銆?</p><p>浜屻佷緥瀛愮▼搴?</p><p>榪欐槸涓涓墠杈堝啓鐨勶紝闈炲父璇︾粏 </p><p>//main.cpp </p><p>int a = 0; 鍏ㄥ眬鍒濆鍖栧尯 </p><p>char *p1; 鍏ㄥ眬鏈垵濮嬪寲鍖?</p><p>main() </p><p>{ </p><p>int b; <font style="BACKGROUND-COLOR: #00ffff">鏍?/font></p><p>char s[] = "abc"; <font style="BACKGROUND-COLOR: #00ffff">鏍?/font></p><p>char *p2; <font style="BACKGROUND-COLOR: #00ffff">鏍?/font></p><p>char *p3 = "123456"; 123456\0鍦ㄥ父閲忓尯錛宲3鍦?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>涓娿?</p><p>static int c =0錛?鍏ㄥ眬錛堥潤鎬侊級鍒濆鍖栧尯 </p><p>p1 = (char *)malloc(10); </p><p>p2 = (char *)malloc(20); </p><p>鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鍖恒?</p><p>strcpy(p1, "123456"); 123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細灝嗗畠涓巔3鎵鎸囧悜鐨?123456"浼樺寲鎴愪竴涓湴鏂廣?</p><p>} </p><p>浜屻?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鍜?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勭悊璁虹煡璇?</p><p>2.1鐢寵鏂瑰紡 </p><p>stack: </p><p>鐢辯郴緇熻嚜鍔ㄥ垎閰嶃?渚嬪錛屽0鏄庡湪鍑芥暟涓竴涓眬閮ㄥ彉閲?int b; 緋葷粺鑷姩鍦?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>涓負b寮杈熺┖闂?</p><p>heap: </p><p>闇瑕佺▼搴忓憳鑷繁鐢寵錛屽茍鎸囨槑澶у皬錛屽湪c涓璵alloc鍑芥暟 </p><p>濡俻1 = (char *)malloc(10); </p><p>鍦–++涓敤new榪愮畻絎?</p><p>濡俻2 = (char *)malloc(10); </p><p>浣嗘槸娉ㄦ剰p1銆乸2鏈韓鏄湪<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>涓殑銆?</p><p>2.2 </p><p>鐢寵鍚庣郴緇熺殑鍝嶅簲 </p><p><font style="BACKGROUND-COLOR: #00ffff">鏍?/font>錛氬彧瑕?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勫墿浣欑┖闂村ぇ浜庢墍鐢寵絀洪棿錛岀郴緇熷皢涓虹▼搴忔彁渚涘唴瀛橈紝鍚﹀垯灝嗘姤寮傚父鎻愮ず<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>婧㈠嚭銆?</p><p><font style="BACKGROUND-COLOR: #ffff00">鍫?/font>錛氶鍏堝簲璇ョ煡閬撴搷浣滅郴緇熸湁涓涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛紝褰撶郴緇熸敹鍒扮▼搴忕殑鐢寵鏃訛紝 </p><p>浼氶亶鍘嗚閾捐〃錛屽鎵劇涓涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>緇撶偣錛岀劧鍚庡皢璇ョ粨鐐逛粠絀洪棽緇撶偣閾捐〃涓垹闄わ紝騫跺皢璇ョ粨鐐圭殑絀洪棿鍒嗛厤緇欑▼搴忥紝鍙﹀錛屽浜庡ぇ澶氭暟緋葷粺錛屼細鍦ㄨ繖鍧楀唴瀛樼┖闂翠腑鐨勯鍦板潃澶勮褰曟湰嬈″垎閰嶇殑澶у皬錛岃繖鏍鳳紝浠g爜涓殑delete璇彞鎵嶈兘姝g‘鐨勯噴鏀炬湰鍐呭瓨絀洪棿銆傚彟澶栵紝鐢變簬鎵懼埌鐨?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>緇撶偣鐨勫ぇ灝忎笉涓瀹氭濂界瓑浜庣敵璇風殑澶у皬錛岀郴緇熶細鑷姩鐨勫皢澶氫綑鐨勯偅閮ㄥ垎閲嶆柊鏀懼叆絀洪棽閾捐〃涓?</p><p>2.3鐢寵澶у皬鐨勯檺鍒?</p><p><font style="BACKGROUND-COLOR: #00ffff">鏍?/font>錛氬湪Windows涓?<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鏄悜浣庡湴鍧鎵╁睍鐨勬暟鎹粨鏋勶紝鏄竴鍧楄繛緇殑鍐呭瓨鐨勫尯鍩熴傝繖鍙ヨ瘽鐨勬剰鎬濇槸<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>欏剁殑鍦板潃鍜?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勬渶澶у閲忔槸緋葷粺棰勫厛瑙勫畾濂界殑錛屽湪WINDOWS涓嬶紝<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勫ぇ灝忔槸2M錛堜篃鏈夌殑璇存槸1M錛屾諱箣鏄竴涓紪璇戞椂灝辯‘瀹氱殑甯告暟錛夛紝濡傛灉鐢寵鐨勭┖闂磋秴榪?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勫墿浣欑┖闂存椂錛屽皢鎻愮ずoverflow銆傚洜姝わ紝鑳戒粠<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鑾峰緱鐨勭┖闂磋緝灝忋?</p><p><font style="BACKGROUND-COLOR: #ffff00">鍫?/font>錛?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鏄悜楂樺湴鍧鎵╁睍鐨勬暟鎹粨鏋勶紝鏄笉榪炵畫鐨勫唴瀛樺尯鍩熴傝繖鏄敱浜庣郴緇熸槸鐢ㄩ摼琛ㄦ潵瀛樺偍鐨勭┖闂插唴瀛樺湴鍧鐨勶紝鑷劧鏄笉榪炵畫鐨勶紝鑰岄摼琛ㄧ殑閬嶅巻鏂瑰悜鏄敱浣庡湴鍧鍚戦珮鍦板潃銆?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鐨勫ぇ灝忓彈闄愪簬璁$畻鏈虹郴緇熶腑鏈夋晥鐨勮櫄鎷熷唴瀛樸傜敱姝ゅ彲瑙侊紝<font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鑾峰緱鐨勭┖闂存瘮杈冪伒媧伙紝涔熸瘮杈冨ぇ銆?</p><p>2.4鐢寵鏁堢巼鐨勬瘮杈冿細 </p><p><font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐢辯郴緇熻嚜鍔ㄥ垎閰嶏紝閫熷害杈冨揩銆備絾紼嬪簭鍛樻槸鏃犳硶鎺у埗鐨勩?</p><p><font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鏄敱new鍒嗛厤鐨勫唴瀛橈紝涓鑸熷害姣旇緝鎱紝鑰屼笖瀹規槗浜х敓鍐呭瓨紕庣墖,涓嶈繃鐢ㄨ搗鏉ユ渶鏂逛究. </p><p>鍙﹀錛屽湪WINDOWS涓嬶紝鏈濂界殑鏂瑰紡鏄敤VirtualAlloc鍒嗛厤鍐呭瓨錛屼粬涓嶆槸鍦?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>錛屼篃涓嶆槸鍦?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鏄洿鎺ュ湪榪涚▼鐨勫湴鍧絀洪棿涓繚鐣欎竴蹇唴瀛橈紝铏界劧鐢ㄨ搗鏉ユ渶涓嶆柟渚褲備絾鏄熷害蹇紝涔熸渶鐏墊椿銆?</p><p>2.5<font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鍜?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>涓殑瀛樺偍鍐呭 </p><p><font style="BACKGROUND-COLOR: #00ffff">鏍?/font>錛?鍦ㄥ嚱鏁拌皟鐢ㄦ椂錛岀涓涓繘<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勬槸涓誨嚱鏁頒腑鍚庣殑涓嬩竴鏉℃寚浠わ紙鍑芥暟璋冪敤璇彞鐨勪笅涓鏉″彲鎵ц璇彞錛夌殑鍦板潃錛岀劧鍚庢槸鍑芥暟鐨勫悇涓弬鏁幫紝鍦ㄥぇ澶氭暟鐨凜緙栬瘧鍣ㄤ腑錛屽弬鏁版槸鐢卞彸寰宸﹀叆<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勶紝鐒跺悗鏄嚱鏁頒腑鐨勫眬閮ㄥ彉閲忋傛敞鎰忛潤鎬佸彉閲忔槸涓嶅叆<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勩?</p><p>褰撴湰嬈″嚱鏁拌皟鐢ㄧ粨鏉熷悗錛屽眬閮ㄥ彉閲忓厛鍑?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>錛岀劧鍚庢槸鍙傛暟錛屾渶鍚?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>欏舵寚閽堟寚鍚戞渶寮濮嬪瓨鐨勫湴鍧錛屼篃灝辨槸涓誨嚱鏁頒腑鐨勪笅涓鏉℃寚浠わ紝紼嬪簭鐢辮鐐圭戶緇繍琛屻?</p><p><font style="BACKGROUND-COLOR: #ffff00">鍫?/font>錛氫竴鑸槸鍦?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鐨勫ご閮ㄧ敤涓涓瓧鑺傚瓨鏀?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鐨勫ぇ灝忋?font style="BACKGROUND-COLOR: #ffff00">鍫?/font>涓殑鍏蜂綋鍐呭鏈夌▼搴忓憳瀹夋帓銆?</p><p>2.6瀛樺彇鏁堢巼鐨勬瘮杈?</p><p>char s1[] = "aaaaaaaaaaaaaaa"; </p><p>char *s2 = "bbbbbbbbbbbbbbbbb"; </p><p>aaaaaaaaaaa鏄湪榪愯鏃跺埢璧嬪肩殑錛?</p><p>鑰宐bbbbbbbbbb鏄湪緙栬瘧鏃跺氨紜畾鐨勶紱 </p><p>浣嗘槸錛屽湪浠ュ悗鐨勫瓨鍙栦腑錛屽湪<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>涓婄殑鏁扮粍姣旀寚閽堟墍鎸囧悜鐨勫瓧絎︿覆(渚嬪<font style="BACKGROUND-COLOR: #ffff00">鍫?/font>)蹇?</p><p>姣斿錛?</p><p>#include </p><p>void main() </p><p>{ </p><p>char a = 1; </p><p>char c[] = "1234567890"; </p><p>char *p ="1234567890"; </p><p>a = c[1]; </p><p>a = p[1]; </p><p>return; </p><p>} </p><p>瀵瑰簲鐨勬眹緙栦唬鐮?</p><p>10: a = c[1]; </p><p>00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh] </p><p>0040106A 88 4D FC mov byte ptr [ebp-4],cl </p><p>11: a = p[1]; </p><p>0040106D 8B 55 EC mov edx,dword ptr [ebp-14h] </p><p>00401070 8A 42 01 mov al,byte ptr [edx+1] </p><p>00401073 88 45 FC mov byte ptr [ebp-4],al </p><p>絎竴縐嶅湪璇誨彇鏃剁洿鎺ュ氨鎶婂瓧絎︿覆涓殑鍏冪礌璇誨埌瀵勫瓨鍣╟l涓紝鑰岀浜岀鍒欒鍏堟妸鎸囬拡鍊艱鍒癳dx涓紝鍦ㄦ牴鎹甧dx璇誨彇瀛楃錛屾樉鐒舵參浜嗐?</p><p>2.7灝忕粨錛?</p><p><font style="BACKGROUND-COLOR: #ffff00">鍫?/font>鍜?font style="BACKGROUND-COLOR: #00ffff">鏍?/font>鐨勫尯鍒彲浠ョ敤濡備笅鐨勬瘮鍠繪潵鐪嬪嚭錛?</p><p>浣跨敤<font style="BACKGROUND-COLOR: #00ffff">鏍?/font>灝辮薄鎴戜滑鍘婚キ棣嗛噷鍚冮キ錛屽彧綆$偣鑿滐紙鍙戝嚭鐢寵錛夈佷粯閽便佸拰鍚冿紙浣跨敤錛夛紝鍚冮ケ浜嗗氨璧幫紝涓嶅繀鐞嗕細鍒囪彍銆佹礂鑿滅瓑鍑嗗宸ヤ綔鍜屾礂紕椼佸埛閿呯瓑鎵熬宸ヤ綔錛屼粬鐨勫ソ澶勬槸蹇嵎錛屼絾鏄嚜鐢卞害灝忋?</p><p>浣跨敤<font style="BACKGROUND-COLOR: #ffff00">鍫?/font>灝辮薄鏄嚜宸卞姩鎵嬪仛鍠滄鍚冪殑鑿滆偞錛屾瘮杈冮夯鐑︼紝浣嗘槸姣旇緝絎﹀悎鑷繁鐨勫彛鍛籌紝鑰屼笖鑷敱搴﹀ぇ銆?/p></div></div> <img src ="http://m.shnenglu.com/xushaohua/aggbug/14917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2006-11-09 20:45 <a href="http://m.shnenglu.com/xushaohua/archive/2006/11/09/14917.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C涓殑璺寵漿璇彞[闈瀏oto]http://m.shnenglu.com/xushaohua/archive/2006/11/04/14672.htmlshaohuashaohuaSat, 04 Nov 2006 13:18:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/04/14672.htmlhttp://m.shnenglu.com/xushaohua/comments/14672.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/04/14672.html#Feedback4http://m.shnenglu.com/xushaohua/comments/commentRss/14672.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/14672.html 聽1 #include聽 < stdio.h >
聽2 #include聽 < setjmp.h >
聽3 jmp_buf聽buf;
聽4
聽5 static void 聽babana()
聽6 {
聽7 聽聽聽聽printf( " in聽babana()\n " );
聽8 聽聽聽聽longjmp(buf, 1 );
聽9 聽聽聽聽printf( " never聽see聽me\n " );
10 }

11
12 int 聽main()
13 {
14 聽聽聽聽 if (setjmp(buf))
15 聽聽聽聽 {
16 聽聽聽聽聽聽聽聽printf( " back聽in聽main\n " );
17 聽聽聽聽}

18 聽聽聽聽 else
19 聽聽聽聽 {
20 聽聽聽聽聽聽聽聽printf( " first聽time聽through\n " );
21 聽聽聽聽聽聽聽聽babana();
22 聽聽聽聽}

23 聽聽聽聽 return 0 ;
24 }
聽setjmp()棣栧厛琚皟鐢?騫朵笖榪斿洖0.
goto鏄笉鑳借煩鍑哄綋鍓嶅嚱鏁扮殑,鑰宭ongjmp鐢氳嚦鍙互璺沖埌鍏朵粬鏂囦歡鐨勫嚱鏁頒腑鍘?浼拌灝辨槸涓轟粈涔堣鍦ㄥ悕瀛楅噷鍔犱釜long鐨勫師鍥犲惂,:)).
浣?longjmp鍙兘璺沖洖鍒版浘緇忓幓榪囩殑鍦版柟,鑰宻etjmp姝f槸鏍囪鍒拌繃鐨勫湴鏂?鎵浠ヤ粠榪欒搴︽潵鎯崇殑璇?longjmp鏇村儚鏄?浠庝綍澶勬潵"鑰屼笉鏄痝oto"鍘誨摢閲?.

榪欎篃鍙互鎵灝辨槸C++涓? catch "," throw "聽鐨勪竴涓搗婧愬惂.

shaohua 2006-11-04 21:18 鍙戣〃璇勮
]]>
鍖堢墮鍒╁懡鍚嶆硶鐨勬潵鍘嗗拰浠嬬粛http://m.shnenglu.com/xushaohua/archive/2006/11/02/14591.htmlshaohuashaohuaThu, 02 Nov 2006 15:07:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/02/14591.htmlhttp://m.shnenglu.com/xushaohua/comments/14591.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/02/14591.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/14591.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/14591.html
涓句緥鏉ヨ錛岃〃鍗曠殑鍚嶇О涓篺orm錛岄偅涔堝湪鍖堢墮鍒╁懡鍚嶆硶涓彲浠ョ畝鍐欎負frm錛屽垯褰撹〃鍗曞彉閲忓悕縐頒負Switchboard鏃訛紝鍙橀噺鍏ㄧО搴旇涓篺rmSwitchboard銆傝繖鏍峰彲浠ュ緢瀹規槗浠庡彉閲忓悕鐪嬪嚭Switchboard鏄竴涓〃鍗曪紝鍚屾牱錛屽鏋滄鍙橀噺綾誨瀷涓烘爣絳撅紝閭d箞灝卞簲鍛藉悕鎴恖blSwitchboard銆傚彲浠ョ湅鍑猴紝鍖堢墮鍒╁懡鍚嶆硶闈炲父渚夸簬璁板繂錛岃屼笖浣垮彉閲忓悕闈炲父娓呮櫚鏄撴噦錛岃繖鏍鳳紝澧炲己浜嗕唬鐮佺殑鍙鎬э紝鏂逛究鍚勭▼搴忓憳涔嬮棿鐩鎬簰浜ゆ祦浠g爜銆?

榪欑鍛藉悕鎶鏈槸鐢變竴浣嶈兘騫茬殑Microsoft紼嬪簭鍛樻煡灝旀柉路瑗胯挋灝?Charles Simonyi) 鎻愬嚭鐨勶紝浠栧嚭鐢熷湪鍖堢墮鍒┿傚湪 Microsoft 鍏徃涓拰浠栦竴璧峰伐浣滅殑浜鴻鏁欎細浣跨敤榪欑綰﹀畾銆傝繖瀵逛粬浠潵璇翠竴鍒囬兘寰堟甯搞備絾瀵歸偅浜?Simonyi 棰嗗鐨勯」鐩粍涔嬪鐨勪漢鏉ヨ鍗存劅鍒板緢濂囩壒錛屼粬浠涓鴻繖鏄鏉跨殑琛ㄨ揪鏂瑰紡錛岀敋鑷寵甯︽湁榪欐牱濂囨殑澶栬鏄洜涓哄畠鏄敤鍖堢墮鍒╂枃鍐欑殑銆備粠姝よ繖縐嶅懡鍚嶆柟寮忓氨琚彨鍋氬寛鐗欏埄鍛藉悕娉曘?

鎹榪欑鍛藉悕娉曟槸涓浣嶅彨 Charles Simonyi 鐨勫寛鐗欏埄紼嬪簭鍛樺彂鏄庣殑錛屽悗鏉ヤ粬鍦ㄥ井杞憜浜嗗嚑騫達紝浜庢槸
榪欑鍛藉悕娉曞氨閫氳繃寰蔣鐨勫悇縐嶄駭鍝佸拰鏂囨。璧勬枡鍚戜笘鐣屼紶鎾紑浜嗐傜幇鍦紝澶ч儴鍒嗙▼搴忓憳涓嶇鑷繁浣跨敤
浠涔堣蔣浠惰繘琛屽紑鍙戯紝鎴栧鎴栧皯閮戒嬌鐢ㄤ簡榪欑鍛藉悕娉曘傝繖縐嶅懡鍚嶆硶鐨勫嚭鍙戠偣鏄妸閲忓悕鍙樻寜錛氬睘鎬?綾誨瀷
+瀵硅薄 鎻忚堪鐨勯『搴忕粍鍚堣搗鏉ワ紝浠ヤ嬌紼嬪簭鍛樹綔鍙橀噺鏃跺鍙橀噺鐨勭被鍨嬪拰鍏跺畠灞炴ф湁鐩磋鐨勪簡瑙o紝涓嬮潰
鏄疕N鍙橀噺鍛藉悕瑙勮寖錛屽叾涓篃鏈変竴浜涙槸鎴戜釜浜虹殑鍋忓悜錛?

灞炴ч儴鍒?
鍏ㄥ眬鍙橀噺
g_
甯擱噺
c_
c++綾繪垚鍛樺彉閲?
m_
闈欐佸彉閲?
s_

綾誨瀷閮ㄥ垎
鎸囬拡
p
鍑芥暟
fn
鏃犳晥
v
鍙ユ焺
h
闀挎暣鍨?
l
甯冨皵
b
嫻偣鍨嬶紙鏈夋椂涔熸寚鏂囦歡錛?
f
鍙屽瓧
dw
瀛楃涓?
sz
鐭暣鍨?
n
鍙岀簿搴︽誕鐐?
d
璁℃暟
c錛堥氬父鐢╟nt錛?
瀛楃
ch錛堥氬父鐢╟錛?
鏁村瀷
i錛堥氬父鐢╪錛?
瀛楄妭
by
瀛?
w
瀹炲瀷
r
鏃犵鍙?
u

鎻忚堪閮ㄥ垎
鏈澶?
Max
鏈灝?
Min
鍒濆鍖?
Init
涓存椂鍙橀噺
T錛堟垨Temp錛?
婧愬璞?
Src
鐩殑瀵硅薄
Dest



榪欓噷欏轟究鍐欏嚑涓緥瀛愶細
hwnd 錛?h 鏄被鍨嬫弿榪幫紝琛ㄧず鍙ユ焺錛?wnd 鏄彉閲忓璞℃弿榪幫紝琛ㄧず紿楀彛錛屾墍浠?hwnd 琛ㄧず紿楀彛鍙ユ焺錛?
pfnEatApple 錛?pfn 鏄被鍨嬫弿榪幫紝琛ㄧず鎸囧悜鍑芥暟鐨勬寚閽堬紝 EatApple 鏄彉閲忓璞℃弿榪幫紝鎵浠ュ畠琛ㄧず
鎸囧悜 EatApple 鍑芥暟鐨勫嚱鏁版寚閽堝彉閲忋?
g_cch 錛?g_ 鏄睘鎬ф弿榪幫紝琛ㄧず鍏ㄥ眬鍙橀噺錛宑 鍜?ch 鍒嗗埆鏄鏁扮被鍨嬪拰瀛楃綾誨瀷錛屼竴璧瘋〃紺哄彉閲忕被
鍨嬶紝榪欓噷蹇界暐浜嗗璞℃弿榪幫紝鎵浠ュ畠琛ㄧず涓涓瀛楃榪涜璁℃暟鐨勫叏灞鍙橀噺銆?
涓婇潰灝辨槸HN鍛藉悕娉曠殑涓鑸鍒欍?


灝忕粨:鍖堢墮鍒╁懡鍚嶆硶

鍖堢墮鍒╁懡鍚嶆硶


MFC銆佸彞鏌勩佹帶浠跺強緇撴瀯鐨勫懡鍚嶈鑼?Windows綾誨瀷 鏍鋒湰鍙橀噺 MFC綾?鏍鋒湰鍙橀噺
HWND hWnd錛?CWnd* pWnd錛?
HDLG hDl*錛?**ialog* pDlg錛?
HDC hDC錛?CDC* pDC錛?
HGDIOBJ hGdiObj錛?CGdiObject* pGdiObj錛?
HPEN hPen錛?CPen* pPen錛?
HBRUSH hBrush錛?CBrush* pBrush錛?
HFONT hFont錛?CFont* pFont錛?
HBITMAP hBitmap錛?CBitmap* pBitmap錛?
HPALETTE hPaltte錛?CPalette* pPalette錛?
HRGN hRgn錛?CRgn* pRgn錛?
HMENU hMenu錛?CMenu* pMenu錛?
HWND hCtl錛?CState* pState錛?
HWND hCtl錛?CButton* pButton錛?
HWND hCtl錛?CEdit* pEdit錛?
HWND hCtl錛?CListBox* pListBox錛?
HWND hCtl錛?CComboBox* pComboBox錛?
HWND hCtl錛?CScrollBar* pScrollBar錛?
HSZ hszStr錛?CString pStr錛?
POINT pt錛?CPoint pt錛?
SIZE size錛?CSize size錛?
RECT rect錛?CRect rect錛?


涓鑸墠緙鍛藉悕瑙勮寖 鍓嶇紑 綾誨瀷 瀹炰緥
C 綾繪垨緇撴瀯 CDocument錛孋PrintInfo
m_ 鎴愬憳鍙橀噺 m_pDoc錛宮_nCustomers


鍙橀噺鍛藉悕瑙勮寖 鍓嶇紑 綾誨瀷 鎻忚堪 瀹炰緥
ch char 8浣嶅瓧絎?chGrade
ch TCHAR 濡傛灉_UNICODE瀹氫箟錛屽垯涓?6浣嶅瓧絎?chName
b BOOL 甯冨皵鍊?bEnable
n int 鏁村瀷錛堝叾澶у皬渚濊禆浜庢搷浣滅郴緇燂級 nLength
n UINT 鏃犵鍙峰鹼紙鍏跺ぇ灝忎緷璧栦簬鎿嶄綔緋葷粺錛?nHeight
w WORD 16浣嶆棤絎﹀彿鍊?wPos
l LONG 32浣嶆湁絎﹀彿鏁村瀷 lOffset
dw DWORD 32浣嶆棤絎﹀彿鏁村瀷 dwRange
p * 鎸囬拡 pDoc
lp FAR* 榪滄寚閽?lpszName
lpsz LPSTR 32浣嶅瓧絎︿覆鎸囬拡 lpszName
lpsz LPCSTR 32浣嶅父閲忓瓧絎︿覆鎸囬拡 lpszName
lpsz LPCTSTR 濡傛灉_UNICODE瀹氫箟錛屽垯涓?2浣嶅父閲忓瓧絎︿覆鎸囬拡 lpszName
h handle Windows瀵硅薄鍙ユ焺 hWnd
lpfn callback 鎸囧悜CALLBACK鍑芥暟鐨勮繙鎸囬拡


鍓嶇紑 絎﹀彿綾誨瀷 瀹炰緥 鑼冨洿
IDR_ 涓嶅悓綾誨瀷鐨勫涓祫婧愬叡浜爣璇?IDR_MAIINFRAME 1锝?x6FFF
IDD_ 瀵硅瘽妗嗚祫婧?IDD_SPELL_CHECK 1锝?x6FFF
HIDD_ 瀵硅瘽妗嗚祫婧愮殑Help涓婁笅鏂?HIDD_SPELL_CHECK 0x20001锝?x26FF
IDB_ 浣嶅浘璧勬簮 IDB_COMPANY_LOGO 1锝?x6FFF
IDC_ 鍏夋爣璧勬簮 IDC_PENCIL 1锝?x6FFF
IDI_ 鍥炬爣璧勬簮 IDI_NOTEPAD 1锝?x6FFF
ID_ 鏉ヨ嚜鑿滃崟欏規垨宸ュ叿鏍忕殑鍛戒護 ID_TOOLS_SPELLING 0x8000锝?xDFFF
HID_ 鍛戒護Help涓婁笅鏂?HID_TOOLS_SPELLING 0x18000锝?x1DFFF
IDP_ 娑堟伅妗嗘彁紺?IDP_INVALID_PARTNO 8锝?xDEEF
HIDP_ 娑堟伅妗咹elp涓婁笅鏂?HIDP_INVALID_PARTNO 0x30008锝?x3DEFF
IDS_ 涓茶祫婧?IDS_COPYRIGHT 1锝?x7EEF
IDC_ 瀵硅瘽妗嗗唴鐨勬帶浠?IDC_RECALC 8锝?xDEEF


Microsoft MFC瀹忓懡鍚嶈鑼?鍚嶇О 綾誨瀷
_AFXDLL 鍞竴鐨勫姩鎬佽繛鎺ュ簱錛圖ynamic Link Library錛孌LL錛夌増鏈?
_ALPHA 浠呯紪璇慏EC Alpha澶勭悊鍣?
_DEBUG 鍖呮嫭璇婃柇鐨勮皟璇曠増鏈?
_MBCS 緙栬瘧澶氬瓧鑺傚瓧絎﹂泦
_UNICODE 鍦ㄤ竴涓簲鐢ㄧ▼搴忎腑鎵撳紑Unicode
AFXAPI MFC鎻愪緵鐨勫嚱鏁?
CALLBACK 閫氳繃鎸囬拡鍥炶皟鐨勫嚱鏁?


搴撴爣璇嗙鍛藉悕娉?鏍囪瘑絎?鍊煎拰鍚箟
u ANSI錛圢錛夋垨Unicode錛圲錛?
d 璋冭瘯鎴栧彂琛岋細D = 璋冭瘯錛涘拷鐣ユ爣璇嗙涓哄彂琛屻?


闈欐佸簱鐗堟湰鍛藉悕瑙勮寖 搴?鎻忚堪
NAFXCWD.LIB 璋冭瘯鐗堟湰錛歁FC闈欐佽繛鎺ュ簱
NAFXCW.LIB 鍙戣鐗堟湰錛歁FC闈欐佽繛鎺ュ簱
UAFXCWD.LIB 璋冭瘯鐗堟湰錛氬叿鏈塙nicode鏀寔鐨凪FC闈欐佽繛鎺ュ簱
UAFXCW.LIB 鍙戣鐗堟湰錛氬叿鏈塙nicode鏀寔鐨凪FC闈欐佽繛鎺ュ簱


鍔ㄦ佽繛鎺ュ簱鍛藉悕瑙勮寖 鍚嶇О 綾誨瀷
_AFXDLL 鍞竴鐨勫姩鎬佽繛鎺ュ簱錛圖LL錛夌増鏈?
WINAPI Windows鎵鎻愪緵鐨勫嚱鏁?


Windows.h涓柊鐨勫懡鍚嶈鑼?綾誨瀷 瀹氫箟鎻忚堪
WINAPI 浣跨敤鍦ˋPI澹版槑涓殑FAR PASCAL浣嶇疆錛屽鏋滄鍦ㄧ紪鍐欎竴涓叿鏈夊鍑篈PI浜哄彛鐐圭殑DLL錛屽垯鍙互鍦ㄨ嚜宸辯殑API涓嬌鐢ㄨ綾誨瀷
CALLBACK 浣跨敤鍦ㄥ簲鐢ㄧ▼搴忓洖鍙緥紼嬶紝濡傜獥鍙e拰瀵硅瘽妗嗚繃紼嬩腑鐨凢AR PASCAL鐨勪綅緗?
LPCSTR 涓嶭PSTR鐩稿悓錛屽彧鏄疞PCSTR鐢ㄤ簬鍙涓叉寚閽堬紝鍏跺畾涔夌被浼鹼紙const cha* **R*錛?
UINT 鍙Щ妞嶇殑鏃犵鍙鋒暣鍨嬬被鍨嬶紝鍏跺ぇ灝忕敱涓繪満鐜鍐沖畾錛堝浜嶹indows NT鍜學indows 9x涓?2浣嶏級錛涘畠鏄痷nsigned int鐨勫悓涔夎瘝
LRESULT 紿楀彛紼嬪簭榪斿洖鍊肩殑綾誨瀷
LPARAM 澹版槑lParam鎵浣跨敤鐨勭被鍨嬶紝lParam鏄獥鍙g▼搴忕殑絎洓涓弬鏁?
WPARAM 澹版槑wParam鎵浣跨敤鐨勭被鍨嬶紝wParam鏄獥鍙g▼搴忕殑絎笁涓弬鏁?
LPVOID 涓鑸寚閽堢被鍨嬶紝涓庯紙void *錛夌浉鍚岋紝鍙互鐢ㄦ潵浠f浛LPSTR

shaohua 2006-11-02 23:07 鍙戣〃璇勮
]]>
鍥炶皟鍑芥暟http://m.shnenglu.com/xushaohua/archive/2006/11/02/14584.htmlshaohuashaohuaThu, 02 Nov 2006 14:58:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/11/02/14584.htmlhttp://m.shnenglu.com/xushaohua/comments/14584.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/11/02/14584.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/14584.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/14584.html聽聽聽 鍥炶皟鍑芥暟鏄竴涓▼搴忓憳涓嶈兘鏄懼紡璋冪敤鐨勫嚱鏁幫紱閫氳繃灝嗗洖璋冨嚱鏁扮殑鍦板潃浼犵粰璋冪敤鑰呬粠鑰屽疄鐜拌皟鐢ㄣ?br />
浜屼袱涓猟emo

----------------------------------------------------------------------------------------------------------------
void caller(void(*ptr)())
{
ptr(); /* 璋冪敤ptr鎸囧悜鐨勫嚱鏁?*/
}

void func();

int main()
{
p = func;
caller(p);聽聽聽 /* 浼犻掑嚱鏁板湴鍧鍒癱aller ,caller璋冪敤鎸囬拡p鎸囧悜鐨勫嚱鏁?/
}

聽濡傛灉璧嬩簡涓嶅悓鐨勫肩粰p錛堜笉鍚屽嚱鏁板湴鍧錛夛紝閭d箞璋冪敤鑰呭皢璋冪敤涓嶅悓鍦板潃鐨勫嚱鏁般傝祴鍊煎彲浠ュ彂鐢熷湪榪愯鏃訛紝榪欐牱浣夸綘鑳藉疄鐜板姩鎬佺粦瀹氥?br />-------------------------------------------------------------------------------------------------------------

typedef int(*CallBack)(char *p) ; // 澹版槑CallBack 綾誨瀷鐨勫嚱鏁版寚閽?

int A(char *p); // 鍥炶皟鍑芥暟

B(CallBack lpCall,char *pProvide)
{
銆........... // B 鐨勮嚜宸卞疄鐜板姛鑳借鍙?br />銆lpCall(PpProvide); // 鍊熷姪鍥炶皟瀹屾垚鐨勫姛鑳?錛屼篃灝辨槸A鍑芥暟鏉ュ鐞嗙殑銆?
銆........... // B 鐨勮嚜宸卞疄鐜板姛鑳借鍙?br />}
// -------------- 浣跨敤渚嬪瓙 -------------
main()
{
char *p = "hello!";
B(A, p);
}


shaohua 2006-11-02 22:58 鍙戣〃璇勮
]]>
MFC涓幏鍙栫▼搴忚繍琛岀殑璺緞http://m.shnenglu.com/xushaohua/archive/2006/10/31/14443.htmlshaohuashaohuaTue, 31 Oct 2006 13:56:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/10/31/14443.htmlhttp://m.shnenglu.com/xushaohua/comments/14443.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/10/31/14443.html#Feedback2http://m.shnenglu.com/xushaohua/comments/commentRss/14443.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/14443.html涓銆佸父瑙勭殑鍋氭硶錛?br />1.鐢ˋPI GetModuleFileName鏉ヨ幏鍙栧彲鎵ц琛屾枃浠剁殑璺緞錛?br />2.灝嗚幏鍙栫殑瀛楃涓蹭腑鐨勬渶鍚庝竴涓?'\\'涔嬪悗鐨勫瓧絎﹀叏閮ㄥ幓鎺夛紱
3.鍓╀笅鐨勫瓧絎︿覆鍗蟲槸鎴戜滑鎵闇瑕佺殑錛?br />
聽1CString聽CXXXX::GetPath()
聽2{
聽3聽聽聽聽char聽path[256]聽="\0";
聽4聽聽聽聽GetModuleFileName(NULL,聽path,聽256);
聽5聽聽聽聽char*p聽=聽path聽+聽strlen(path);
聽6聽聽聽聽while(p聽!=聽NULL聽&&聽p>path聽&&*p聽!='\\')
聽7聽聽聽聽{
聽8聽聽聽聽聽聽聽聽聽聽聽聽p--;
聽9聽聽聽聽}

10聽聽聽聽char聽temp[256]聽="\0";
11聽聽聽聽strncpy(temp,path,(p-path));
12聽聽聽聽return聽CString(temp);
13}

浜屻佸埄鐢–搴撳嚱鏁版潵鍘繪帀鍚庣紑
1TCHAR聽path[MAX_PATH];
2聽GetModuleFileName(NULL,聽path,聽MAX_PATH);
3*strrchr(path,'\\')聽='\0';聽聽聽聽
聽聽聽聽聽聽 // path 鍗充負闇瑕佺殑璺緞


shaohua 2006-10-31 21:56 鍙戣〃璇勮
]]>
CString, BSTR, LPCTSTR http://m.shnenglu.com/xushaohua/archive/2006/10/21/13954.htmlshaohuashaohuaSat, 21 Oct 2006 08:12:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/10/21/13954.htmlhttp://m.shnenglu.com/xushaohua/comments/13954.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/10/21/13954.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/13954.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/13954.html
CString 鏄竴涓畬鍏ㄧ嫭绔嬬殑綾伙紝鍔ㄦ佺殑TCHAR鏁扮粍錛屽皝瑁呬簡 + 絳夋搷浣滅鍜屽瓧絎︿覆鎿嶄綔鏂規硶銆?br>typedef OLECHAR FAR* BSTR;
typedef const char * LPCTSTR;

vc++涓悇縐嶅瓧絎︿覆鐨勮〃紺烘硶

棣栧厛char* 鏄寚鍚慉NSI瀛楃鏁扮粍鐨勬寚閽堬紝鍏朵腑姣忎釜瀛楃鍗犳嵁8浣嶏紙鏈夋晥鏁版嵁鏄櫎鎺夋渶楂樹綅鐨勫叾浠?浣嶏級錛岃繖閲屼繚鎸佷簡涓庝紶緇熺殑C,C++鐨勫吋瀹廣?/p>

LP鐨勫惈涔夋槸闀挎寚閽?long pointer)銆侺PSTR鏄竴涓寚鍚戜互‘\0’緇撳熬鐨凙NSI瀛楃鏁扮粍鐨勬寚閽堬紝涓巆har*鍙互浜掓崲浣跨敤錛屽湪win32涓緝澶氬湴浣跨敤LPSTR銆?br>鑰孡PCSTR涓鍔犵殑‘C’鐨勫惈涔夋槸“CONSTANT”錛堝父閲忥級錛岃〃鏄庤繖縐嶆暟鎹被鍨嬬殑瀹炰緥涓嶈兘琚嬌鐢ㄥ畠鐨凙PI鍑芥暟鏀瑰彉錛岄櫎姝や箣澶栵紝瀹冧笌LPSTR鏄瓑鍚岀殑銆?br>1.LP琛ㄧず闀挎寚閽?鍦╳in16涓嬫湁闀挎寚閽?LP)鍜岀煭鎸囬拡(P)鐨勫尯鍒?鑰屽湪win32涓嬫槸娌℃湁鍖哄埆鐨?閮芥槸32浣?鎵浠ヨ繖閲岀殑LP鍜孭鏄瓑浠風殑.
2.C琛ㄧずconst
3.T鏄粈涔堜笢瑗垮憿,鎴戜滑鐭ラ亾TCHAR鍦ㄩ噰鐢║nicode鏂瑰紡緙栬瘧鏃舵槸wchar_t,鍦ㄦ櫘閫氭椂緙栬瘧鎴恈har.

涓轟簡婊¤凍紼嬪簭浠g爜鍥介檯鍖栫殑闇瑕侊紝涓氱晫鎺ㄥ嚭浜哢nicode鏍囧噯錛屽畠鎻愪緵浜嗕竴縐嶇畝鍗曞拰涓鑷寸殑琛ㄨ揪瀛楃涓茬殑鏂規硶錛屾墍鏈夊瓧絎︿腑鐨勫瓧鑺傞兘鏄?6浣嶇殑鍊鹼紝鍏舵暟閲忎篃鍙互婊¤凍宸笉澶氫笘鐣屼笂鎵鏈変功闈㈣璦瀛楃鐨勭紪鐮侀渶姹傦紝寮鍙戠▼搴忔椂浣跨敤Unicode錛堢被鍨嬩負wchar_t)鏄竴縐嶈榧撳姳鐨勫仛娉曘?/p>

LPWSTR涓嶭PCWSTR鐢辨浜х敓錛屽畠浠殑鍚箟綾諱技浜嶭PSTR涓嶭PCSTR錛屽彧鏄瓧絎︽暟鎹槸16浣嶇殑wchar_t鑰屼笉鏄痗har銆?/p>

鐒跺悗涓轟簡瀹炵幇涓ょ緙栫爜鐨勯氱敤錛屾彁鍑轟簡TCHAR鐨勫畾涔夛細
濡傛灉瀹氫箟_UNICODE錛屽0鏄庡涓嬶細
typedef wchar_t TCHAR;
濡傛灉娌℃湁瀹氫箟_UNICODE錛屽垯澹版槑濡備笅錛?br>typedef char TCHAR;

LPTSTR鍜孡PCTSTR涓殑鍚箟灝辨槸姣忎釜瀛楃鏄繖鏍風殑TCHAR銆?/p>

CString綾諱腑鐨勫瓧絎﹀氨鏄澹版槑涓篢CHAR綾誨瀷鐨勶紝瀹冩彁渚涗簡涓涓皝瑁呭ソ鐨勭被渚涚敤鎴鋒柟渚垮湴浣跨敤銆?/p>

LPCTSTR:
     #ifdef _UNICODE
        typedef const wchar_t * LPCTSTR;
     #else
        typedef const char * LPCTSTR;
     #endif

濡備綍灝咰String綾誨瀷鐨勫彉閲忚祴緇檆har*綾誨瀷鐨勫彉閲?br>1銆丟etBuffer鍑芥暟錛?br>浣跨敤CString::GetBuffer鍑芥暟銆?br>char *p;
CString str="hello";
p=str.GetBuffer(str.GetLength());
str.ReleaseBuffer();

灝咰String杞崲鎴恈har * 鏃?br>CString str("aaaaaaa");
strcpy(str.GetBuffer(10),"aa");
str.ReleaseBuffer();
褰撴垜浠渶瑕佸瓧絎︽暟緇勬椂璋冪敤GetBuffer(int n),鍏朵腑n涓烘垜浠渶瑕佺殑瀛楃鏁扮粍鐨勯暱搴?浣跨敤瀹屾垚鍚庝竴瀹氳椹笂璋冪敤ReleaseBuffer();
榪樻湁寰堥噸瑕佺殑涓鐐瑰氨鏄?鍦ㄨ兘浣跨敤const char *鐨勫湴鏂?灝變笉瑕佷嬌鐢╟har *

2銆乵emcpy錛?
CString mCS=_T("cxl");
char mch[20];
memcpy(mch,mCS,20);

3銆佺敤LPCTSTR寮哄埗杞崲錛?灝介噺涓嶄嬌鐢?br>char *ch;
CString str;
ch=(LPSTR)(LPCTSTR)str;

CString str = "good";
char *tmp;
sprintf(tmp,"%s",(LPTSTR)(LPCTSTR)str);

4銆?br>CString Msg;
Msg=Msg+"abc";
LPTSTR lpsz;
lpsz = new TCHAR[Msg.GetLength()+1];
_tcscpy(lpsz, Msg);
char * psz;
strcpy(psz,lpsz);


CString綾誨悜const char *杞崲
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));
鎴栬呭涓?
strncpy(a,str,sizeof(a));
浠ヤ笂涓ょ鐢ㄦ硶閮芥槸姝g‘鍦? 鍥犱負strncpy鐨勭浜屼釜鍙傛暟綾誨瀷涓篶onst char *.鎵浠ョ紪璇戝櫒浼氳嚜鍔ㄥ皢CString綾昏漿鎹㈡垚const char *.

CString杞琇PCTSTR (const char *)
CString cStr;
const char *lpctStr=(LPCTSTR)cStr;

LPCTSTR杞珻String
LPCTSTR lpctStr;
CString cStr=lpctStr;

灝哻har*綾誨瀷鐨勫彉閲忚祴緇機String鍨嬬殑鍙橀噺
鍙互鐩存帴璧嬪鹼紝濡傦細
CString myString = "This is a test";
涔熷彲浠ュ埄鐢ㄦ瀯閫犲嚱鏁幫紝濡傦細
CString s1("Tom");

灝咰String綾誨瀷鐨勫彉閲忚祴緇檆har []綾誨瀷(瀛楃涓?鐨勫彉閲?br>1銆乻printf()鍑芥暟
CString str = "good";
char tmp[200] ;
sprintf(tmp, "%s",(LPCSTR)str);  
(LPCSTR)str榪欑寮哄埗杞崲鐩稿綋浜?LPTSTR)(LPCTSTR)str
CString綾葷殑鍙橀噺闇瑕佽漿鎹負(char*)鐨勬椂,浣跨敤(LPTSTR)(LPCTSTR)str

鐒惰岋紝LPCTSTR鏄痗onst char *,涔熷氨鏄錛屽緱鍒扮殑瀛楃涓叉槸涓嶅彲鍐欑殑錛佸皢鍏跺己鍒惰漿鎹㈡垚LPTSTR鍘繪帀const錛屾槸鏋佷負鍗遍櫓鐨勶紒
涓涓嶇暀紲炲氨浼氬畬铔嬶紒瑕佸緱鍒癱har *,搴旇鐢℅etBuffer()鎴朑etBufferSetLength()錛岀敤瀹屽悗鍐嶈皟鐢≧eleaseBuffer()銆?/p>

2銆乻trcpy()鍑芥暟
CString str;
char c[256];
strcpy(c, str);

char mychar[1024];
CString source="Hello";
strcpy((char*)&mychar,(LPCTSTR)source);


鍏充簬CString鐨勪嬌鐢?br>1銆佹寚瀹?CString 褰㈠弬
    瀵逛簬澶у鏁伴渶瑕佸瓧絎︿覆鍙傛暟鐨勫嚱鏁幫紝鏈濂藉皢鍑芥暟鍘熷瀷涓殑褰㈠弬鎸囧畾涓轟竴涓寚鍚戝瓧絎?(LPCTSTR) 鑰岄潪 CString 鐨?const 鎸囬拡銆?br>褰撳皢褰㈠弬鎸囧畾涓烘寚鍚戝瓧絎︾殑 const 鎸囬拡鏃訛紝鍙皢鎸囬拡浼犻掑埌 TCHAR 鏁扮粍錛堝瀛楃涓?["hi there"]錛夋垨浼犻掑埌 CString 瀵硅薄銆?br>CString 瀵硅薄灝嗚嚜鍔ㄨ漿鎹㈡垚 LPCTSTR銆備換浣曡兘澶熶嬌鐢?LPCTSTR 鐨勫湴鏂逛篃鑳藉浣跨敤 CString 瀵硅薄銆?/p>

2銆佸鏋滄煇涓艦鍙傚皢涓嶄細琚慨鏀癸紝鍒欎篃灝嗚鍙傛暟鎸囧畾涓哄父鏁板瓧絎︿覆寮曠敤錛堝嵆 const CString&錛夈傚鏋滃嚱鏁拌淇敼璇ュ瓧絎︿覆錛?br>鍒欏垹闄?const 淇グ絎︺傚鏋滈渶瑕侀粯璁や負絀哄鹼紝鍒欏皢鍏跺垵濮嬪寲涓虹┖瀛楃涓?[""]錛屽涓嬫墍紺猴細
void AddCustomer( const CString& name, const CString& address, const CString& comment = "" );

3銆佸浜庡ぇ澶氭暟鍑芥暟緇撴灉錛屾寜鍊艱繑鍥?CString 瀵硅薄鍗沖彲銆?/p>


涓茬殑鍩烘湰榪愮畻
    瀵逛簬涓茬殑鍩烘湰榪愮畻錛屽緢澶氶珮綰ц璦鍧囨彁渚涗簡鐩稿簲鐨勮繍綆楃鎴栨爣鍑嗙殑搴撳嚱鏁版潵瀹炵幇銆?br>涓哄彊榪版柟渚匡紝鍏堝畾涔夊嚑涓浉鍏崇殑鍙橀噺錛?br>    char s1[20]="dir/bin/appl",s2[20]="file.asm",s3[30],*p;
    int result;
    涓嬮潰浠璇█涓覆榪愮畻浠嬬粛涓茬殑鍩烘湰榪愮畻
1銆佹眰涓查暱
        int strlen(char *s);         //姹備覆s鐨勯暱搴?br>    銆愪緥銆憄rintf("%d",strlen(s1));    //杈撳嚭s1鐨勪覆闀?2

2銆佷覆澶嶅埗
    char *strcpy(char *to,*from)錛?/灝唂rom涓插鍒跺埌to涓蹭腑錛屽茍榪斿洖to寮濮嬪鎸囬拡
    銆愪緥銆憇trcpy(s3,s1);  //s3="dir/bin/appl",s1涓蹭笉鍙?/p>


3銆佽仈鎺?br>    char *strcat(char *to,char *from);//灝唂rom涓插鍒跺埌to涓茬殑鏈熬錛?br>                                      //騫惰繑鍥瀟o涓插紑濮嬪鐨勬寚閽?br>    銆愪緥銆憇trcat(s3,"/");    //s3="dir/bin/appl/"
         strcat(s3,s2);     //s3="dir/bin/appl/file.asm"

4銆佷覆姣旇緝
    int strcmp(char *s1,char *s2);//姣旇緝s1鍜宻2鐨勫ぇ灝忥紝
     //褰搒1<s2銆乻1>s2鍜宻1=s2鏃訛紝鍒嗗埆榪斿洖灝忎簬0銆佸ぇ浜?鍜岀瓑浜?鐨勫?
    銆愪緥銆憆esult=strcmp("baker","Baker");    //result>0
            result=strcmp("12","12");       //result=0
            result=strcmp("Joe","joseph")   //result<0

5銆佸瓧絎﹀畾浣?br>    char *strchr(char *s,char c);//鎵綾鍦ㄥ瓧絎︿覆s涓涓嬈″嚭鐜扮殑浣嶇疆錛?br>                                 //鑻ユ壘鍒幫紝鍒欒繑鍥炶浣嶇疆錛屽惁鍒欒繑鍥濶ULL
    銆愪緥銆憄=strchr(s2,'.');      //p鎸囧悜"file"涔嬪悗鐨勪綅緗?br>銆銆銆銆銆if(p) strcpy(p,".cpp");     //s2="file.cpp"

  娉ㄦ剰錛?br>    銆鈶犱笂榪版搷浣滄槸鏈鍩烘湰鐨勶紝鍏朵腑鍚?4涓搷浣滆繕鏈夊彉縐嶅艦寮忥細strncpy錛宻trncath鍜宻trnchr銆?br>    銆鈶″叾瀹冪殑涓叉搷浣滆C鐨?lt;string.h>銆傚湪涓嶅悓鐨勯珮綰ц璦涓紝瀵逛覆榪愮畻鐨勭綾誨強絎﹀彿閮戒笉灝界浉鍚?br>    銆鈶㈠叾浣欑殑涓叉搷浣滀竴鑸彲鐢辮繖浜涘熀鏈搷浣滅粍鍚堣屾垚

    銆愪緥銆戞眰瀛愪覆鐨勬搷浣滃彲濡備笅瀹炵幇錛?br>    void substr(char *sub,char *s,int pos,int len){
         //s鍜宻ub鏄瓧絎︽暟緇勶紝鐢╯ub榪斿洖涓瞫鐨勭pos涓瓧絎﹁搗闀垮害涓簂en鐨勫瓙涓?br>         //鍏朵腑0<=pos<=strlen(s)-1,涓旀暟緇剆ub鑷沖皯鍙綰砽en+1涓瓧絎︺?br>        if (pos<0||pos>strlen(s)-1||len<0)
            Error("parameter error!");
        strncpy(sub,&s[pos],len);      //浠巗[pos]璧峰鍒惰嚦澶歭en涓瓧絎﹀埌sub
--- http://m.shnenglu.com/colelhx/archive/2007/09/13/32116.html



shaohua 2006-10-21 16:12 鍙戣〃璇勮
]]>
綆鍗曟枃浠跺垎鍓詫紙06宸濆ぇ鑰冪爺鏈鍚庝竴棰橈級http://m.shnenglu.com/xushaohua/archive/2006/10/18/13819.htmlshaohuashaohuaWed, 18 Oct 2006 08:50:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/10/18/13819.htmlhttp://m.shnenglu.com/xushaohua/comments/13819.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/10/18/13819.html#Feedback1http://m.shnenglu.com/xushaohua/comments/commentRss/13819.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/13819.html
聽1#include聽<stdio.h>
聽2#include聽<stdlib.h>
聽3
聽4int聽main(void)
聽5{
聽6聽聽聽聽FILE聽*in,*out;
聽7聽聽聽聽
聽8聽聽聽聽int聽block;
聽9聽聽聽聽char*buffer;
10聽聽聽聽int聽i;
11聽聽聽聽long聽size;
12聽聽聽聽int聽num聽=1;
13聽聽聽聽char聽src[32],dest[32],temp[32];
14聽聽聽聽printf("***********************************************\n");
15聽聽聽聽printf("璇瘋緭鍏ヨ鍒嗗壊鐨勬枃浠剁殑浣嶇疆錛毬犅?/span>");
16聽聽聽聽scanf("%s",src);
17聽聽聽聽printf("璇瘋緭鍏ヨ鍒嗗壊鎴愮殑灝忔枃浠剁殑涓暟錛毬犅?/span>");
18聽聽聽聽scanf("%d",&num);
19聽聽聽聽printf("璇瘋緭鍏ヨ鍒嗗壊鍚庢枃浠朵繚瀛樹綅緗細聽聽");
20聽聽聽聽scanf("%s",dest);
21聽聽聽聽if聽((in=聽fopen(src,"rb"))聽==聽NULL)
22聽聽聽聽{
23聽聽聽聽聽聽聽聽printf("Open聽File聽Fail\n");
24聽聽聽聽聽聽聽聽exit(0);
25聽聽聽聽}

26聽聽聽聽fseek(in,0L,2);
27聽聽聽聽size聽=聽ftell(in);
28聽聽聽聽rewind(in);
29聽聽聽聽block聽=聽size/num;聽//聽姣忎竴涓枃浠剁殑澶у皬
30聽聽聽聽buffer聽=聽(char*)malloc(block);
31
32聽聽聽聽for(i=0;i<聽num;i++)
33聽聽聽聽{
34聽聽聽聽聽聽聽聽char聽ch[32];
35聽聽聽聽聽聽聽聽strcpy(temp,dest);
36聽聽聽聽聽聽聽聽itoa((i+1),ch,10);
37聽聽聽聽聽聽聽聽strcat(temp,ch);
38聽聽聽聽聽聽聽聽strcat(temp,".dat");
39聽聽聽聽聽聽聽聽if(fread(buffer,block,1,in)!=1)
40聽聽聽聽聽聽聽聽{
41聽聽聽聽聽聽聽聽聽聽聽聽printf("Read聽File聽Error\n");
42聽聽聽聽聽聽聽聽聽聽聽聽exit(0);
43聽聽聽聽聽聽聽聽}

44聽聽聽聽聽聽聽聽if((out=聽fopen(temp,"wb"))聽==聽NULL)
45聽聽聽聽聽聽聽聽{
46聽聽聽聽聽聽聽聽聽聽聽聽printf("Open聽File聽Fail\n");
47聽聽聽聽聽聽聽聽聽聽聽聽exit(0);
48聽聽聽聽聽聽聽聽}

49聽聽聽聽聽聽聽聽if(fwrite(buffer,block,1,out)!=1)
50聽聽聽聽聽聽聽聽{
51聽聽聽聽聽聽聽聽聽聽聽聽printf("Write聽File聽Error\n");
52聽聽聽聽聽聽聽聽聽聽聽聽exit(0);
53聽聽聽聽聽聽聽聽}

54聽聽聽聽聽聽聽聽fclose(out);
55聽聽聽聽}

56聽聽聽聽fclose(in);
57聽聽聽聽free(buffer);
58聽聽聽聽printf("Cut聽Over\n");
59聽聽聽聽printf("***********************************************\n");
60聽聽聽聽return0;
61}

62
綆鍗曞氨鏄編鐨勪簡銆?img src ="http://m.shnenglu.com/xushaohua/aggbug/13819.html" width = "1" height = "1" />

shaohua 2006-10-18 16:50 鍙戣〃璇勮
]]>
(杞?鐢–璇█緙栧啓Windows鏈嶅姟紼嬪簭鐨勪簲涓楠?http://m.shnenglu.com/xushaohua/archive/2006/10/15/13714.htmlshaohuashaohuaSun, 15 Oct 2006 10:40:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/10/15/13714.htmlhttp://m.shnenglu.com/xushaohua/comments/13714.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/10/15/13714.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/13714.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/13714.html
聽聽聽聽聽Windows 鏈嶅姟琚璁$敤浜庨渶瑕佸湪鍚庡彴榪愯鐨勫簲鐢ㄧ▼搴忎互鍙婂疄鐜版病鏈夌敤鎴蜂氦浜掔殑浠誨姟銆備負浜嗗涔犺繖縐嶆帶鍒跺彴搴旂敤紼嬪簭鐨勫熀紜鐭ヨ瘑錛孋錛堜笉鏄疌++錛夋槸鏈浣抽夋嫨銆傛湰鏂囧皢寤虹珛騫跺疄鐜頒竴涓畝鍗曠殑鏈嶅姟紼嬪簭錛屽叾鍔熻兘鏄煡璇㈢郴緇熶腑鍙敤鐗╃悊鍐呭瓨鏁伴噺錛岀劧鍚庡皢緇撴灉鍐欏叆涓涓枃鏈枃浠躲傛渶鍚庯紝浣犲彲浠ョ敤鎵瀛︾煡璇嗙紪鍐欒嚜宸辯殑 Windows 鏈嶅姟銆?br />銆銆褰撳垵鎴戝啓絎竴涓?NT 鏈嶅姟鏃訛紝鎴戝埌 MSDN 涓婃壘渚嬪瓙銆傚湪閭i噷鎴戞壘鍒頒簡涓綃?Nigel Thompson 鍐欑殑鏂囩珷錛氣淐reating a Simple Win32 Service in C++鈥濓紝榪欑瘒鏂囩珷闄勫甫涓涓?C++ 渚嬪瓙銆傝櫧鐒惰繖綃囨枃绔犲緢濂藉湴瑙i噴浜嗘湇鍔$殑寮鍙戣繃紼嬶紝浣嗘槸錛屾垜浠嶇劧鎰熻緙哄皯鎴戦渶瑕佺殑閲嶈淇℃伅銆傛垜鎯崇悊瑙i氳繃浠涔堟鏋訛紝璋冪敤浠涔堝嚱鏁幫紝浠ュ強浣曟椂璋冪敤錛屼絾 C++ 鍦ㄨ繖鏂歸潰娌℃湁璁╂垜杞繪澗澶氬皯銆傞潰鍚戝璞$殑鏂規硶鍥虹劧鏂逛究錛屼絾鐢變簬鐢ㄧ被瀵瑰簳灞?Win32 鍑芥暟璋冪敤榪涜浜嗗皝瑁咃紝瀹冧笉鍒╀簬瀛︿範鏈嶅姟紼嬪簭鐨勫熀鏈煡璇嗐傝繖灝辨槸涓轟粈涔堟垜瑙夊緱 C 鏇村姞閫傚悎浜庣紪鍐欏垵綰ф湇鍔$▼搴忔垨鑰呭疄鐜扮畝鍗曞悗鍙頒換鍔$殑鏈嶅姟銆傚湪浣犲鏈嶅姟紼嬪簭鏈変簡鍏呭垎閫忓交鐨勭悊瑙d箣鍚庯紝鐢?C++ 緙栧啓鎵嶈兘娓稿垉鏈変綑銆傚綋鎴戠寮鍘熸潵鐨勫伐浣滃矖浣嶏紝涓嶅緱涓嶅悜鍙︿竴涓漢杞Щ鎴戠殑鐭ヨ瘑鐨勬椂鍊欙紝鍒╃敤鎴戠敤 C 鎵鍐欑殑渚嬪瓙灝遍潪甯稿鏄撹В閲?NT 鏈嶅姟涔嬫墍浠ョ劧銆?br />銆銆鏈嶅姟鏄竴涓繍琛屽湪鍚庡彴騫跺疄鐜板嬁闇鐢ㄦ埛浜や簰鐨勪換鍔$殑鎺у埗鍙扮▼搴忋俉indows NT/2000/XP 鎿嶄綔緋葷粺鎻愪緵涓烘湇鍔$▼搴忔彁渚涗笓闂ㄧ殑鏀寔銆備漢浠彲浠ョ敤鏈嶅姟鎺у埗闈㈡澘鏉ラ厤緗畨瑁呭ソ鐨勬湇鍔$▼搴忥紝涔熷氨鏄?Windows 2000/XP 鎺у埗闈㈡澘|綆$悊宸ュ叿涓殑鈥滄湇鍔♀濓紙鎴栧湪鈥滃紑濮嬧潀鈥滆繍琛屸濆璇濇涓緭鍏?services.msc /s鈥斺旇瘧鑰呮敞錛夈傚彲浠ュ皢鏈嶅姟閰嶇疆鎴愭搷浣滅郴緇熷惎鍔ㄦ椂鑷姩鍚姩錛岃繖鏍蜂綘灝變笉蹇呮瘡嬈″啀閲嶅惎緋葷粺鍚庤繕瑕佹墜鍔ㄥ惎鍔ㄦ湇鍔°?br />銆銆鏈枃灝嗛鍏堣В閲婂浣曞垱寤轟竴涓畾鏈熸煡璇㈠彲鐢ㄧ墿鐞嗗唴瀛樺茍灝嗙粨鏋滃啓鍏ユ煇涓枃鏈枃浠剁殑鏈嶅姟銆傜劧鍚庢寚瀵間綘瀹屾垚鐢熸垚錛屽畨瑁呭拰瀹炵幇鏈嶅姟鐨勬暣涓繃紼嬨?br />

絎竴姝ワ細涓誨嚱鏁板拰鍏ㄥ眬瀹氫箟

棣栧厛錛屽寘鍚墍闇鐨勫ご鏂囦歡銆備緥瀛愯璋冪敤 Win32 鍑芥暟錛坵indows.h錛夊拰紓佺洏鏂囦歡鍐欏叆錛坰tdio.h錛夛細

#include
#include
鎺ョ潃錛屽畾涔変袱涓父閲忥細

#define SLEEP_TIME 5000
#define LOGFILE "C:\\MyServices\\memstatus.txt"
SLEEP_TIME 鎸囧畾涓ゆ榪炵畫鏌ヨ鍙敤鍐呭瓨涔嬮棿鐨勬縐掗棿闅斻傚湪絎簩姝ヤ腑緙栧啓鏈嶅姟宸ヤ綔寰幆鐨勬椂鍊欒浣跨敤璇ュ父閲忋?br />LOGFILE 瀹氫箟鏃ュ織鏂囦歡鐨勮礬寰勶紝浣犲皢浼氱敤 WriteToLog 鍑芥暟灝嗗唴瀛樻煡璇㈢殑緇撴灉杈撳嚭鍒拌鏂囦歡錛學riteToLog 鍑芥暟瀹氫箟濡備笅錛?br />
int WriteToLog(char* str)
{
聽聽聽聽FILE* log;
聽聽聽聽log = fopen(LOGFILE, "a+");
聽聽聽聽if (log == NULL)
聽聽聽聽return -1;
聽聽聽聽fprintf(log, "%s\n", str);
聽聽聽聽fclose(log);
聽聽聽聽return 0;
}
澹版槑鍑犱釜鍏ㄥ眬鍙橀噺錛屼互渚垮湪紼嬪簭鐨勫涓嚱鏁頒箣闂村叡浜畠浠箋傛澶栵紝鍋氫竴涓嚱鏁扮殑鍓嶅悜瀹氫箟錛?br />
SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;

void ServiceMain(int argc, char** argv);
void ControlHandler(DWORD request);
int InitService();
銆銆鐜板湪錛屽噯澶囧伐浣滃凡緇忓氨緇紝浣犲彲浠ュ紑濮嬬紪鐮佷簡銆傛湇鍔$▼搴忔帶鍒跺彴紼嬪簭鐨勪竴涓瓙闆嗐傚洜姝わ紝寮濮嬩綘鍙互瀹氫箟涓涓?main 鍑芥暟錛屽畠鏄▼搴忕殑鍏ュ彛鐐廣傚浜庢湇鍔$▼搴忔潵璇達紝main 鐨勪唬鐮佷護浜烘儕璁跺湴綆鐭紝鍥犱負瀹冨彧鍒涘緩鍒嗘淳琛ㄥ茍鍚姩鎺у埗鍒嗘淳鏈恒?br />
void main()
{
聽聽聽聽SERVICE_TABLE_ENTRY ServiceTable[2];
聽聽聽聽ServiceTable[0].lpServiceName = "MemoryStatus";
聽聽聽聽ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
聽聽聽聽
聽聽聽聽ServiceTable[1].lpServiceName = NULL;
聽聽聽聽ServiceTable[1].lpServiceProc = NULL;

聽聽聽聽// 鍚姩鏈嶅姟鐨勬帶鍒跺垎媧炬満綰跨▼
聽聽聽聽StartServiceCtrlDispatcher(ServiceTable);
}
銆銆涓涓▼搴忓彲鑳藉寘鍚嫢騫蹭釜鏈嶅姟銆傛瘡涓涓湇鍔¢兘蹇呴』鍒椾簬涓撻棬鐨勫垎媧捐〃涓紙涓烘璇ョ▼搴忓畾涔変簡涓涓?ServiceTable 緇撴瀯鏁扮粍錛夈傝繖涓〃涓殑姣忎竴欏歸兘瑕佸湪 SERVICE_TABLE_ENTRY 緇撴瀯涔嬩腑銆傚畠鏈変袱涓煙錛?br />
lpServiceName: 鎸囧悜琛ㄧず鏈嶅姟鍚嶇О瀛楃涓茬殑鎸囬拡錛涘綋瀹氫箟浜嗗涓湇鍔℃椂錛岄偅涔堣繖涓煙蹇呴』鎸囧畾錛?
lpServiceProc: 鎸囧悜鏈嶅姟涓誨嚱鏁扮殑鎸囬拡錛堟湇鍔″叆鍙g偣錛夛紱
銆銆鍒嗘淳琛ㄧ殑鏈鍚庝竴欏瑰繀欏繪槸鏈嶅姟鍚嶅拰鏈嶅姟涓誨嚱鏁板煙鐨?NULL 鎸囬拡錛屾枃鏈緥瀛愮▼搴忎腑鍙涓諱竴涓湇鍔★紝鎵浠ユ湇鍔″悕鐨勫畾涔夋槸鍙夌殑銆?br />銆銆鏈嶅姟鎺у埗綆$悊鍣紙SCM錛歋ervices Control Manager錛夋槸涓涓鐞嗙郴緇熸墍鏈夋湇鍔$殑榪涚▼銆傚綋 SCM 鍚姩鏌愪釜鏈嶅姟鏃訛紝瀹冪瓑寰呮煇涓繘紼嬬殑涓葷嚎紼嬫潵璋冪敤 StartServiceCtrlDispatcher 鍑芥暟銆傚皢鍒嗘淳琛ㄤ紶閫掔粰 StartServiceCtrlDispatcher銆傝繖灝嗘妸璋冪敤榪涚▼鐨勪富綰跨▼杞崲涓烘帶鍒跺垎媧懼櫒銆傝鍒嗘淳鍣ㄥ惎鍔ㄤ竴涓柊綰跨▼錛岃綰跨▼榪愯鍒嗘淳琛ㄤ腑姣忎釜鏈嶅姟鐨?ServiceMain 鍑芥暟錛堟湰鏂囦緥瀛愪腑鍙湁涓涓湇鍔★級鍒嗘淳鍣ㄨ繕鐩戣紼嬪簭涓墍鏈夋湇鍔$殑鎵ц鎯呭喌銆傜劧鍚庡垎媧懼櫒灝嗘帶鍒惰姹備粠 SCM 浼犵粰鏈嶅姟銆?br />
娉ㄦ剰錛氬鏋?StartServiceCtrlDispatcher 鍑芥暟30縐掓病鏈夎璋冪敤錛屼究浼氭姤閿欙紝涓轟簡閬垮厤榪欑鎯呭喌錛屾垜浠繀欏誨湪 ServiceMain 鍑芥暟涓紙鍙傝鏈枃渚嬪瓙錛夋垨鍦ㄩ潪涓誨嚱鏁扮殑鍗曠嫭綰跨▼涓垵濮嬪寲鏈嶅姟鍒嗘淳琛ㄣ傛湰鏂囨墍鎻忚堪鐨勬湇鍔′笉闇瑕侀槻鑼冭繖鏍風殑鎯呭喌銆?br />
銆銆鍒嗘淳琛ㄤ腑鎵鏈夌殑鏈嶅姟鎵ц瀹屼箣鍚庯紙渚嬪錛岀敤鎴烽氳繃鈥滄湇鍔♀濇帶鍒墮潰鏉跨▼搴忓仠姝㈠畠浠級錛屾垨鑰呭彂鐢熼敊璇椂銆係tartServiceCtrlDispatcher 璋冪敤榪斿洖銆傜劧鍚庝富榪涚▼緇堟銆?br />

絎簩姝ワ細ServiceMain 鍑芥暟

銆銆Listing 1 灞曠ず浜?ServiceMain 鐨勪唬鐮併傝鍑芥暟鏄湇鍔$殑鍏ュ彛鐐廣傚畠榪愯鍦ㄤ竴涓崟鐙殑綰跨▼褰撲腑錛岃繖涓嚎紼嬫槸鐢辨帶鍒跺垎媧懼櫒鍒涘緩鐨勩係erviceMain 搴旇灝藉彲鑳芥棭鏃╀負鏈嶅姟娉ㄥ唽鎺у埗澶勭悊鍣ㄣ傝繖瑕侀氳繃璋冪敤 RegisterServiceCtrlHadler 鍑芥暟鏉ュ疄鐜般備綘瑕佸皢涓や釜鍙傛暟浼犻掔粰姝ゅ嚱鏁幫細鏈嶅姟鍚嶅拰鎸囧悜 ControlHandlerfunction 鐨勬寚閽堛?br />銆銆瀹冩寚紺烘帶鍒跺垎媧懼櫒璋冪敤 ControlHandler 鍑芥暟澶勭悊 SCM 鎺у埗璇鋒眰銆傛敞鍐屽畬鎺у埗澶勭悊鍣ㄤ箣鍚庯紝鑾峰緱鐘舵佸彞鏌勶紙hStatus錛夈傞氳繃璋冪敤 SetServiceStatus 鍑芥暟錛岀敤 hStatus 鍚?SCM 鎶ュ憡鏈嶅姟鐨勭姸鎬併?br />Listing 1 灞曠ず浜嗗浣曟寚瀹氭湇鍔$壒寰佸拰鍏跺綋鍓嶇姸鎬佹潵鍒濆鍖?ServiceStatus 緇撴瀯錛孲erviceStatus 緇撴瀯鐨勬瘡涓煙閮芥湁鍏剁敤閫旓細

dwServiceType錛氭寚紺烘湇鍔$被鍨嬶紝鍒涘緩 Win32 鏈嶅姟銆傝祴鍊?SERVICE_WIN32錛?
dwCurrentState錛氭寚瀹氭湇鍔$殑褰撳墠鐘舵併傚洜涓烘湇鍔$殑鍒濆鍖栧湪榪欓噷娌℃湁瀹屾垚錛屾墍浠ヨ繖閲岀殑鐘舵佷負 SERVICE_START_PENDING錛?
dwControlsAccepted錛氳繖涓煙閫氱煡 SCM 鏈嶅姟鎺ュ彈鍝釜鍩熴傛湰鏂囦緥瀛愭槸鍏佽 STOP 鍜?SHUTDOWN 璇鋒眰銆傚鐞嗘帶鍒惰姹傚皢鍦ㄧ涓夋璁ㄨ錛?
dwWin32ExitCode 鍜?dwServiceSpecificExitCode錛氳繖涓や釜鍩熷湪浣犵粓姝㈡湇鍔″茍鎶ュ憡閫鍑虹粏鑺傛椂寰堟湁鐢ㄣ傚垵濮嬪寲鏈嶅姟鏃跺茍涓嶉鍑猴紝鍥犳錛屽畠浠殑鍊間負 0錛?
dwCheckPoint 鍜?dwWaitHint錛氳繖涓や釜鍩熻〃紺哄垵濮嬪寲鏌愪釜鏈嶅姟榪涚▼鏃惰30縐掍互涓娿傛湰鏂囦緥瀛愭湇鍔$殑鍒濆鍖栬繃紼嬪緢鐭紝鎵浠ヨ繖涓や釜鍩熺殑鍊奸兘涓?0銆?
銆銆璋冪敤 SetServiceStatus 鍑芥暟鍚?SCM 鎶ュ憡鏈嶅姟鐨勭姸鎬佹椂銆傝鎻愪緵 hStatus 鍙ユ焺鍜?ServiceStatus 緇撴瀯銆傛敞鎰?ServiceStatus 涓涓叏灞鍙橀噺錛屾墍浠ヤ綘鍙互璺ㄥ涓嚱鏁頒嬌鐢ㄥ畠銆係erviceMain 鍑芥暟涓紝浣犵粰緇撴瀯鐨勫嚑涓煙璧嬪鹼紝瀹冧滑鍦ㄦ湇鍔¤繍琛岀殑鏁翠釜榪囩▼涓兘淇濇寔涓嶅彉錛屾瘮濡傦細dwServiceType銆?br />銆銆鍦ㄦ姤鍛婁簡鏈嶅姟鐘舵佷箣鍚庯紝浣犲彲浠ヨ皟鐢?InitService 鍑芥暟鏉ュ畬鎴愬垵濮嬪寲銆傝繖涓嚱鏁板彧鏄坊鍔犱竴涓鏄庢у瓧絎︿覆鍒版棩蹇楁枃浠躲傚涓嬮潰浠g爜鎵紺猴細

// 鏈嶅姟鍒濆鍖?br />int InitService()
{
聽聽聽聽int result;
聽聽聽聽result = WriteToLog("Monitoring started.");
聽聽聽聽return(result);
}
銆銆鍦?ServiceMain 涓紝媯鏌?InitService 鍑芥暟鐨勮繑鍥炲箋傚鏋滃垵濮嬪寲鏈夐敊錛堝洜涓烘湁鍙兘鍐欐棩蹇楁枃浠跺け璐ワ級錛屽垯灝嗘湇鍔$姸鎬佺疆涓虹粓姝㈠茍閫鍑?ServiceMain錛?br />
error = InitService();
if (error)
{
聽聽聽聽// 鍒濆鍖栧け璐ワ紝緇堟鏈嶅姟
聽聽聽聽ServiceStatus.dwCurrentState = SERVICE_STOPPED;
聽聽聽聽ServiceStatus.dwWin32ExitCode = -1;
聽聽聽聽SetServiceStatus(hStatus, &ServiceStatus);
聽聽聽聽// 閫鍑?ServiceMain
聽聽聽聽return;
}
濡傛灉鍒濆鍖栨垚鍔燂紝鍒欏悜 SCM 鎶ュ憡鐘舵侊細

// 鍚?SCM 鎶ュ憡榪愯鐘舵?
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus (hStatus, &ServiceStatus);
鎺ョ潃錛屽惎鍔ㄥ伐浣滃驚鐜傛瘡浜旂閽熸煡璇竴涓彲鐢ㄧ墿鐞嗗唴瀛樺茍灝嗙粨鏋滃啓鍏ユ棩蹇楁枃浠躲?br />
濡?Listing 1 鎵紺猴紝寰幆涓鐩村埌鏈嶅姟鐨勭姸鎬佷負 SERVICE_RUNNING 鎴栨棩蹇楁枃浠跺啓鍏ュ嚭閿欎負姝€傜姸鎬佸彲鑳藉湪 ControlHandler 鍑芥暟鍝嶅簲 SCM 鎺у埗璇鋒眰鏃朵慨鏀廣?br />

絎笁姝ワ細澶勭悊鎺у埗璇鋒眰

銆銆鍦ㄧ浜屾涓紝浣犵敤 ServiceMain 鍑芥暟娉ㄥ唽浜嗘帶鍒跺鐞嗗櫒鍑芥暟銆傛帶鍒跺鐞嗗櫒涓庡鐞嗗悇縐?Windows 娑堟伅鐨勭獥鍙e洖璋冨嚱鏁伴潪甯哥被浼箋傚畠媯鏌?SCM 鍙戦佷簡浠涔堣姹傚茍閲囧彇鐩稿簲琛屽姩銆?br />銆銆姣忔浣犺皟鐢?SetServiceStatus 鍑芥暟鐨勬椂鍊欙紝蹇呴』鎸囧畾鏈嶅姟鎺ユ敹 STOP 鍜?SHUTDOWN 璇鋒眰銆侺isting 2 紺鴻寖浜嗗浣曞湪 ControlHandler 鍑芥暟涓鐞嗗畠浠?br />銆銆STOP 璇鋒眰鏄?SCM 緇堟鏈嶅姟鐨勬椂鍊欏彂閫佺殑銆備緥濡傦紝濡傛灉鐢ㄦ埛鍦ㄢ滄湇鍔♀濇帶鍒墮潰鏉夸腑鎵嬪姩緇堟鏈嶅姟銆係HUTDOWN 璇鋒眰鏄叧闂満鍣ㄦ椂錛岀敱 SCM 鍙戦佺粰鎵鏈夎繍琛屼腑鏈嶅姟鐨勮姹傘備袱縐嶆儏鍐電殑澶勭悊鏂瑰紡鐩稿悓錛?br />
鍐欐棩蹇楁枃浠訛紝鐩戣鍋滄錛?
鍚?SCM 鎶ュ憡 SERVICE_STOPPED 鐘舵侊紱
銆銆鐢變簬 ServiceStatus 緇撴瀯瀵逛簬鏁翠釜紼嬪簭鑰岃█涓哄叏灞閲忥紝ServiceStatus 涓殑宸ヤ綔寰幆鍦ㄥ綋鍓嶇姸鎬佹敼鍙樻垨鏈嶅姟緇堟鍚庡仠姝€傚叾瀹冪殑鎺у埗璇鋒眰濡傦細PAUSE 鍜?CONTINUE 鍦ㄦ湰鏂囩殑渚嬪瓙娌℃湁澶勭悊銆?br />銆銆鎺у埗澶勭悊鍣ㄥ嚱鏁板繀欏繪姤鍛婃湇鍔$姸鎬侊紝鍗充究 SCM 姣忔鍙戦佹帶鍒惰姹傜殑鏃跺欑姸鎬佷繚鎸佺浉鍚屻傚洜姝わ紝涓嶇鍝嶅簲浠涔堣姹傦紝閮借璋冪敤 SetServiceStatus銆?br />
絎洓姝ワ細瀹夎鍜岄厤緗湇鍔?br />
銆銆紼嬪簭緙栧ソ浜嗭紝灝嗕箣緙栬瘧鎴?exe 鏂囦歡銆傛湰鏂囦緥瀛愬垱寤虹殑鏂囦歡鍙?MemoryStatus.exe錛屽皢瀹冩嫹璐濆埌 C:\MyServices 鏂囦歡澶廣備負浜嗗湪鏈哄櫒涓婂畨瑁呰繖涓湇鍔★紝闇瑕佺敤 SC.EXE 鍙墽琛屾枃浠訛紝瀹冩槸 Win32 Platform SDK 涓檮甯︾殑涓涓伐鍏楓傦紙璇戣呮敞錛歏isaul Studio .NET 2003 IDE 鐜涓篃鏈夎繖涓伐鍏鳳紝鍏蜂綋瀛樻斁浣嶇疆鍦細C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin\winnt錛夈備嬌鐢ㄨ繖涓疄鐢ㄥ伐鍏峰彲浠ュ畨瑁呭拰縐婚櫎鏈嶅姟銆傚叾瀹冩帶鍒舵搷浣滃皢閫氳繃鏈嶅姟鎺у埗闈㈡澘鏉ュ畬鎴愩備互涓嬫槸鐢ㄥ懡浠よ瀹夎 MemoryStatus 鏈嶅姟鐨勬柟娉曪細

sc create MemoryStatus binpath= c:\MyServices\MemoryStatus.exe
銆銆鍙戝嚭姝ゅ垱寤哄懡浠ゃ傛寚瀹氭湇鍔″悕鍜屼簩榪涘埗鏂囦歡鐨勮礬寰勶紙娉ㄦ剰 binpath= 鍜岃礬寰勪箣闂寸殑閭d釜絀烘牸錛夈傚畨瑁呮垚鍔熷悗錛屼究鍙互鐢ㄦ湇鍔℃帶鍒墮潰鏉挎潵鎺у埗榪欎釜鏈嶅姟銆傜敤鎺у埗闈㈡澘鐨勫伐鍏鋒爮鍚姩鍜岀粓姝㈣繖涓湇鍔°?br />
銆MemoryStatus 鐨勫惎鍔ㄧ被鍨嬫槸鎵嬪姩錛屼篃灝辨槸璇存牴鎹渶瑕佹潵鍚姩榪欎釜鏈嶅姟銆傚彸閿崟鍑昏鏈嶅姟錛岀劧鍚庨夋嫨涓婁笅鏂囪彍鍗曚腑鐨勨滃睘鎬р濊彍鍗曢」錛屾鏃舵樉紺鴻鏈嶅姟鐨勫睘鎬х獥鍙c傚湪榪欓噷鍙互淇敼鍚姩綾誨瀷浠ュ強鍏跺畠璁劇疆銆備綘榪樺彲浠ヤ粠鈥滃父瑙勨濇爣絳句腑鍚姩/鍋滄鏈嶅姟銆備互涓嬫槸浠庣郴緇熶腑縐婚櫎鏈嶅姟鐨勬柟娉曪細

sc delete MemoryStatus
鎸囧畾 鈥渄elete鈥?閫夐」鍜屾湇鍔″悕銆傛鏈嶅姟灝嗚鏍囪涓哄垹闄わ紝涓嬫瑗塊氶噸鍚悗錛岃鏈嶅姟灝嗚瀹屽叏縐婚櫎銆?br />絎簲姝ワ細嫻嬭瘯鏈嶅姟

銆銆浠庢湇鍔℃帶鍒墮潰鏉垮惎鍔?MemoryStatus 鏈嶅姟銆傚鏋滃垵濮嬪寲涓嶅嚭閿欙紝琛ㄧず鍚姩鎴愬姛銆傝繃涓浼氬効灝嗘湇鍔″仠姝€傛鏌ヤ竴涓?C:\MyServices 鏂囦歡澶逛腑 memstatus.txt 鏂囦歡鐨勬湇鍔¤緭鍑恒傚湪鎴戠殑鏈哄櫒涓婅緭鍑烘槸榪欐牱鐨勶細

Monitoring started.
273469440
273379328
273133568
273084416
Monitoring stopped.
銆銆涓轟簡嫻嬭瘯 MemoryStatus 鏈嶅姟鍦ㄥ嚭閿欐儏鍐典笅鐨勮涓猴紝鍙互灝?memstatus.txt 鏂囦歡璁劇疆鎴愬彧璇匯傝繖鏍蜂竴鏉ワ紝鏈嶅姟搴旇鏃犳硶鍚姩銆?br />銆銆鍘繪帀鍙灞炴э紝鍚姩鏈嶅姟錛屽湪灝嗘枃浠惰鎴愬彧璇匯傛湇鍔″皢鍋滄鎵ц錛屽洜涓烘鏃舵棩蹇楁枃浠跺啓鍏ュけ璐ャ傚鏋滀綘鏇存柊鏈嶅姟鎺у埗闈㈡澘鐨勫唴瀹癸紝浼氬彂鐜版湇鍔$姸鎬佹槸宸茬粡鍋滄銆?br />鍘熸枃錛歒evgeny Menaker
緲昏瘧錛歂orthtibet

shaohua 2006-10-15 18:40 鍙戣〃璇勮
]]>
鏂囦歡緋葷粺鐩戞帶http://m.shnenglu.com/xushaohua/archive/2006/10/15/13707.htmlshaohuashaohuaSun, 15 Oct 2006 05:37:00 GMThttp://m.shnenglu.com/xushaohua/archive/2006/10/15/13707.htmlhttp://m.shnenglu.com/xushaohua/comments/13707.htmlhttp://m.shnenglu.com/xushaohua/archive/2006/10/15/13707.html#Feedback0http://m.shnenglu.com/xushaohua/comments/commentRss/13707.htmlhttp://m.shnenglu.com/xushaohua/services/trackbacks/13707.html闃呰鍏ㄦ枃

shaohua 2006-10-15 13:37 鍙戣〃璇勮
]]>
[杞琞WINDOWS閿洏浜嬩歡鐩戞帶鍘熺悊鍙婂簲鐢?/title><link>http://m.shnenglu.com/xushaohua/archive/2006/10/15/13704.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Sun, 15 Oct 2006 04:37:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2006/10/15/13704.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/13704.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2006/10/15/13704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/13704.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/13704.html</trackback:ping><description><![CDATA[涓銆佸湪WINDOWS閿洏浜嬩歡涓婃寕鎺ョ洃鎺у嚱鏁扮殑鏂規硶<br /><br />WINDOW涓嬪彲榪涜鎸傛帴鐨勮繃婊ゅ嚱鏁板寘鎷?1縐嶏細<br /><br />WH_CALLWNDPROC 紿楀彛鍑芥暟鐨勮繃婊ゅ嚱鏁?br /><br />WH_CBT 璁$畻鏈哄煿璁繃婊ゅ嚱鏁?br /><br />WH_DEBUG 璋冭瘯榪囨護鍑芥暟<br /><br />WH_GETMESSAGE 鑾峰彇娑堟伅榪囨護鍑芥暟<br /><br />WH_HARDWARE 紜歡娑堟伅榪囨護鍑芥暟<br /><br />WH_JOURNALPLAYBACK 娑堟伅閲嶆斁榪囨護鍑芥暟<br /><br />WH_JOURNALRECORD 娑堟伅璁板綍榪囨護鍑芥暟<br /><br />WH_MOUSE 榧犳爣榪囨護鍑芥暟<br /><br />WH_MSGFILTER 娑堟伅榪囨護鍑芥暟<br /><br />WH_SYSMSGFILTER 緋葷粺娑堟伅榪囨護鍑芥暟<br /><br />WH_KEYBOARD 閿洏榪囨護鍑芥暟<br /><br />鍏朵腑閿洏榪囨護鍑芥暟鏄渶甯哥敤鏈鏈夌敤鐨勮繃婊ゅ嚱鏁扮被鍨嬶紝涓嶇鏄摢涓縐嶇被鍨嬬殑榪囨護鍑芥暟錛屽叾鎸傛帴鐨勫熀鏈柟娉曢兘鏄浉鍚岀殑銆?br />WINDOW璋冪敤鎸傛帴鐨勫弽璋冨嚱鏁版椂鎬繪槸鍏堣皟鐢ㄦ寕鎺ラ摼棣栫殑閭d釜鍑芥暟錛屽洜姝ゅ繀欏誨皢閿洏鎸傞挬鍑芥暟鍒╃敤鍑芥暟SetWindowsHookEx()灝嗗叾鎸傛帴鍦ㄥ嚱鏁伴摼棣栥傝嚦浜庢秷鎭槸鍚︿紶閫掔粰鍑芥暟閾劇殑涓嬩竴涓嚱鏁版槸鐢辨瘡涓叿浣撳嚱鏁板姛鑳界‘瀹氱殑錛屽鏋滄秷鎭渶瑕佷紶緇熺粰涓嬩竴涓嚱鏁幫紝鍙皟鐢ˋPI鍑芥暟鐨凜allNextHookEx()鏉ュ疄鐜幫紝濡傛灉涓嶄紶閫掔洿鎺ヨ繑鍥炲嵆鍙傛寕鎺ュ嚱鏁板彲浠ユ槸鐢ㄦ潵鐩戞帶鎵鏈夌嚎紼嬫秷鎭殑鍏ㄥ眬鎬у嚱鏁幫紝涔熷彲浠ユ槸鍗曠嫭鐩戞帶鏌愪竴綰跨▼鐨勫眬閮ㄦу嚱鏁般傚鏋滄寕鎺ュ嚱鏁版槸灞閮ㄥ嚱鏁幫紝鍙互灝嗗畠鏀懼埌涓涓?DLL鍔ㄦ侀摼鎺ュ簱涓紝涔熷彲浠ユ斁鍦ㄤ竴涓眬閮ㄦā鍧椾腑錛涘鏋滄寕鎺ュ嚱鏁版槸鍏ㄥ眬鐨勶紝閭d箞蹇呴』灝嗗叾鏀懼湪涓涓?DLL鍔ㄦ侀摼鎺ュ簱涓傛寕鎺ュ嚱鏁板繀欏諱弗鏍兼寜鐓т笅榪版牸寮忚繘琛屽0鏄庯紝浠ラ敭鐩樻寕閽╁嚱鏁頒負渚嬶細<br /><br />int FAR PASCAL KeyboardProc(int nCode,WORD wParam,DWORD lParam)<br /><br />鍏朵腑KeyboardProc涓哄畾涔夋寕鎺ュ嚱鏁板悕錛岃鍑芥暟蹇呴』鍦ㄦā鍧楀畾涔夋枃浠朵腑鍒╃敤EXPORTS鍛戒護榪涜璇存槑錛沶Code鍐沖畾鎸傛帴鍑芥暟鏄惁瀵瑰綋鍓嶆秷鎭繘琛屽鐞嗭紱wParam鍜宭Param涓哄叿浣撶殑娑堟伅鍐呭銆?br /><br /><br /><br />浜屻侀敭鐩樹簨浠舵寕鎺ュ嚱鏁扮殑瀹夎涓庝笅杞?br /><br />鍦ㄧ▼搴忎腑鍙互鍒╃敤鍑芥暟SetWindowsHookEx()鏉ユ寕鎺ヨ繃婊ゅ嚱鏁幫紝鍦ㄦ寕鎺ュ嚱鏁版椂蹇呴』鎸囧嚭璇ユ寕鎺ュ嚱鏁扮殑綾誨瀷銆佸嚱鏁扮殑鍏ュ彛鍦板潃浠ュ強鍑芥暟鏄叏灞鎬х殑榪樻槸灞閮ㄦх殑錛屾寕鎺ュ嚱鏁扮殑鍏蜂綋璋冪敤鏍煎紡濡備笅錛?br /><br />SetWindowsHookEx(iType,iProc,hInst,iCode)<br /><br />鍏朵腑iType涓烘寕鎺ュ嚱鏁扮被鍨嬶紝閿洏綾誨瀷涓篧H_KEYBOARD,iProc涓烘寕鎺ュ嚱鏁板湴鍧錛宧Inst涓烘寕鎺ュ嚱鏁伴摼鎺ュ簱瀹炰緥鍙ユ焺錛宨Code涓虹洃鎺т唬鐮侊紞0琛ㄧず鍏ㄥ眬鎬у嚱鏁般傚鏋滄寕鎺ュ嚱鏁伴渶瑕佸皢娑堟伅浼犻掔粰涓嬩竴涓繃婊ゅ嚱鏁幫紝鍒欏湪璇ユ寕鎺ュ嚱鏁拌繑鍥炲墠榪橀渶瑕佽皟鐢ㄤ竴嬈allNextHookEx()鍑芥暟錛屽綋闇瑕佷笅杞芥寕鎺ュ嚱鏁版椂錛屽彧瑕佽皟鐢ㄤ竴嬈nhookWindowsHookEx(iProc)鍑芥暟鍗沖彲瀹炵幇銆傚鏋滃嚱鏁版槸鍏ㄥ眬鎬х殑錛岄偅涔堝畠蹇呴』鏀懼湪涓涓?DLL鍔ㄦ侀摼鎺ュ簱涓紝榪欐椂璇ュ嚱鏁拌皟鐢ㄦ柟娉曞彲浠ュ拰鍏跺畠鏅?DLL鍑芥暟涓鏍鋒湁涓夌錛?br /><br />1.鍦―EF瀹氫箟鏂囦歡涓洿鎺ョ敤鍑芥暟鍚嶆垨搴忓彿璇存槑錛?br /><br />EXPORTS<br /><br />WEP @1 RESIDENTNAME<br /><br />InitHooksDll @2<br /><br />InstallFilter @3<br /><br />KeyboardProc @4<br /><br />鐢ㄥ簭鍙瘋鏄庢牸寮忎負錛氶摼鎺ュ簱鍚?鍑芥暟鍚?濡傛湰渚嬩腑璇存槑鏂規硶涓篕EYDLL.KeyboardProc)銆?br /><br />2.鍦ㄥ簲鐢ㄧ▼搴忎腑鍒╃敤鍑芥暟鐩存帴璋冪敤錛?br /><br />棣栧厛鍦ㄥ簲鐢ㄧ▼搴忎腑鍒╃敤LoadLibrary(LPSTR "閾炬帴搴撳悕")灝嗗姩鎬侀摼鎺ュ簱瑁呭叆錛屽茍鍙栧緱瑁呰澆搴撴ā鍧楀彞鏌刪Inst,鐒跺悗鐩存帴鍒╃敤GetProcAddress(HINSTANCE hInst,LPSTR "鍑芥暟榪囩▼鍚?)鑾峰彇鍑芥暟鍦板潃錛岀劧鍚庣洿鎺ヨ皟鐢ㄨ鍦板潃鍗沖彲錛岀▼搴忕粨鏉熷墠鍒╃敤鍑芥暟FreeLibrary( )閲婃斁瑁呭叆鐨勫姩鎬侀摼鎺ュ簱鍗沖彲銆?br /><br />3.鍒╃敤杈撳叆搴?LIB鏂規硶<br /><br />鍒╃敤IMPLIB.EXE紼嬪簭鍦ㄥ緩绔嬪姩鎬侀摼鎺ュ簱鐨勫悓鏃跺緩绔嬬浉搴旂殑杈撳叆搴?LIB錛岀劧鍚庣洿鎺ュ湪欏圭洰鏂囦歡涓鍔犺杈撳叆搴撱?br /><br /><br /><br />涓夈乄INDOWS鎸傞挬鐩戞帶鍑芥暟鐨勫疄鐜版楠?br /><br />WINDOWS鎸傞挬鍑芥暟鍙湁鏀懼湪鍔ㄦ侀摼鎺ュ簱DLL涓墠鑳藉疄鐜版墍鏈変簨浠剁殑鐩戞帶鍔熻兘銆傚湪.DLL涓艦鎴愭寕閽╃洃鎺у嚱鏁板熀鏈柟娉曞強鍏跺熀鏈粨鏋勫涓嬶細<br /><br />錛戙侀鍏堝0鏄嶥LL涓殑鍙橀噺鍜岃繃紼嬶紱<br /><br />錛掋佺劧鍚庣紪鍒禗LL涓繪ā鍧桳ibMain()錛屽緩绔嬫ā鍧楀疄渚嬶紱<br /><br />錛撱佸緩绔嬬郴緇熼鍑篋LL鏈哄埗WEP()鍑芥暟錛?br /><br />錛斻佸畬鎴怐LL鍒濆鍖栧嚱鏁癐nitHooksDll(),浼犻掍富紿楀彛紼嬪簭鍙ユ焺錛?br /><br />錛曘佺紪鍒舵寕閽╁畨瑁呭拰涓嬭澆鍑芥暟InstallFilter()錛?br /><br />錛栥佺紪鍒舵寕閽╁嚱鏁癒eyboardProc()錛屽湪鍏朵腑璁劇疆鐩戞帶鍔熻兘錛屽茍紜畾緇х畫璋冧笅涓涓挬<br /><br />瀛愬嚱鏁拌繕鏄洿鎺ヨ繑鍥濿INDOWS搴旂敤紼嬪簭銆?br /><br />錛椼佸湪WINDOWS涓葷▼搴忎腑闇瑕佸垵濮嬪寲DLL騫跺畨瑁呯浉搴旀寕閽╁嚱鏁幫紝鐢辨寕鎺ョ殑閽╁瓙鍑芥暟璐?br /><br />璐d笌涓葷▼搴忛氫俊錛?br /><br />錛樸佸湪涓嶉渶瑕佺洃鎺ф椂鐢變笅杞藉姛鑳藉嵏鎺夋寕鎺ュ嚱鏁般?br /><br />鍥涖乄INDOWS涓嬮敭鐩樻寕閽╃洃鎺у嚱鏁扮殑搴旂敤鎶鏈?br /><br /><br /><br />鐩墠鏍囧噯鐨?04 閿洏涓婇兘鏈変袱涓壒孌婄殑鎸夐敭錛屽叾涓婂垎鍒敤WINDOW紼嬪簭寰芥爣鍜岄紶鏍囦笅鎷夊垪琛ㄦ爣璇嗭紝鏈枃鏆備笖鍒嗗埆縐頒負Micro宸﹂敭鍜孧icro鍙抽敭錛屽墠鑰呯敤鏉ユā鎷熼紶鏍囧乏閿縺媧誨紑濮嬭彍鍗曪紝鍚庤呯敤鏉ユā鎷熼紶鏍囧彸閿縺媧誨睘鎬ц彍鍗曘傝繖涓や釜鐗規畩鎸夐敭鍙湁鍦ㄦ寜涓嬪悗绔嬪嵆鎶搗鍗沖畬鎴?CLICK榪囩▼鎵嶈兘瀹炵幇鍏跺姛鑳斤紝騫朵笖娌℃湁鍜屽叾瀹冩寜閿繘琛岀粍鍚堜嬌鐢ㄣ傜敱浜嶹INDOWS 緋葷粺涓皢鎸夐敭鍒掑垎寰楁洿鍔犺緇嗭紝浣垮簲鐢ㄧ▼搴忎腑寰堥毦鐏墊椿瀹氫箟鑷繁鐨勪笓鐢ㄥ揩鎹烽敭錛屾瘮濡傚湪寮鍙?IME絳夊簲鐢ㄧ▼搴忔椂寰堥毦鎵懼埌涓嶄笌WORD8.0絳夊叾瀹冨簲鐢ㄧ▼搴忓啿紿佺殑鍔熻兘鎸夐敭銆傚鏋滃皢鏍囧噯104閿洏涓殑榪欎袱涓壒孌婃寜閿綔涓烘ā鎷烠TRL鍜孉LT 絳変笓鐢ㄦ寜閿紝浣垮叾鍜屽叾瀹冩寜閿粍鍚堬紝灝卞彲浠ュ湪鑷繁鐨勫簲鐢ㄧ▼搴忎腑鑷敱鍦拌緗笓鐢ㄥ姛鑳介敭錛屼負搴旂敤紼嬪簭瀹炵幇鍚勭鍔熻兘蹇嵎閿彁渚涚伒媧繪с傛甯告儏鍐典笅WINDOWS 閿洏浜嬩歡椹卞姩紼嬪簭騫朵笉灝嗚繖涓や釜鎸夐敭鐨勬秷鎭繘琛屾甯歌В閲婏紝榪欏氨蹇呴』鍒╃敤閿洏浜嬩歡鐨勬寕閽╃洃鎺у嚱鏁版潵瀹炵幇鍏剁壒瀹氱殑鍔熻兘銆傚叾鏂規硶濡備笅錛?br /><br />錛戙侀鍏堢紪鍒跺涓嬩竴涓畝鍗曞姩鎬侀摼鎺ュ簱紼嬪簭錛屽茍緙栬瘧鎴怐LL鏂囦歡銆?br /><br />#include "windows.h"<br /><br />int FAR PASCAL LibMain(HANDLE hModule,UINT wDataSeg,UINT cbHeapSize,LPSTR lpszCmdLine);<br /><br />int WINAPI WEP(int bSystemExit);<br /><br />int WINAPI InitHooksDll(HWND hwndMainWindow);<br /><br />int WINAPI InstallFilter(BOOL nCode);<br /><br />LRESULT CALLBACK KeyHook(int nCode,WORD wParam,DWORD lParam);<br /><br />static HANDLE hInstance; // 鍏ㄥ眬鍙ユ焺<br /><br />static HWND hWndMain; // 涓葷獥鍙e彞鏌?br /><br />static int InitCalled=0; // 鍒濆鍖栨爣蹇?br /><br />static HHOOK hKeyHook;<br /><br />FARPROC lpfnKeyHook=(FARPROC)KeyHook;<br /><br />BOOL HookStates=FALSE;<br /><br />int FAR PASCAL LibMain(<br /><br />HANDLE hModule,<br /><br />UINT wDataSeg,<br /><br />UINT cbHeapSize,<br /><br />LPSTR lpszCmdLine)<br /><br />{<br /><br />if (cbHeapSize!=0) UnlockData(0);<br /><br />hInstance = hModule;<br /><br />return 1;<br /><br />}<br /><br />int WINAPI WEP (int bSystemExit)<br /><br />{ return 1;}<br /><br />int WINAPI InitHooksDll(HWND hwndMainWindow)<br /><br />{ hWndMain = hwndMainWindow;<br /><br />InitCalled = 1;<br /><br />return (0);<br /><br />}<br /><br />int WINAPI InstallFilter(BOOL nCode)<br /><br />{ if (InitCalled==0) return (-1);<br /><br />if (nCode==TRUE) {<br /><br />hKeyHook=SetWindowsHookEx(WH_KEYBOARD,<br /><br />(HOOKPROC)lpfnKeyHook,hInstance,0);<br /><br />HookStates=TRUE;<br /><br />} else {<br /><br />UnhookWindowsHookEx(hKeyHook);<br /><br />HookStates=FALSE;<br /><br />}<br /><br />return(0);<br /><br />}<br /><br />LRESULT CALLBACK KeyHook(int nCode,WORD wParam,DWORD lParam)<br /><br />{<br /><br />static BOOL msflag=FALSE;<br /><br />if(nCode>=0) {<br /><br />if(HookStates==TRUE){<br /><br />if((wParam==0xff)|| //WIN3.X涓嬫寜閿?br /><br />(wParam==0x5b)||(wParam==0x5c)){//WIN95涓嬫寜閿?br /><br />if((i==0x15b)||(i==0x15c)){ //鎸夐敭鎸変笅澶勭悊<br /><br />msflag=TRUE;<br /><br />PostMessage(hWndMain,0x7fff,0x1,0x3L);<br /><br />} else if((i==0xc15b)||(i==0xc15c)){//鎸夐敭鎶搗澶勭悊<br /><br />msflag=FALSE;<br /><br />PostMessage(hWndMain,0x7fff,0x2,0x3L);<br /><br />}<br /><br />}<br /><br />}<br /><br />}<br /><br />return((int)CallNextHookEx(hKeyHook,nCode,wParam,lParam));<br /><br />}<br /><br />璇ョ▼搴忕殑涓昏鍔熻兘鏄洃鎺ч敭鐩樻寜閿秷鎭紝灝嗕袱涓壒孌婃寜閿甅icro鎸変笅鍜屾姮璧鋒秷鎭漿鎹㈡垚鑷畾涔夌被鍨嬬殑娑堟伅錛屽茍灝嗚嚜瀹氫箟娑堟伅鍙戦佺粰搴旂敤紼嬪簭涓葷獥鍙e嚱鏁般?br /><br />錛掋佸湪搴旂敤紼嬪簭涓誨嚱鏁頒腑寤虹珛紿楀彛鍚庯紝璋冪敤InitHooksDll()鍑芥暟鏉ュ垵濮嬪寲鍔ㄦ侀摼鎺ュ簱錛屽茍灝嗗簲鐢ㄧ▼搴忎富紿楀彛鍙ユ焺浼犻掔粰閾炬帴搴擄紝鐒跺悗璋冪敤InstallFilter()鍑芥暟鎸傛帴閿洏浜嬩歡鐩戞帶鍥炶皟鍑芥暟銆?br /><br />InitHooksDll(hIMEWnd); //鍒濆鍖朌LL<br /><br />InstallFilter(TRUE); //瀹夎閿洏鍥炶皟鍑芥暟<br /><br />錛撱佸湪搴旂敤紼嬪簭涓葷獥鍙e嚱鏁板鐞嗚嚜瀹氫箟娑堟伅鏃訛紝淇濆瓨Micro鎸夐敭鐨勭姸鎬侊紝渚涚粍鍚堟寜閿鐞嗘椂鍒ゆ柇浣跨敤銆?br /><br />switch (iMessage) {<br /><br />case 0x7fff: //鑷畾涔夋秷鎭被鍨?br /><br />if(lParam==0x3L){//璁劇疆Micro閿殑鐘舵?br /><br />if(wParam==0x1) MicroFlag=TRUE;<br /><br />else if(wParam==0x2) MicroFlag=FALSE;<br /><br />}<br /><br />break;<br /><br />錛斻佸湪榪涜鎸夐敭緇勫悎澶勭悊鏃訛紝棣栧厛鍒ゆ柇Micro閿槸鍚︽寜涓嬶紝鐒跺悗鍐嶈繘琛屽叾瀹冩寜閿殑鍒ゆ柇澶勭悊銆?br /><br />case WM_KEYDOWN: // 鎸夐敭鎸変笅澶勭悊<br /><br />if(MicroFlag==TRUE){//Micro閿寜涓?br /><br />if((BYTE)HIBYTE(wParam)==0x5b){<br /><br />//Micro+"["緇勫悎閿?br /><br />......//鎸夐敭鍔熻兘澶勭悊<br /><br />} else if((BYTE)HIBYTE(wParam)==0x5d){<br /><br />//Micro+"]"緇勫悎閿?br /><br />......//鎸夐敭鍔熻兘澶勭悊<br /><br />}<br /><br />}<br /><br />break;<br /><br />錛曘佸綋搴旂敤紼嬪簭閫鍑烘椂搴旀敞鎰忎笅杞介敭鐩樼洃鎺у嚱鏁幫紝鍗寵皟鐢↖nstallFilter(FALSE)鍑芥暟涓嬈°?br /><br />錛栥佸埄鐢ㄦ湰鏂囨彁渚涚殑鏂規硶璁劇疆鑷繁鐨勫簲鐢ㄧ▼搴忓姛鑳芥寜閿紝鍦ㄤ繚璇佺▼搴忓姛鑳芥寜閿笉浼氫笌鍏跺畠緋葷粺鍙戠敓鍐茬獊鐨勫悓鏃訛紝鏈夋晥鍦板埄鐢ㄤ簡緋葷粺涓幇鏈夎祫婧愶紝鑰屼笖鍦ㄥ疄鐜板簲鐢ㄧ▼搴忓姛鑳界殑鍚屾椂鐏墊椿搴旂敤浜嗙郴緇熶腑鎻愪緵鐨勫悇縐嶅姛鑳借皟鐢ㄣ?img src ="http://m.shnenglu.com/xushaohua/aggbug/13704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2006-10-15 12:37 <a href="http://m.shnenglu.com/xushaohua/archive/2006/10/15/13704.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞琞榧犳爣灞忓箷鍙栬瘝鎶鏈殑鍘熺悊鍜屽疄鐜?/title><link>http://m.shnenglu.com/xushaohua/archive/2006/10/02/13227.html</link><dc:creator>shaohua</dc:creator><author>shaohua</author><pubDate>Mon, 02 Oct 2006 12:39:00 GMT</pubDate><guid>http://m.shnenglu.com/xushaohua/archive/2006/10/02/13227.html</guid><wfw:comment>http://m.shnenglu.com/xushaohua/comments/13227.html</wfw:comment><comments>http://m.shnenglu.com/xushaohua/archive/2006/10/02/13227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xushaohua/comments/commentRss/13227.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xushaohua/services/trackbacks/13227.html</trackback:ping><description><![CDATA[鈥滈紶鏍囧睆騫曞彇璇嶁濇妧鏈槸鍦ㄧ數瀛愬瓧鍏鎬腑寰楀埌騫挎硾鍦板簲鐢ㄧ殑錛屽鍥涢氬埄鏂瑰拰閲戝北璇嶉湼絳夎蔣浠訛紝榪欎釜鎶鏈湅浼肩畝鍗曪紝鍏跺疄鍦╓INDOWS緋葷粺涓疄鐜板嵈鏄潪甯稿鏉傜殑錛屾葷殑鏉ヨ鏈変袱縐嶅疄鐜版柟寮忥細<br />聽聽聽 絎竴縐嶏細閲囩敤鎴幏瀵歸儴鍒咷DI鐨凙PI璋冪敤鏉ュ疄鐜?濡俆extOut,TextOutA絳夈?br />聽聽聽 絎簩縐嶏細瀵規瘡涓澶囦笂涓嬫枃(DC)鍋氫竴鍒咰opy,騫惰窡韙墍鏈変慨鏀逛笂涓嬫枃(DC)鐨勬搷浣溿偮犅犅犅犅?<br />聽聽聽 絎簩縐嶆柟娉曟洿寮哄ぇ,浣嗗吋瀹規т笉濂斤紝鑰岀涓縐嶆柟娉曚嬌鐢ㄧ殑鎴幏WindowsAPI鐨勮皟鐢紝榪欓」鎶鏈殑寮哄ぇ鍙兘榪滆繙瓚呭嚭浜嗘偍鐨勬兂璞★紝姣笉澶稿紶鐨勮錛屽埄鐢╓indowsAPI鎷︽埅鎶鏈紝浣犲彲浠ユ敼閫犳暣涓搷浣滅郴緇燂紝浜嬪疄涓婂緢澶氬鎸傚紡Windows涓枃騫沖彴灝辨槸榪欎箞瀹炵幇鐨勶紒鑰岃繖欏規妧鏈篃姝f槸榪欑瘒鏂囩珷鐨勪富棰樸?br />聽聽聽 鎴猈indowsAPI鐨勮皟鐢紝鍏蜂綋鐨勮鏉ヤ篃鍙互鍒嗕負涓ょ鏂規硶錛?br />聽聽聽 絎竴縐嶆柟娉曢氳繃鐩存帴鏀瑰啓WinAPI 鍦ㄥ唴瀛樹腑鐨勬槧鍍忥紝宓屽叆姹囩紪浠g爜錛屼嬌涔嬭璋冪敤鏃惰煩杞埌鎸囧畾鐨勫湴鍧榪愯鏉ユ埅鑾鳳紱絎簩縐嶆柟娉曞垯鏀瑰啓IAT錛圛mport Address Table 杈撳叆鍦板潃琛級錛岄噸瀹氬悜WinAPI鍑芥暟鐨勮皟鐢ㄦ潵瀹炵幇瀵筗inAPI鐨勬埅鑾楓?br />聽聽聽 絎竴縐嶆柟娉曠殑瀹炵幇杈冧負綣佺悙錛岃屼笖鍦╓in95銆?8涓嬮潰鏇存湁闅懼害錛岃繖鏄洜涓鴻櫧鐒跺井杞WIN16鐨凙PI鍙槸涓轟簡鍏煎鎬ф墠淇濈暀涓嬫潵錛岀▼搴忓憳搴旇灝藉彲鑳藉湴璋冪敤32浣嶇殑API,瀹為檯涓婃牴鏈氨涓嶆槸榪欐牱錛乄IN 9X鍐呴儴鐨勫ぇ閮ㄥ垎32浣岮PI緇忚繃鍙樻崲璋冪敤浜嗗悓鍚嶇殑16浣岮PI錛屼篃灝辨槸璇存垜浠渶瑕佸湪鎷︽埅鐨勫嚱鏁頒腑宓屽叆16浣嶆眹緙栦唬鐮侊紒<br />聽聽聽 鎴戜滑灝嗚浠嬬粛鐨勬槸絎簩縐嶆嫤鎴柟娉曪紝榪欑鏂規硶鍦╓in95銆?8鍜孨T涓嬮潰榪愯閮芥瘮杈冪ǔ瀹氾紝鍏煎鎬ц緝濂姐傜敱浜庨渶瑕佺敤鍒板叧浜嶹indows铏氭嫙鍐呭瓨鐨勭鐞嗐佹墦鐮磋繘紼嬭竟鐣屽銆佸悜搴旂敤紼嬪簭鐨勮繘紼嬬┖闂翠腑娉ㄥ叆浠g爜銆丳E錛圥ortable Executable錛夋枃浠舵牸寮忓拰IAT錛堣緭鍏ュ湴鍧琛級絳夎緝搴曞眰鐨勭煡璇嗭紝鎵浠ユ垜浠厛瀵規秹鍙婂埌鐨勮繖浜涚煡璇嗗ぇ姒傚湴鍋氫竴涓粙緇嶏紝鏈鍚庝細緇欏嚭鎷︽埅閮ㄥ垎鐨勫叧閿唬鐮併?br />聽聽聽聽聽 鍏堣Windows铏氭嫙鍐呭瓨鐨勭鐞嗐俉indows9X緇欐瘡涓涓繘紼嬪垎閰嶄簡4GB鐨勫湴鍧絀洪棿錛屽浜嶯T鏉ヨ錛岃繖涓暟瀛楁槸2GB錛岀郴緇熶繚鐣欎簡2GB鍒?4GB涔嬮棿鐨勫湴鍧絀洪棿紱佹榪涚▼璁塊棶錛岃屽湪Win9X涓紝2GB鍒?GB榪欓儴鍒嗚櫄鎷熷湴鍧絀洪棿瀹為檯涓婃槸鐢辨墍鏈夌殑WIN32榪涚▼鎵鍏變韓鐨勶紝榪欓儴鍒嗗湴鍧絀洪棿鍔犺澆浜嗗叡浜玏in32 DLL銆佸唴瀛樻槧灝勬枃浠跺拰VXD銆佸唴瀛樼鐞嗗櫒鍜屾枃浠剁郴緇熺爜錛學in9X涓繖閮ㄥ垎瀵逛簬姣忎竴涓繘紼嬮兘鏄彲瑙佺殑錛岃繖涔熸槸Win9X鎿嶄綔緋葷粺涓嶅鍋ュ.鐨勫師鍥犮俉in9X涓負16浣嶆搷浣滅郴緇熶繚鐣欎簡0鍒?MB鐨勫湴鍧絀洪棿錛岃屽湪4MB鍒?GB涔嬮棿涔熷氨鏄疻in32榪涚▼縐佹湁鐨勫湴鍧絀洪棿錛岀敱浜?姣忎釜榪涚▼鐨勫湴鍧絀洪棿閮芥槸鐩稿鐙珛鐨勶紝涔熷氨鏄錛屽鏋滅▼搴忔兂鎴幏鍏跺畠榪涚▼涓殑API璋冪敤錛屽氨蹇呴』鎵撶牬榪涚▼杈圭晫澧欙紝鍚戝叾瀹冪殑榪涚▼涓敞鍏ユ埅鑾稟PI璋冪敤鐨勪唬鐮侊紝榪欓」宸ヤ綔鎴戜滑浜ょ粰閽╁瓙鍑芥暟錛圫etWindowsHookEx錛夋潵瀹屾垚錛屽叧浜庡浣曞垱寤轟竴涓寘鍚郴緇熼挬瀛愮殑鍔ㄦ侀摼鎺ュ簱錛屻婄數鑴戦珮鎵嬫潅蹇椼嬪湪絎紵鏈熷凡緇忔湁榪囦笓棰樹粙緇嶄簡錛岃繖閲屽氨涓嶈禈榪頒簡銆傛墍鏈夌郴緇熼挬瀛愮殑鍑芥暟蹇呴』瑕佸湪鍔ㄦ佸簱閲岋紝榪欐牱鐨勮瘽錛屽綋榪涚▼闅愬紡鎴栨樉寮忚皟鐢ㄤ竴涓姩鎬佸簱閲岀殑鍑芥暟鏃訛紝緋葷粺浼氭妸榪欎釜鍔ㄦ佸簱鏄犲皠鍒拌繖涓繘紼嬬殑铏氭嫙鍦板潃絀洪棿閲岋紝榪欎嬌寰桪LL鎴愪負榪涚▼鐨勪竴閮ㄥ垎錛屼互榪欎釜榪涚▼鐨勮韓浠芥墽琛岋紝浣跨敤榪欎釜榪涚▼鐨勫爢鏍堬紝涔熷氨鏄鍔ㄦ侀摼鎺ュ簱涓殑浠g爜琚挬瀛愬嚱鏁版敞鍏ヤ簡鍏跺畠GUI榪涚▼鐨勫湴鍧絀洪棿錛堥潪GUI榪涚▼錛岄挬瀛愬嚱鏁板氨鏃犺兘涓哄姏浜嗭級錛?br />褰撳寘鍚挬瀛愮殑DLL娉ㄥ叆鍏跺畠榪涚▼鍚庯紝灝卞彲浠ュ彇寰楁槧灝勫埌榪欎釜榪涚▼铏氭嫙鍐呭瓨閲岀殑鍚勪釜妯″潡錛圗XE鍜孌LL錛夌殑鍩哄湴鍧錛屽錛?br />HMODULE hmodule=GetModuleHandle(鈥淢ypro.exe鈥?;<br />鍦∕FC紼嬪簭涓?鎴戜滑鍙互鐢ˋfxGetInstanceHandle()鍑芥暟鏉ュ緱鍒版ā鍧楃殑鍩哄湴鍧銆侲XE鍜孌LL琚槧灝勫埌铏氭嫙鍐呭瓨絀洪棿鐨勪粈涔堝湴鏂規槸鐢卞畠浠殑鍩哄湴鍧鍐沖畾鐨勩傚畠浠殑鍩哄湴鍧鏄湪閾炬帴鏃剁敱閾炬帴鍣ㄥ喅瀹氱殑銆傚綋浣犳柊寤轟竴涓猈in32宸ョ▼鏃訛紝VC錛嬶紜閾炬帴鍣ㄤ嬌鐢ㄧ己鐪佺殑鍩哄湴鍧0x00400000銆傚彲浠ラ氳繃閾炬帴鍣ㄧ殑BASE閫夐」鏀瑰彉妯″潡鐨勫熀鍦板潃銆侲XE閫氬父琚槧灝勫埌铏氭嫙鍐呭瓨鐨?x00400000澶勶紝DLL涔熼殢涔嬫湁涓嶅悓鐨勫熀鍦板潃錛岄氬父琚槧灝勫埌涓嶅悓榪涚▼<br />鐨勭浉鍚岀殑铏氭嫙鍦板潃絀洪棿澶勩?br />緋葷粺灝咵XE鍜孌LL鍘熷皝涓嶅姩鏄犲皠鍒拌櫄鎷熷唴瀛樼┖闂翠腑錛屽畠浠湪鍐呭瓨涓殑緇撴瀯涓庣鐩樹笂鐨勯潤鎬佹枃浠剁粨鏋勬槸涓鏍風殑銆傚嵆PE (Portable Executable) 鏂囦歡鏍煎紡銆傛垜浠緱鍒頒簡榪涚▼妯″潡鐨勫熀鍦板潃浠ュ悗錛屽氨鍙互鏍規嵁PE鏂囦歡鐨勬牸寮忕┓涓捐繖涓ā鍧楃殑IMAGE_IMPORT_DESCRIPTOR鏁扮粍錛岀湅鐪嬭繘紼嬬┖闂翠腑鏄惁寮曞叆浜嗘垜浠渶瑕佹埅鑾風殑鍑芥暟鎵鍦ㄧ殑鍔ㄦ侀摼鎺ュ簱錛屾瘮濡傞渶瑕佹埅鑾封淭extOutA鈥濓紝灝卞繀欏繪鏌モ淕di32.dll鈥濇槸鍚﹁寮曞叆浜嗐傝鍒拌繖閲岋紝鎴戜滑鏈夊繀瑕佷粙緇嶄竴涓婸E鏂囦歡鐨勬牸寮忥紝濡傚彸鍥撅紝榪欐槸PE鏂囦歡鏍煎紡鐨勫ぇ鑷存鍥撅紝鏈鍓嶉潰鏄枃浠跺ご錛屾垜浠笉蹇呯悊浼氾紝浠嶱E File Optional Header鍚庨潰寮濮嬶紝灝辨槸鏂囦歡涓悇涓鐨勮鏄庯紝璇存槑鍚庨潰鎵嶆槸鐪熸鐨勬鏁版嵁錛岃屽疄闄呬笂鎴戜滑鍏沖績鐨勫彧鏈変竴涓錛岄偅灝辨槸鈥?idata鈥濇錛岃繖涓涓寘鍚簡鎵鏈夌殑寮曞叆鍑芥暟淇℃伅錛岃繕鏈塈AT錛圛mport Address Table錛夌殑RVA錛圧elative Virtual Address錛夊湴鍧銆?br />璇村埌榪欓噷錛屾埅鑾稺indowsAPI鐨勬暣涓師鐞嗗氨瑕佺湡鐩稿ぇ鐧戒簡銆傚疄闄呬笂鎵鏈夎繘紼嬪緇欏畾鐨凙PI鍑芥暟鐨勮皟鐢ㄦ繪槸閫氳繃PE鏂囦歡鐨勪竴涓湴鏂規潵杞Щ鐨勶紝榪欏氨鏄竴涓妯″潡(鍙互鏄疎XE鎴朌LL)鐨勨?idata鈥濇涓殑IAT杈撳叆鍦板潃琛紙Import Address Table錛夈傚湪閭i噷鏈夋墍鏈夋湰妯″潡璋冪敤鐨勫叾瀹僁LL鐨勫嚱鏁板悕鍙婂湴鍧銆傚鍏跺畠DLL鐨勫嚱鏁拌皟鐢ㄥ疄闄呬笂鍙槸璺寵漿鍒拌緭鍏ュ湴鍧琛紝鐢辮緭鍏ュ湴鍧琛ㄥ啀璺寵漿鍒癉LL鐪熸鐨勫嚱鏁板叆鍙c? <p>鍏蜂綋鏉ヨ錛屾垜浠皢閫氳繃IMAGE_IMPORT_DESCRIPTOR鏁扮粍鏉ヨ闂?idata鈥濇涓紩鍏ョ殑DLL鐨勪俊鎭紝鐒跺悗閫氳繃IMAGE_THUNK_DATA鏁扮粍鏉ラ拡瀵逛竴涓寮曞叆鐨凞LL璁塊棶璇LL涓寮曞叆鐨勬瘡涓嚱鏁扮殑淇℃伅錛屾壘鍒版垜浠渶瑕佹埅鑾風殑鍑芥暟鐨勮煩杞湴鍧錛岀劧鍚庢敼鎴愭垜浠嚜宸辯殑鍑芥暟鐨勫湴鍧鈥︹﹀叿浣撶殑鍋氭硶鍦ㄥ悗闈㈢殑鍏抽敭浠g爜涓細鏈夎緇嗙殑璁茶В銆?br />聽聽 璁蹭簡榪欎箞澶氬師鐞嗭紝鐜板湪璁╂垜浠洖鍒扳滈紶鏍囧睆騫曞彇璇嶁濈殑涓撻涓婃潵銆傞櫎浜咥PI鍑芥暟鐨勬埅鑾鳳紝瑕佸疄鐜扳滈紶鏍囧睆騫曞彇璇嶁濓紝榪橀渶瑕佸仛涓浜涘叾瀹冪殑宸ヤ綔錛岀畝鍗曠殑璇存潵錛屽彲浠ユ妸涓涓畬鏁寸殑鍙栬瘝榪囩▼褰掔撼鎴愪互涓嬪嚑涓楠わ細<br />1錛?瀹夎榧犳爣閽╁瓙錛岄氳繃閽╁瓙鍑芥暟鑾峰緱榧犳爣娑堟伅銆?br />浣跨敤鍒扮殑API鍑芥暟錛歋etWindowsHookEx<br />2錛?寰楀埌榧犳爣鐨勫綋鍓嶄綅緗紝鍚戦紶鏍囦笅鐨勭獥鍙e彂閲嶇敾娑堟伅錛岃瀹冭皟鐢ㄧ郴緇熷嚱鏁伴噸鐢葷獥鍙c?br />聽聽聽聽 浣跨敤鍒扮殑API鍑芥暟錛歐indowFromPoint錛孲creenToClient錛孖nvalidateRect<br />3錛?鎴幏瀵圭郴緇熷嚱鏁扮殑璋冪敤錛屽彇寰楀弬鏁幫紝涔熷氨鏄垜浠鍙栫殑璇嶃?br />瀵逛簬澶у鏁扮殑Windows搴旂敤紼嬪簭鏉ヨ錛屽鏋滆鍙栬瘝錛屾垜浠渶瑕佹埅鑾風殑鏄淕di32.dll鈥濅腑鐨勨淭extOutA鈥濆嚱鏁般?br />鎴戜滑鍏堜豢鐓extOutA鍑芥暟鍐欎竴涓嚜宸辯殑MyTextOutA鍑芥暟錛屽錛?br />BOOL WINAPI MyTextOutA(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString,int cbString)<br />{<br />聽聽聽聽聽聽 // 榪欓噷榪涜杈撳嚭lpszString鐨勫鐞?br />聽聽聽聽聽聽聽聽聽聽 // 鐒跺悗璋冪敤姝g増鐨凾extOutA鍑芥暟<br />}<br />鎶婅繖涓嚱鏁版斁鍦ㄥ畨瑁呬簡閽╁瓙鐨勫姩鎬佽繛鎺ュ簱涓紝鐒跺悗璋冪敤鎴戜滑鏈鍚庣粰鍑虹殑HookImportFunction鍑芥暟鏉ユ埅鑾瘋繘紼?br />瀵筎extOutA鍑芥暟鐨勮皟鐢紝璺寵漿鍒版垜浠殑MyTextOutA鍑芥暟錛屽畬鎴愬杈撳嚭瀛楃涓茬殑鎹曟崏銆侶ookImportFunction鐨?br />鐢ㄦ硶錛?br />聽HOOKFUNCDESC hd;<br />聽PROC聽聽聽聽聽聽聽聽 pOrigFuns;<br />聽hd.szFunc=TextOutA;<br />聽hd.pProc=(PROC)MyTextOutA;<br />聽HookImportFunction (AfxGetInstanceHandle(),gdi32.dll,&hd,pOrigFuns);<br />涓嬮潰緇欏嚭浜咹ookImportFunction鐨勬簮浠g爜錛岀浉淇¤灝界殑娉ㄩ噴涓瀹氫笉浼氳鎮ㄨ寰楃悊瑙f埅鑾峰埌搴曟槸鎬庝箞瀹炵幇鐨?br />寰堥毦錛孫k,Let鈥檚 Go錛?/p><p>///////////////////////////////////////////// Begin ///////////////////////////////////////////////////////////////<br />#include <crtdbg.h></p><p>// 榪欓噷瀹氫箟浜嗕竴涓駭鐢熸寚閽堢殑瀹?br />#define MakePtr(cast, ptr, AddValue) (cast)((DWORD)(ptr)+(DWORD)(AddValue))</p><p>// 瀹氫箟浜咹OOKFUNCDESC緇撴瀯,鎴戜滑鐢ㄨ繖涓粨鏋勪綔涓哄弬鏁頒紶緇橦ookImportFunction鍑芥暟<br />typedef struct tag_HOOKFUNCDESC<br />{<br />聽 LPCSTR szFunc; // The name of the function to hook.<br />聽 PROC pProc;聽聽聽 // The procedure to blast in.<br />} HOOKFUNCDESC , * LPHOOKFUNCDESC;</p><p>// 榪欎釜鍑芥暟鐩戞祴褰撳墠緋葷粺鏄惁鏄疻indowNT<br />BOOL IsNT();</p><p>// 榪欎釜鍑芥暟寰楀埌hModule -- 鍗蟲垜浠渶瑕佹埅鑾風殑鍑芥暟鎵鍦ㄧ殑DLL妯″潡鐨勫紩鍏ユ弿榪扮(import descriptor)<br />PIMAGE_IMPORT_DESCRIPTOR GetNamedImportDescriptor(HMODULE hModule, LPCSTR szImportModule);</p><p>// 鎴戜滑鐨勪富鍑芥暟<br />BOOL HookImportFunction(HMODULE hModule, LPCSTR szImportModule, <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LPHOOKFUNCDESC paHookFunc, PROC* paOrigFuncs)<br />{<br />/////////////////////// 涓嬮潰鐨勪唬鐮佹嫻嬪弬鏁扮殑鏈夋晥鎬?////////////////////////////<br />聽_ASSERT(szImportModule);<br />聽_ASSERT(!IsBadReadPtr(paHookFunc, sizeof(HOOKFUNCDESC)));<br />#ifdef _DEBUG<br />聽if (paOrigFuncs) _ASSERT(!IsBadWritePtr(paOrigFuncs, sizeof(PROC)));<br />聽_ASSERT(paHookFunc.szFunc);<br />聽_ASSERT(*paHookFunc.szFunc != \0);<br />聽聽聽聽聽聽聽 _ASSERT(!IsBadCodePtr(paHookFunc.pProc));<br />#endif<br />聽if ((szImportModule == NULL) || (IsBadReadPtr(paHookFunc, sizeof(HOOKFUNCDESC))))<br />聽{<br />聽聽_ASSERT(FALSE);<br />聽聽SetLastErrorEx(ERROR_INVALID_PARAMETER, SLE_ERROR);<br />聽聽return FALSE;<br />聽}<br />//////////////////////////////////////////////////////////////////////////////</p><p>聽// 鐩戞祴褰撳墠妯″潡鏄惁鏄湪2GB铏氭嫙鍐呭瓨絀洪棿涔嬩笂<br />聽// 榪欓儴鍒嗙殑鍦板潃鍐呭瓨鏄睘浜嶹in32榪涚▼鍏變韓鐨?br />聽if (!IsNT() && ((DWORD)hModule >= 0x80000000))<br />聽{<br />聽聽_ASSERT(FALSE);<br />聽聽SetLastErrorEx(ERROR_INVALID_HANDLE, SLE_ERROR);<br />聽聽return FALSE;<br />聽}<br />聽聽聽 聽// 娓呴浂<br />聽if (paOrigFuncs) memset(paOrigFuncs, NULL, sizeof(PROC)); </p><p>聽// 璋冪敤GetNamedImportDescriptor()鍑芥暟,鏉ュ緱鍒癶Module -- 鍗蟲垜浠渶瑕?br />聽// 鎴幏鐨勫嚱鏁版墍鍦ㄧ殑DLL妯″潡鐨勫紩鍏ユ弿榪扮(import descriptor)<br />聽PIMAGE_IMPORT_DESCRIPTOR pImportDesc = GetNamedImportDescriptor(hModule, szImportModule);<br />聽if (pImportDesc == NULL)<br />聽return FALSE; // 鑻ヤ負絀?鍒欐ā鍧楁湭琚綋鍓嶈繘紼嬫墍寮曞叆</p><p>聽//聽 浠嶥LL妯″潡涓緱鍒板師濮嬬殑THUNK淇℃伅,鍥犱負pImportDesc->FirstThunk鏁扮粍涓殑鍘熷淇℃伅宸茬粡<br />聽//聽 鍦ㄥ簲鐢ㄧ▼搴忓紩鍏ヨDLL鏃惰鐩栦笂浜嗘墍鏈夌殑寮曞叆淇℃伅,鎵浠ユ垜浠渶瑕侀氳繃鍙栧緱pImportDesc->OriginalFirstThunk<br />聽//聽 鎸囬拡鏉ヨ闂紩鍏ュ嚱鏁板悕絳変俊鎭?br />聽PIMAGE_THUNK_DATA pOrigThunk = MakePtr(PIMAGE_THUNK_DATA, hModule, <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 pImportDesc->OriginalFirstThunk);</p><p>聽//聽 浠巔ImportDesc->FirstThunk寰楀埌IMAGE_THUNK_DATA鏁扮粍鐨勬寚閽?鐢變簬榪欓噷鍦―LL琚紩鍏ユ椂宸茬粡濉厖浜?br />聽//聽 鎵鏈夌殑寮曞叆淇℃伅,鎵浠ョ湡姝g殑鎴幏瀹為檯涓婃鏄湪榪欓噷榪涜鐨?br />聽PIMAGE_THUNK_DATA pRealThunk = MakePtr(PIMAGE_THUNK_DATA, hModule, pImportDesc->FirstThunk);</p><p>聽//聽 絀蜂婦IMAGE_THUNK_DATA鏁扮粍,瀵繪壘鎴戜滑闇瑕佹埅鑾風殑鍑芥暟,榪欐槸鏈鍏抽敭鐨勯儴鍒?<br />聽while (pOrigThunk->u1.Function)<br />聽{<br />聽聽// 鍙鎵鵑偅浜涙寜鍑芥暟鍚嶈屼笉鏄簭鍙峰紩鍏ョ殑鍑芥暟<br />聽聽if (IMAGE_ORDINAL_FLAG != (pOrigThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG))<br />聽聽{<br />聽聽聽// 寰楀埌寮曞叆鍑芥暟鐨勫嚱鏁板悕<br />聽聽聽PIMAGE_IMPORT_BY_NAME pByName = MakePtr(PIMAGE_IMPORT_BY_NAME, hModule,<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽 pOrigThunk->u1.AddressOfData);</p><p>聽聽聽// 濡傛灉鍑芥暟鍚嶄互NULL寮濮?璺寵繃,緇х畫涓嬩竴涓嚱鏁奧犅?<br />聽聽聽if (\0 == pByName->Name[0])<br />聽聽聽聽continue;</p><p>聽聽聽// bDoHook鐢ㄦ潵媯鏌ユ槸鍚︽埅鑾鋒垚鍔?br />聽聽聽BOOL bDoHook = FALSE;</p><p>聽聽聽// 媯鏌ユ槸鍚﹀綋鍓嶅嚱鏁版槸鎴戜滑闇瑕佹埅鑾風殑鍑芥暟<br />聽聽聽if ((paHookFunc.szFunc[0] == pByName->Name[0]) &&<br />聽聽聽聽(strcmpi(paHookFunc.szFunc, (char*)pByName->Name) == 0))<br />聽聽聽{<br />聽聽聽聽// 鎵懼埌浜?<br />聽聽聽聽if (paHookFunc.pProc)<br />聽聽聽聽bDoHook = TRUE;<br />聽聽聽}<br />聽聽聽if (bDoHook)<br />聽聽聽{<br />聽聽聽聽// 鎴戜滑宸茬粡鎵懼埌浜嗘墍瑕佹埅鑾風殑鍑芥暟,閭d箞灝卞紑濮嬪姩鎵嬪惂<br />聽聽聽聽// 棣栧厛瑕佸仛鐨勬槸鏀瑰彉榪欎竴鍧楄櫄鎷熷唴瀛樼殑鍐呭瓨淇濇姢鐘舵?璁╂垜浠彲浠ヨ嚜鐢卞瓨鍙?br />聽聽聽聽MEMORY_BASIC_INFORMATION mbi_thunk;<br />聽聽聽聽VirtualQuery(pRealThunk, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));<br />聽聽聽聽_ASSERT(VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 PAGE_READWRITE, &mbi_thunk.Protect));</p><p>聽聽聽聽// 淇濆瓨鎴戜滑鎵瑕佹埅鑾風殑鍑芥暟鐨勬紜煩杞湴鍧<br />聽聽聽聽if (paOrigFuncs)<br />聽聽聽聽聽 paOrigFuncs = (PROC)pRealThunk->u1.Function;</p><p>聽聽聽聽// 灝咺MAGE_THUNK_DATA鏁扮粍涓殑鍑芥暟璺寵漿鍦板潃鏀瑰啓涓烘垜浠嚜宸辯殑鍑芥暟鍦板潃!<br />聽聽聽聽// 浠ュ悗鎵鏈夎繘紼嬪榪欎釜緋葷粺鍑芥暟鐨勬墍鏈夎皟鐢ㄩ兘灝嗘垚涓哄鎴戜滑鑷繁緙栧啓鐨勫嚱鏁扮殑璋冪敤<br />聽聽聽聽pRealThunk->u1.Function = (PDWORD)paHookFunc.pProc;</p><p>聽聽聽聽// 鎿嶄綔瀹屾瘯!灝嗚繖涓鍧楄櫄鎷熷唴瀛樻敼鍥炲師鏉ョ殑淇濇姢鐘舵?br />聽聽聽聽DWORD dwOldProtect;<br />聽聽聽聽_ASSERT(VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 mbi_thunk.Protect, &dwOldProtect));<br />聽聽聽聽SetLastError(ERROR_SUCCESS);<br />聽聽聽聽return TRUE;<br />聽聽聽}<br />聽聽}<br />聽聽// 璁塊棶IMAGE_THUNK_DATA鏁扮粍涓殑涓嬩竴涓厓绱?br />聽聽pOrigThunk++;<br />聽聽pRealThunk++;<br />聽}<br />聽return TRUE;<br />}</p><p>// GetNamedImportDescriptor鍑芥暟鐨勫疄鐜?br />PIMAGE_IMPORT_DESCRIPTOR GetNamedImportDescriptor(HMODULE hModule, LPCSTR szImportModule)<br />{<br />聽// 媯嫻嬪弬鏁?br />聽_ASSERT(szImportModule);<br />聽_ASSERT(hModule);<br />聽if ((szImportModule == NULL) || (hModule == NULL))<br />聽{<br />聽聽_ASSERT(FALSE);<br />聽聽SetLastErrorEx(ERROR_INVALID_PARAMETER, SLE_ERROR);<br />聽聽return NULL;<br />聽}</p><p>聽// 寰楀埌Dos鏂囦歡澶?br />聽PIMAGE_DOS_HEADER pDOSHeader = (PIMAGE_DOS_HEADER) hModule;</p><p>聽// 媯嫻嬫槸鍚Z鏂囦歡澶?br />聽if (IsBadReadPtr(pDOSHeader, sizeof(IMAGE_DOS_HEADER)) || <br />聽聽(pDOSHeader->e_magic != IMAGE_DOS_SIGNATURE))<br />聽{<br />聽聽_ASSERT(FALSE);<br />聽聽SetLastErrorEx(ERROR_INVALID_PARAMETER, SLE_ERROR);<br />聽聽return NULL;<br />聽}</p><p>聽// 鍙栧緱PE鏂囦歡澶?br />聽PIMAGE_NT_HEADERS pNTHeader = MakePtr(PIMAGE_NT_HEADERS, pDOSHeader, pDOSHeader->e_lfanew);</p><p>聽// 媯嫻嬫槸鍚E鏄犲儚鏂囦歡<br />聽if (IsBadReadPtr(pNTHeader, sizeof(IMAGE_NT_HEADERS)) || <br />聽聽 (pNTHeader->Signature != IMAGE_NT_SIGNATURE))<br />聽{<br />聽聽_ASSERT(FALSE);<br />聽聽SetLastErrorEx(ERROR_INVALID_PARAMETER, SLE_ERROR);<br />聽聽return NULL;<br />聽}</p><p>聽// 媯鏌E鏂囦歡鐨勫紩鍏ユ(鍗?.idata section)<br />聽if (pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress == 0)<br />聽聽return NULL;</p><p>聽// 寰楀埌寮曞叆孌?鍗?.idata section)鐨勬寚閽?br />聽PIMAGE_IMPORT_DESCRIPTOR pImportDesc = MakePtr(PIMAGE_IMPORT_DESCRIPTOR, pDOSHeader,<br />聽聽pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);</p><p>聽// 絀蜂婦PIMAGE_IMPORT_DESCRIPTOR鏁扮粍瀵繪壘鎴戜滑闇瑕佹埅鑾風殑鍑芥暟鎵鍦ㄧ殑妯″潡<br />聽while (pImportDesc->Name)<br />聽{<br />聽聽PSTR szCurrMod = MakePtr(PSTR, pDOSHeader, pImportDesc->Name);<br />聽聽if (stricmp(szCurrMod, szImportModule) == 0)<br />聽聽聽聽聽 break; // 鎵懼埌!涓柇寰幆<br />聽聽// 涓嬩竴涓厓绱?br />聽聽pImportDesc++;<br />聽}</p><p>聽// 濡傛灉娌℃湁鎵懼埌,璇存槑鎴戜滑瀵繪壘鐨勬ā鍧楁病鏈夎褰撳墠鐨勮繘紼嬫墍寮曞叆!<br />聽if (pImportDesc->Name == NULL)<br />聽聽return NULL;</p><p>聽// 榪斿洖鍑芥暟鎵鎵懼埌鐨勬ā鍧楁弿榪扮(import descriptor)<br />聽return pImportDesc;<br />}</p><p>// IsNT()鍑芥暟鐨勫疄鐜?br />BOOL IsNT()<br />{<br />聽OSVERSIONINFO stOSVI;<br />聽memset(&stOSVI, NULL, sizeof(OSVERSIONINFO));<br />聽stOSVI.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);<br />聽BOOL bRet = GetVersionEx(&stOSVI);<br />聽_ASSERT(TRUE == bRet);<br />聽if (FALSE == bRet) return FALSE;<br />聽return (VER_PLATFORM_WIN32_NT == stOSVI.dwPlatformId);<br />}<br />/////////////////////////////////////////////// End //////////////////////////////////////////////////////////////////////</p><p>聽聽 涓嶇煡閬撳湪榪欑瘒鏂囩珷闂笘涔嬪墠錛屾湁澶氬皯鏈嬪弸灝濊瘯榪囧幓瀹炵幇鈥滈紶鏍囧睆騫曞彇璇嶁濊繖欏瑰厖婊′簡鎸戞垬鐨勬妧鏈紝涔熷彧鏈夊皾璇曡繃鐨勬湅鍙嬫墠鑳戒綋浼氬埌鍏墮棿鐨勪笉鏄擄紝灝ゅ叾鍦ㄦ帰绱PI鍑芥暟鐨勬埅鑾鋒椂錛屾墜澶寸殑鍑犵瘒璧勬枡娌℃湁涓綃囨槸娑夊強鍒板叧閿唬鐮佺殑錛岄噸瑕佺殑鍦版柟閮芥槸涓絎斾唬榪囷紝MSDN鏇存槸鏄懼緱鑻嶇櫧鑰屾棤鍔涳紝涔熶笉鐭ラ亾闄や簡IMAGE_IMPORT_DESCRIPTOR鍜孖MAGE_THUNK_DATA錛屽井杞繕闅愯棌浜嗗灝戠瀵嗭紝濂藉湪紜潃澶寸毊榪樻槸鎶婂畠緇欐敾鍏嬩簡錛屽笇鏈涜繖綃囨枃绔犲澶у鑳芥湁鎵甯姪銆?/p><img src ="http://m.shnenglu.com/xushaohua/aggbug/13227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xushaohua/" target="_blank">shaohua</a> 2006-10-02 20:39 <a href="http://m.shnenglu.com/xushaohua/archive/2006/10/02/13227.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://zhongrenma.com" target="_blank">国内一区二区三区</a>| <a href="http://lalandapps.com" target="_blank">久久久久看片</a>| <a href="http://707fx.com" target="_blank">久久国产主播</a>| <a href="http://gbandal.com" target="_blank">欧美在线观看视频一区二区三区</a>| <a href="http://www-14333.com" target="_blank">亚洲视频在线观看免费</a>| <a href="http://hhbz518.com" target="_blank">中文在线资源观看网站视频免费不卡</a>| <a href="http://www0505nn.com" target="_blank">99re这里只有精品6</a>| <a href="http://youminwang.com" target="_blank">一区二区三区**美女毛片</a>| <a href="http://69kun.com" target="_blank">亚洲午夜影视影院在线观看</a>| <a href="http://9uu91.com" target="_blank">欧美一区观看</a>| <a href="http://666cmc.com" target="_blank">欧美激情精品久久久久久大尺度 </a>| <a href="http://bizssr.com" target="_blank">国产精品扒开腿做爽爽爽软件</a>| <a href="http://04781900.com" target="_blank">欧美日韩一卡二卡</a>| <a href="http://7782y.com" target="_blank">国产在线不卡</a>| <a href="http://mimi78.com" target="_blank">99av国产精品欲麻豆</a>| <a href="http://booyitech.com" target="_blank">亚洲免费在线观看视频</a>| <a href="http://47b8.com" target="_blank">老司机午夜精品</a>| <a href="http://universehb.com" target="_blank">亚洲精品免费观看</a>| <a href="http://tingxihuan.com" target="_blank">亚洲自拍偷拍一区</a>| <a href="http://ourskycity.com" target="_blank">久久久av水蜜桃</a>| <a href="http://077229.com" target="_blank">欧美黑人一区二区三区</a>| <a href="http://9928k.com" target="_blank">一区二区精品国产</a>| <a href="http://www-401313.com" target="_blank">久久精品免费播放</a>| <a href="http://www49797.com" target="_blank">欧美三级电影一区</a>| <a href="http://6673328.com" target="_blank">在线国产精品一区</a>| <a href="http://246767.com" target="_blank">欧美在线播放一区</a>| <a href="http://www9797abc.com" target="_blank">亚洲精品美女久久久久</a>| <a href="http://060607.com" target="_blank">久久久久国产精品人</a>| <a href="http://jdavmm.com" target="_blank">国产精品久久久久久久久久久久 </a>| <a href="http://hnjlhgw.com" target="_blank">欧美伦理91</a>| <a href="http://www44552.com" target="_blank">国产一区二区三区黄视频</a>| <a href="http://carboarm.com" target="_blank">亚洲免费播放</a>| <a href="http://popowq.com" target="_blank">美女精品国产</a>| <a href="http://xiaobi13.com" target="_blank">欧美一级夜夜爽</a>| <a href="http://0085212.com" target="_blank">欧美午夜电影在线</a>| <a href="http://8558585.com" target="_blank">亚洲精品三级</a>| <a href="http://gaysexcube.com" target="_blank">欧美/亚洲一区</a>| <a href="http://by1422.com" target="_blank">欧美在线综合视频</a>| <a href="http://nmbgbc.com" target="_blank">国产噜噜噜噜噜久久久久久久久</a>| <a href="http://jiazhuangma.com" target="_blank">亚洲精品国产无天堂网2021</a>| <a href="http://xxdd51.com" target="_blank">久久人体大胆视频</a>| <a href="http://tongrenyaoye.com" target="_blank">午夜精品一区二区三区电影天堂</a>| <a href="http://by4433.com" target="_blank">欧美国产日韩精品免费观看</a>| <a href="http://www-90567.com" target="_blank">在线观看欧美黄色</a>| <a href="http://yw9677.com" target="_blank">玖玖视频精品</a>| <a href="http://8eeeccc.com" target="_blank">欧美在线观看视频一区二区</a>| <a href="http://hengbang50.com" target="_blank">国产精品久久午夜夜伦鲁鲁</a>| <a href="http://xajtyd.com" target="_blank">一区二区三区 在线观看视</a>| <a href="http://maomi998.com" target="_blank">亚洲丰满在线</a>| <a href="http://www901aaa.com" target="_blank">久久久久久亚洲精品杨幂换脸</a>| <a href="http://www-333410.com" target="_blank">国产精品久久久久久久免费软件</a>| <a href="http://4446666.com" target="_blank">一本久道久久综合中文字幕</a>| <a href="http://aimashe.com" target="_blank">亚洲第一主播视频</a>| <a href="http://cmtqd.com" target="_blank">欧美xart系列在线观看</a>| <a href="http://y08877.com" target="_blank">亚洲国产精品福利</a>| <a href="http://carboarm.com" target="_blank">欧美黄色一级视频</a>| <a href="http://820002.com" target="_blank">欧美大色视频</a>| <a href="http://www-777324.com" target="_blank">日韩亚洲一区二区</a>| <a href="http://chinashixin.com" target="_blank">亚洲另类自拍</a>| <a href="http://ewaygou.com" target="_blank">欧美日韩在线播放</a>| <a href="http://556995.com" target="_blank">亚洲欧美成人精品</a>| <a href="http://csjtzn.com" target="_blank">亚洲欧美伊人</a>| <a href="http://3333347.com" target="_blank">国内一区二区三区</a>| <a href="http://www789yys.com" target="_blank">欧美成人小视频</a>| <a href="http://4106446.com" target="_blank">欧美二区在线</a>| <a href="http://7485888.com" target="_blank">一区二区三区四区蜜桃</a>| <a href="http://3333577.com" target="_blank">在线综合亚洲</a>| <a href="http://gffffg.com" target="_blank">国产一区美女</a>| <a href="http://www66441.com" target="_blank">亚洲第一精品福利</a>| <a href="http://305838.com" target="_blank">欧美日韩免费一区</a>| <a href="http://www433ad.com" target="_blank">午夜在线成人av</a>| <a href="http://syddzs.com" target="_blank">欧美一区二区三区免费观看</a>| <a href="http://y1bbs.com" target="_blank">狠狠色综合网</a>| <a href="http://www-23918.com" target="_blank">亚洲丰满少妇videoshd</a>| <a href="http://613by.com" target="_blank">欧美视频中文字幕在线</a>| <a href="http://163263.com" target="_blank">欧美亚洲综合久久</a>| <a href="http://o10669.com" target="_blank">免费在线观看精品</a>| <a href="http://zhipiao998.com" target="_blank">嫩草影视亚洲</a>| <a href="http://15013010203.com" target="_blank">亚洲深夜福利</a>| <a href="http://360cabin.com" target="_blank">欧美亚洲免费</a>| <a href="http://7213523.com" target="_blank">亚洲国产成人porn</a>| <a href="http://www-577511.com" target="_blank">日韩一区二区精品</a>| <a href="http://universehb.com" target="_blank">国产精品手机在线</a>| <a href="http://dxmdzz.com" target="_blank">免费观看在线综合</a>| <a href="http://caoliu20.com" target="_blank">欧美日韩国产综合久久</a>| <a href="http://498626.com" target="_blank">久久精品官网</a>| <a href="http://hhhtalk.com" target="_blank">欧美好骚综合网</a>| <a href="http://instantptt.com" target="_blank">欧美亚洲综合在线</a>| <a href="http://jsgf444.com" target="_blank">欧美大片免费</a>| <a href="http://idc0558.com" target="_blank">欧美在线观看视频</a>| <a href="http://czsanlin.com" target="_blank">欧美不卡视频一区</a>| <a href="http://6633kj.com" target="_blank">欧美一区激情视频在线观看</a>| <a href="http://388123cc.com" target="_blank">蜜桃av噜噜一区二区三区</a>| <a href="http://www38ccc.com" target="_blank">一区二区欧美视频</a>| <a href="http://gs-qintai.com" target="_blank">久久精品观看</a>| <a href="http://zyjdxx.com" target="_blank">宅男66日本亚洲欧美视频</a>| <a href="http://kkwwxx.com" target="_blank">欧美专区在线</a>| <a href="http://szbeikai.com" target="_blank">国产精品99久久99久久久二8</a>| <a href="http://sexx777.com" target="_blank">性色av一区二区三区</a>| <a href="http://aaa798.com" target="_blank">亚洲国内自拍</a>| <a href="http://anxingou365.com" target="_blank">亚洲欧美国产高清va在线播</a>| <a href="http://zz9876.com" target="_blank">亚洲另类自拍</a>| <a href="http://17kfe.com" target="_blank">久久久国产精品亚洲一区 </a>| <a href="http://22abb.com" target="_blank">国产精品系列在线播放</a>| <a href="http://www31931.com" target="_blank">免费欧美在线视频</a>| <a href="http://787299.com" target="_blank">国产精品免费久久久久久</a>| <a href="http://7504329.com" target="_blank">欧美高清视频在线</a>| <a href="http://uu6623.com" target="_blank">国产亚洲人成网站在线观看</a>| <a href="http://quoviajes.com" target="_blank">亚洲精品视频在线播放</a>| <a href="http://xuanxuan88.com" target="_blank">激情久久一区</a>| <a href="http://oudaole.com" target="_blank">亚洲专区一区</a>| <a href="http://www55747.com" target="_blank">亚洲图片欧美午夜</a>| <a href="http://gdjuba.com" target="_blank">欧美成人亚洲成人</a>| <a href="http://aidingcai.com" target="_blank">巨胸喷奶水www久久久免费动漫</a>| <a href="http://ndr666.com" target="_blank">国产精品久久久一本精品</a>| <a href="http://8004006.com" target="_blank">欧美黑人在线观看</a>| <a href="http://77777gao.com" target="_blank">在线日韩视频</a>| <a href="http://ebmsci.com" target="_blank">久久久天天操</a>| <a href="http://hafenchen.com" target="_blank">久久综合久色欧美综合狠狠</a>| <a href="http://hnjlhgw.com" target="_blank">国产精品久久久99</a>| <a href="http://580388.com" target="_blank">一区二区久久久久久</a>| <a href="http://1323123.com" target="_blank">一本色道久久综合狠狠躁的推荐</a>| <a href="http://hh474.com" target="_blank">麻豆精品传媒视频</a>| <a href="http://highfivewe.com" target="_blank">另类av导航</a>| <a href="http://4106446.com" target="_blank">狠狠色狠狠色综合日日91app</a>| <a href="http://www-55655.com" target="_blank">亚洲专区免费</a>| <a href="http://bmcshy.com" target="_blank">欧美一级播放</a>| <a href="http://520844www.com" target="_blank">国产欧美精品国产国产专区</a>| <a href="http://6868681.com" target="_blank">亚洲午夜精品久久久久久浪潮</a>| <a href="http://www201314.com" target="_blank">99综合电影在线视频</a>| <a href="http://xy3977.com" target="_blank">欧美美女bbbb</a>| <a href="http://saobi6.com" target="_blank">日韩系列在线</a>| <a href="http://chainhuayu.com" target="_blank">亚洲午夜电影网</a>| <a href="http://lfxhfh.com" target="_blank">国产精品久久久久91</a>| <a href="http://tigerpowerinc.com" target="_blank">中文高清一区</a>| <a href="http://y08877.com" target="_blank">欧美诱惑福利视频</a>| <a href="http://coolpaly.com" target="_blank">国产日本欧美在线观看</a>| <a href="http://342008.com" target="_blank">性色一区二区</a>| <a href="http://zj-jufeng.com" target="_blank">樱花yy私人影院亚洲</a>| <a href="http://qscxx3.com" target="_blank">久久99伊人</a>| <a href="http://www-440450.com" target="_blank">久久女同互慰一区二区三区</a>| <a href="http://hgx123.com" target="_blank">国产午夜精品在线</a>| <a href="http://123lifenet.com" target="_blank">久久精品成人欧美大片古装</a>| <a href="http://26163c.com" target="_blank">老司机免费视频一区二区三区</a>| <a href="http://icciran.com" target="_blank">激情av一区二区</a>| <a href="http://www99mmnn.com" target="_blank">老司机一区二区</a>| <a href="http://xjj733.com" target="_blank">亚洲黄色影片</a>| <a href="http://www-3121.com" target="_blank">中国av一区</a>| <a href="http://jldianda.com" target="_blank">国产精品毛片高清在线完整版</a>| <a href="http://261262.com" target="_blank">亚洲欧美清纯在线制服</a>| <a href="http://343119.com" target="_blank">久久一区二区三区av</a>| <a href="http://7504329.com" target="_blank">亚洲激情视频网站</a>| <a href="http://wanzhixue.com" target="_blank">欧美日产一区二区三区在线观看</a>| <a href="http://77777kkk.com" target="_blank">日韩一区二区免费高清</a>| <a href="http://yyy922.com" target="_blank">性做久久久久久久久</a>| <a href="http://9lunli.com" target="_blank">国内成人在线</a>| <a href="http://stt788.com" target="_blank">欧美韩日精品</a>| <a href="http://850cn.com" target="_blank">亚洲免费一在线</a>| <a href="http://yy6024.com" target="_blank">你懂的网址国产 欧美</a>| <a href="http://srojsy.com" target="_blank">99精品久久久</a>| <a href="http://caopormo.com" target="_blank">国产老肥熟一区二区三区</a>| <a href="http://916969.com" target="_blank">久久人人爽人人爽</a>| <a href="http://ahhccz.com" target="_blank">亚洲精品乱码视频</a>| <a href="http://668756.com" target="_blank">久久久精品一区二区三区</a>| <a href="http://c7lc.com" target="_blank">亚洲国产一区二区三区在线播 </a>| <a href="http://zisxks.com" target="_blank">欧美三级精品</a>| <a href="http://78757a.com" target="_blank">欧美在线观看天堂一区二区三区</a>| <a href="http://678255.com" target="_blank">欧美国产在线观看</a>| <a href="http://300618.com" target="_blank">午夜精品久久久99热福利</a>| <a href="http://8eb26.com" target="_blank">精品粉嫩aⅴ一区二区三区四区</a>| <a href="http://ybshg.com" target="_blank">欧美精品一卡二卡</a>| <a href="http://k82net.com" target="_blank">欧美中文字幕第一页</a>| <a href="http://5418002.com" target="_blank">亚洲人成毛片在线播放女女</a>| <a href="http://77017w.com" target="_blank">欧美一级网站</a>| <a href="http://www387333.com" target="_blank">亚洲日韩视频</a>| <a href="http://226600b.com" target="_blank">国产欧美日韩一区二区三区</a>| <a href="http://yimeimc.com" target="_blank">欧美99在线视频观看</a>| <a href="http://688528.com" target="_blank">欧美一级黄色网</a>| <a href="http://hbstjsgc.com" target="_blank">亚洲免费观看高清在线观看</a>| <a href="http://3990033.com" target="_blank">久久理论片午夜琪琪电影网</a>| <a href="http://ynzhuoyi.com" target="_blank">中文av字幕一区</a>| <a href="http://jgj230230.com" target="_blank">亚洲成色www8888</a>| <a href="http://8xfore.com" target="_blank">国产伦精品一区二区三区四区免费 </a>| <a href="http://457745.com" target="_blank">久久aⅴ乱码一区二区三区</a>| <a href="http://cqrebo.com" target="_blank">亚洲激情网址</a>| <a href="http://szbeikai.com" target="_blank">久久尤物视频</a>| <a href="http://yimeimc.com" target="_blank">午夜精品久久久久久久</a>| <a href="http://xccp4888.com" target="_blank">99国内精品</a>| <a href="http://jpqueyou.com" target="_blank">亚洲风情亚aⅴ在线发布</a>| <a href="http://www-23918.com" target="_blank">国产精品美女一区二区</a>| <a href="http://000695.com" target="_blank">欧美日韩精品在线</a>| <a href="http://gdvapar.com" target="_blank">欧美成人视屏</a>| <a href="http://5767j.com" target="_blank">久久婷婷成人综合色</a>| <a href="http://bizssr.com" target="_blank">午夜精品成人在线</a>| <a href="http://er65.com" target="_blank">一区二区三区四区国产</a>| <a href="http://e789a.com" target="_blank">亚洲人成在线观看网站高清</a>| <a href="http://sh738.com" target="_blank">欧美成人一区二区三区</a>| <a href="http://www227ee.com" target="_blank">狂野欧美激情性xxxx</a>| <a href="http://110673.com" target="_blank">久久久久久香蕉网</a>| <a href="http://2cc8.com" target="_blank">欧美怡红院视频</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>