西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索
缁崵绮哄銉ュ徔
U婢堆冪瑎v4.7.37.56 閺堚偓閺傛壆澧�U婢堆冪瑎v4.7.37.56 閺堚偓閺傛壆澧�
HD Tune  Prov5.75 濮瑰瀵茬紒鑳閻楃懓鍩嗛悧锟�HD Tune Prov5.75 濮瑰瀵茬紒鑳閻楃懓鍩嗛悧锟�
DiskGenius 娑撴挷绗熼悧鍦�5.2.1.941 鐎规ɑ鏌熼悧锟�DiskGenius 娑撴挷绗熼悧鍦�5.2.1.941 鐎规ɑ鏌熼悧锟�
360鏉烆垯娆㈢粻鈥愁啀v7.5.0.1460 鐎规ɑ鏌熼張鈧弬鎵360鏉烆垯娆㈢粻鈥愁啀v7.5.0.1460 鐎规ɑ鏌熼張鈧弬鎵
Cpu-Z娑擃厽鏋冮悧鍧�1.98.0 缂佽儻澹婃稉顓熸瀮閻楋拷Cpu-Z娑擃厽鏋冮悧鍧�1.98.0 缂佽儻澹婃稉顓熸瀮閻楋拷
缂冩垹绮跺銉ュ徔
閼垫崘顔嗛悽浣冨壋缁犫€愁啀V15.2 鐎规ɑ鏌熷锝呯础閻楋拷閼垫崘顔嗛悽浣冨壋缁犫€愁啀V15.2 鐎规ɑ鏌熷锝呯础閻楋拷
office2016濠碘偓濞茶浼愰崗绌攎sv19.5.2 鐎规ɑ鏌熼張鈧弬鎵office2016濠碘偓濞茶浼愰崗绌攎sv19.5.2 鐎规ɑ鏌熼張鈧弬鎵
鏉╁懘娴�11閺堚偓閺傛壆澧梫11.3.6.1870 鐎规ɑ鏌熼悧锟�鏉╁懘娴�11閺堚偓閺傛壆澧梫11.3.6.1870 鐎规ɑ鏌熼悧锟�
360閸忓秷鍨倃ifi5.3.0.5000 鐎规ɑ鏌熼張鈧弬鎵360閸忓秷鍨倃ifi5.3.0.5000 鐎规ɑ鏌熼張鈧弬鎵
360鐎瑰鍙忓ù蹇氼潔閸o拷2022v13.1.5188.0 鐎规ɑ鏌熷锝呯础閻楋拷360鐎瑰鍙忓ù蹇氼潔閸o拷2022v13.1.5188.0 鐎规ɑ鏌熷锝呯础閻楋拷
婢舵艾鐛熸担鎾惰
闁伴攱鍨滈棅鍏呯閻╋拷2022v9.1.6.2 鐎规ɑ鏌熷锝呯础閻楋拷闁伴攱鍨滈棅鍏呯閻╋拷2022v9.1.6.2 鐎规ɑ鏌熷锝呯础閻楋拷
閺嗘挳顥撹ぐ閬嶇叾2021V5.81.0202.1111鐎规ɑ鏌熷锝呯础閻楋拷閺嗘挳顥撹ぐ閬嶇叾2021V5.81.0202.1111鐎规ɑ鏌熷锝呯础閻楋拷
韫囶偅鎸�5.0濮橀晲绗夐崡鍥╅獓閻楋拷5.0.80 妤犮劌銇旈悧锟�韫囶偅鎸�5.0濮橀晲绗夐崡鍥╅獓閻楋拷5.0.80 妤犮劌銇旈悧锟�
娴兼﹢鍙�2022鐎广垺鍩涚粩鐤�8.0.9.11050 鐎规ɑ鏌熼張鈧弬鎵娴兼﹢鍙�2022鐎广垺鍩涚粩鐤�8.0.9.11050 鐎规ɑ鏌熼張鈧弬鎵
閻栧崬顨岄懝楦款潒妫版叆13.1.5鐎规ɑ鏌熺€瑰宕滈悧锟�閻栧崬顨岄懝楦款潒妫版叆13.1.5鐎规ɑ鏌熺€瑰宕滈悧锟�
閸ユ儳鑸伴崶鎯у剼
photoshop cs6 娑擃厽鏋冮悧锟�13.1.2.3 閸忓秷鍨傛稉顓熸瀮閻楋拷photoshop cs6 娑擃厽鏋冮悧锟�13.1.2.3 閸忓秷鍨傛稉顓熸瀮閻楋拷
Autodesk 3ds Max 2012鐎规ɑ鏌熺粻鈧担鎾茶厬閺傚洨澧梉32&64]Autodesk 3ds Max 2012鐎规ɑ鏌熺粻鈧担鎾茶厬閺傚洨澧梉32&64]
CAD2007閸忓秷鍨傛稉顓熸瀮閻楋拷CAD2007閸忓秷鍨傛稉顓熸瀮閻楋拷
vc鏉╂劘顢戞惔锟�2019閺堚偓閺傛壆澧梫2019.3.2(32&64娴o拷)vc鏉╂劘顢戞惔锟�2019閺堚偓閺傛壆澧梫2019.3.2(32&64娴o拷)
.NET Framework 4.8鐎规ɑ鏌熼悧锟�4.8.3646.NET Framework 4.8鐎规ɑ鏌熼悧锟�4.8.3646
閼卞﹤銇夐懕鏃傜捕
QQ2022v9.5.6.28129 鐎规ɑ鏌熼張鈧弬鎵QQ2022v9.5.6.28129 鐎规ɑ鏌熼張鈧弬鎵
瀵邦喕淇婇悽浣冨壋閻楋拷2022v3.5.0.44 鐎规ɑ鏌熷锝呯础閻楋拷瀵邦喕淇婇悽浣冨壋閻楋拷2022v3.5.0.44 鐎规ɑ鏌熷锝呯础閻楋拷
閸楀啰澧伴崡鏍ь啀瀹搞儰缍旈獮鍐插酱v9.02.02N 鐎规ɑ鏌熼悧锟�閸楀啰澧伴崡鏍ь啀瀹搞儰缍旈獮鍐插酱v9.02.02N 鐎规ɑ鏌熼悧锟�
QT鐠囶參鐓禫4.6.80.18262鐎规ɑ鏌熼張鈧弬鎵QT鐠囶參鐓禫4.6.80.18262鐎规ɑ鏌熼張鈧弬鎵
妞嬬偘淇�2018V6.2.0700 鐎规ɑ鏌熷锝呯础閻楋拷妞嬬偘淇�2018V6.2.0700 鐎规ɑ鏌熷锝呯础閻楋拷
閻㈢喐妞块張宥呭
閺€顖欑帛鐎规繈鎸堕崠锟�(Alipay)V10.2.53.7000 鐎瑰宕滈悧锟�閺€顖欑帛鐎规繈鎸堕崠锟�(Alipay)V10.2.53.7000 鐎瑰宕滈悧锟�
閻ф儳瀹抽崷鏉挎禈鐎佃壈鍩�2022V15.12.10 鐎瑰宕滈幍瀣簚閻楋拷閻ф儳瀹抽崷鏉挎禈鐎佃壈鍩�2022V15.12.10 鐎瑰宕滈幍瀣簚閻楋拷
閹靛婧€濞fê鐤傜€广垺鍩涚粩鐥�10.8.40鐎规ɑ鏌熼張鈧弬鎵閹靛婧€濞fê鐤傜€广垺鍩涚粩鐥�10.8.40鐎规ɑ鏌熼張鈧弬鎵
閻e懘鈧梻缍夐幍瀣簚鐎广垺鍩涚粩鐥�5.6.9 鐎规ɑ鏌熼張鈧弬鎵閻e懘鈧梻缍夐幍瀣簚鐎广垺鍩涚粩鐥�5.6.9 鐎规ɑ鏌熼張鈧弬鎵
閸楀啳浜伴惌銉ㄧ槕閺堝秴濮焌ppv4.5.1鐎规ɑ鏌熼悧锟�閸楀啳浜伴惌銉ㄧ槕閺堝秴濮焌ppv4.5.1鐎规ɑ鏌熼悧锟�
瑜伴亶鐓堕幘顓熸杹
p2psearcher鐎瑰宕滈悧锟�7.3  閹靛婧€閻楋拷p2psearcher鐎瑰宕滈悧锟�7.3 閹靛婧€閻楋拷
闁伴瀚嶉棅鍏呯2022鐎规ɑ鏌熼悧鍦�11.0.8 鐎规ɑ鏌熺€瑰宕滈悧锟�闁伴瀚嶉棅鍏呯2022鐎规ɑ鏌熼悧鍦�11.0.8 鐎规ɑ鏌熺€瑰宕滈悧锟�
閻栧崬顨岄懝鐑樺閺堣櫣澧梫13.1.0閻栧崬顨岄懝鐑樺閺堣櫣澧梫13.1.0
閻ф儳瀹宠ぐ閬嶇叾7.13.0 鐎规ɑ鏌熼張鈧弬鎵閻ф儳瀹宠ぐ閬嶇叾7.13.0 鐎规ɑ鏌熼張鈧弬鎵
瑜伴亶鐓堕崗鍫ユ敱v6.9.0 鐎瑰宕滈幍瀣簚閻楋拷瑜伴亶鐓堕崗鍫ユ敱v6.9.0 鐎瑰宕滈幍瀣簚閻楋拷
闂冨懓顕板銉ュ徔
閼垫崘顔嗛崝銊︽瀬V9.11.5 鐎瑰宕滈悧锟�閼垫崘顔嗛崝銊︽瀬V9.11.5 鐎瑰宕滈悧锟�
娑旓附妫楃亸蹇氼嚛閸忓秷鍨傞悧鍫熸拱v11.5.5.153 鐎规ɑ鏌熼張鈧弬鎵娑旓附妫楃亸蹇氼嚛閸忓秷鍨傞悧鍫熸拱v11.5.5.153 鐎规ɑ鏌熼張鈧弬鎵
QQ闂冨懓顕伴崳鈺漰pV7.7.1.910 鐎规ɑ鏌熼張鈧弬鎵QQ闂冨懓顕伴崳鈺漰pV7.7.1.910 鐎规ɑ鏌熼張鈧弬鎵
閹虫帊姹夐悾鍛儔閸氼兛鍔焌ppv7.1.5 鐎规ɑ鏌熺€瑰宕滈悧锟�閹虫帊姹夐悾鍛儔閸氼兛鍔焌ppv7.1.5 鐎规ɑ鏌熺€瑰宕滈悧锟�
鐠ч鍋g拠璁冲姛app閺傛壆澧楅張锟�20227.9.186 鐎瑰宕滈悧锟�鐠ч鍋g拠璁冲姛app閺傛壆澧楅張锟�20227.9.186 鐎瑰宕滈悧锟�
闁叉垼鐎洪悶鍡氬偍
楠炲啿鐣ㄧ拠浣稿煖鐎瑰…閻炲棜鍌╒9.1.0.1 鐎规ɑ鏌熺€瑰宕滈悧锟�楠炲啿鐣ㄧ拠浣稿煖鐎瑰…閻炲棜鍌╒9.1.0.1 鐎规ɑ鏌熺€瑰宕滈悧锟�
濞寸兘鈧俺鐦夐崚鍛婂閺堣櫣澧�(e濞寸兘鈧俺鍌�)8.71 鐎规ɑ鏌熺€瑰宕滈悧锟�濞寸兘鈧俺鐦夐崚鍛婂閺堣櫣澧�(e濞寸兘鈧俺鍌�)8.71 鐎规ɑ鏌熺€瑰宕滈悧锟�
娑撴粍鎹g拠浣稿煖娑撴粍鎹i悶鍡氬偍4.0.5 鐎瑰宕滈悧锟�娑撴粍鎹g拠浣稿煖娑撴粍鎹i悶鍡氬偍4.0.5 鐎瑰宕滈悧锟�
娑擃參鎽辩拠浣稿煖缁夎濮╅悶鍡氬偍鏉烆垯娆�6.02.010 鐎规ɑ鏌熺€瑰宕滈悧锟�娑擃參鎽辩拠浣稿煖缁夎濮╅悶鍡氬偍鏉烆垯娆�6.02.010 鐎规ɑ鏌熺€瑰宕滈悧锟�
閸楀酣绶崇拠浣稿煖鐏忓繘鍣鹃幍瀣簚閻炲棜鍌ㄦ潪顖欐3.2.4 鐎瑰宕滈悧锟�閸楀酣绶崇拠浣稿煖鐏忓繘鍣鹃幍瀣簚閻炲棜鍌ㄦ潪顖欐3.2.4 鐎瑰宕滈悧锟�
閹靛婧€闁炬儼顢�
缁傚繐缂撻崘婊勬綑娣囷紕鏁ょ粈鐐閺堟椽鎽辩悰灞筋吂閹撮顏�2.3.4 鐎瑰宕滈悧锟�缁傚繐缂撻崘婊勬綑娣囷紕鏁ょ粈鐐閺堟椽鎽辩悰灞筋吂閹撮顏�2.3.4 鐎瑰宕滈悧锟�
閺勬挸鍩楁担婊嗩潒妫版垵澹€鏉堟叧pp4.1.16鐎瑰宕滈悧锟�閺勬挸鍩楁担婊嗩潒妫版垵澹€鏉堟叧pp4.1.16鐎瑰宕滈悧锟�
閺€顖欑帛鐎规繈鎸堕崠锟�(Alipay)V10.2.53.7000 鐎瑰宕滈悧锟�閺€顖欑帛鐎规繈鎸堕崠锟�(Alipay)V10.2.53.7000 鐎瑰宕滈悧锟�
娑擃厼娴楀銉ユ櫌闁炬儼顢戦幍瀣簚闁炬儼顢慳ppV7.0.1.2.5 鐎瑰宕滈悧锟�娑擃厼娴楀銉ユ櫌闁炬儼顢戦幍瀣簚闁炬儼顢慳ppV7.0.1.2.5 鐎瑰宕滈悧锟�
娑擃厼娴楅柧鎯邦攽閹靛婧€闁炬儼顢戠€广垺鍩涚粩锟�7.2.5 鐎规ɑ鏌熺€瑰宕滈悧锟�娑擃厼娴楅柧鎯邦攽閹靛婧€闁炬儼顢戠€广垺鍩涚粩锟�7.2.5 鐎规ɑ鏌熺€瑰宕滈悧锟�
娴兼垿妫介惄濠冩
閼垫崘顔嗛悮搴ㄥ鏉堝彞姹夐幍瀣簚閻楀湸2.3.0.0 鐎规ɑ鏌熺€瑰宕滈悧锟�閼垫崘顔嗛悮搴ㄥ鏉堝彞姹夐幍瀣簚閻楀湸2.3.0.0 鐎规ɑ鏌熺€瑰宕滈悧锟�
閸旇尪鍨堕崶銏犵暭閺傝顒滈悧鍫熷濞撶1.2.1鐎规ɑ鏌熼悧锟�閸旇尪鍨堕崶銏犵暭閺傝顒滈悧鍫熷濞撶1.2.1鐎规ɑ鏌熼悧锟�
妤椼儵銈挎ご銊╁鏉╂稑瀵查弮鐘绘闁借崵鐓堕悧鍧�7.8.0.0鐎瑰宕滈悧锟�妤椼儵銈挎ご銊╁鏉╂稑瀵查弮鐘绘闁借崵鐓堕悧鍧�7.8.0.0鐎瑰宕滈悧锟�
濡炲秶澧挎径褎鍨崓闈涙閸忋劍妲戦弰锟�1.0.91 鐎瑰宕滈悧锟�濡炲秶澧挎径褎鍨崓闈涙閸忋劍妲戦弰锟�1.0.91 鐎瑰宕滈悧锟�
閸斻劋缍旂亸鍕毊
閸﹂绗呴崺搴g崐閸戞槒鈧崑t閻楋拷1.6.3 鐎规ɑ鏌熼悧锟�閸﹂绗呴崺搴g崐閸戞槒鈧崑t閻楋拷1.6.3 鐎规ɑ鏌熼悧锟�
鐟佸懐鏁抽懕鏃傛礃1.325.157 鐎瑰宕滈悧锟�鐟佸懐鏁抽懕鏃傛礃1.325.157 鐎瑰宕滈悧锟�
閸︼絾鏋熸竟顐fЕ閻垽娉︾紒鎼�4.2.1 鐎瑰宕滈悧锟�閸︼絾鏋熸竟顐fЕ閻垽娉︾紒鎼�4.2.1 鐎瑰宕滈悧锟�
闁喖銇�3D閹靛鐖�1.0.9鐎瑰宕滈悧锟�闁喖銇�3D閹靛鐖�1.0.9鐎瑰宕滈悧锟�
婵夋棃妲诲〒鍛婂灆
鐎瑰宕滃宥囧⒖婢堆勫灛閸嶉潧妗�2姒涙垶娈弮鏈靛敩娣囶喗鏁奸悧鍦�1.9.5 閺堚偓閺傛壆澧�鐎瑰宕滃宥囧⒖婢堆勫灛閸嶉潧妗�2姒涙垶娈弮鏈靛敩娣囶喗鏁奸悧鍦�1.9.5 閺堚偓閺傛壆澧�
娑旇鲸鏋熺憲鎸庣埗2v1.0.150鐎瑰宕滈悧锟�娑旇鲸鏋熺憲鎸庣埗2v1.0.150鐎瑰宕滈悧锟�
娣囨繂宕奸拃婵嗗椽3閺冪娀妾洪柦鑽ょ叾閺堚偓閺傛壆澧梫2.0.0.1 鐎瑰宕滈悧锟�娣囨繂宕奸拃婵嗗椽3閺冪娀妾洪柦鑽ょ叾閺堚偓閺傛壆澧梫2.0.0.1 鐎瑰宕滈悧锟�
閸欙綀顣伴懟閬嶆碂閸楁洘婧€閻楋拷1.2.0 鐎瑰宕滈悧锟�閸欙綀顣伴懟閬嶆碂閸楁洘婧€閻楋拷1.2.0 鐎瑰宕滈悧锟�
鐏忓繐鐨崘娑樻礋鐎瑰宕滈悧锟�2.7.4 閺冪娀妾洪柌鎴濈娣囶喗鏁奸悧锟�鐏忓繐鐨崘娑樻礋鐎瑰宕滈悧锟�2.7.4 閺冪娀妾洪柌鎴濈娣囶喗鏁奸悧锟�
鐠ф稖婧呯粩鐐村Η
閻ц鍖楃挧娑滄簠2閹靛鐖�1.47.1  鐎瑰宕滈悧锟�閻ц鍖楃挧娑滄簠2閹靛鐖�1.47.1 鐎瑰宕滈悧锟�
娑撯偓鐠ч攱娼垫鐐舵簠鐎瑰宕滈悧鍧�2.9.14 閺堚偓閺傛壆澧�娑撯偓鐠ч攱娼垫鐐舵簠鐎瑰宕滈悧鍧�2.9.14 閺堚偓閺傛壆澧�
鐠烘垼绐囬崡鈥茬鏉烇附澧滈張铏瑰鐎规ɑ鏌熼張鈧弬鎵v1.16.2 鐎瑰宕滈悧锟�鐠烘垼绐囬崡鈥茬鏉烇附澧滈張铏瑰鐎规ɑ鏌熼張鈧弬鎵v1.16.2 鐎瑰宕滈悧锟�
閻欏倿鍣规娆掓簠8閺嬩線鈧喎鍣锋禍鎴滄叏閺€鍦(閸忓秵鏆熼幑顔煎瘶)v4.6.0j 闁叉垵绔甸弮鐘绘閻楋拷閻欏倿鍣规娆掓簠8閺嬩線鈧喎鍣锋禍鎴滄叏閺€鍦(閸忓秵鏆熼幑顔煎瘶)v4.6.0j 闁叉垵绔甸弮鐘绘閻楋拷
閻у彞绠伴崡鍐仏閹规洟濂�2021閺堚偓閺傛壆澧�5.78 鐎瑰宕滈悧锟�閻у彞绠伴崡鍐仏閹规洟濂�2021閺堚偓閺傛壆澧�5.78 鐎瑰宕滈悧锟�
鐟欐帟澹婇幍顔界川
濮婏箑澶熼崜鎴e灦閼板懎褰夐幀浣哄1.0.1.2鐎瑰宕滈悧锟�濮婏箑澶熼崜鎴e灦閼板懎褰夐幀浣哄1.0.1.2鐎瑰宕滈悧锟�
娴犳瑥顣ㄦ导鐘侯嚛ro婢跺秴鍙寸€瑰宕滈悧锟�1.20.3閺堚偓閺傛壆澧�娴犳瑥顣ㄦ导鐘侯嚛ro婢跺秴鍙寸€瑰宕滈悧锟�1.20.3閺堚偓閺傛壆澧�
濮婏箑澶熺拠娑楃舶閹靛鐖堕悧锟�1.3.6 鐎规ɑ鏌熺€瑰宕滈悧锟�濮婏箑澶熺拠娑楃舶閹靛鐖堕悧锟�1.3.6 鐎规ɑ鏌熺€瑰宕滈悧锟�
閻滃鈧懓宕抽懓鈧琕3.72.1.1 鐎瑰宕滈張鈧弬鏉跨暭閺傚湱澧�閻滃鈧懓宕抽懓鈧琕3.72.1.1 鐎瑰宕滈張鈧弬鏉跨暭閺傚湱澧�
鐠嬩礁顔嶇亸蹇氭簠瀵儤澧滈張铏瑰v1.0.49 鐎瑰宕滈悧锟�鐠嬩礁顔嶇亸蹇氭簠瀵儤澧滈張铏瑰v1.0.49 鐎瑰宕滈悧锟�
缁崵绮烘潪顖欐
mac绾句胶娲忛崚鍡楀隘瀹搞儱鍙�(Paragon Camptune X)V10.8.12鐎规ɑ鏌熼張鈧弬鎵mac绾句胶娲忛崚鍡楀隘瀹搞儱鍙�(Paragon Camptune X)V10.8.12鐎规ɑ鏌熼張鈧弬鎵
閼昏鐏夐幙宥勭稊缁崵绮篗ACOSX 10.9.4 Mavericks鐎瑰苯鍙忛崗宥堝瀭閻楋拷閼昏鐏夐幙宥勭稊缁崵绮篗ACOSX 10.9.4 Mavericks鐎瑰苯鍙忛崗宥堝瀭閻楋拷
Rar鐟欙絽甯囬崚鈺佹珤mac閻楀澊1.4 鐎规ɑ鏌熼崗宥堝瀭閻楋拷Rar鐟欙絽甯囬崚鈺佹珤mac閻楀澊1.4 鐎规ɑ鏌熼崗宥堝瀭閻楋拷
Mac鐎瑰宕滃Ο鈩冨珯閸o拷(ARC Welder)v1.0 鐎规ɑ鏌熼張鈧弬鎵Mac鐎瑰宕滃Ο鈩冨珯閸o拷(ARC Welder)v1.0 鐎规ɑ鏌熼張鈧弬鎵
Charles for MacV3.9.3鐎规ɑ鏌熼悧锟�Charles for MacV3.9.3鐎规ɑ鏌熼悧锟�
缂冩垹绮跺銉ュ徔
閹兼粎瀚嶅ù蹇氼潔閸b暕ac閻楀澊5.2 鐎规ɑ鏌熷锝呯础閻楋拷閹兼粎瀚嶅ù蹇氼潔閸b暕ac閻楀澊5.2 鐎规ɑ鏌熷锝呯础閻楋拷
闁挎劖宓庣€广垺鍩涚粩鐥琣c閻楀湸1.33鐎规ɑ鏌熼張鈧弬鎵闁挎劖宓庣€广垺鍩涚粩鐥琣c閻楀湸1.33鐎规ɑ鏌熼張鈧弬鎵
韫囶偆澧甿ac閻楀澊1.3.2 鐎规ɑ鏌熷锝呯础閻楋拷韫囶偆澧甿ac閻楀澊1.3.2 鐎规ɑ鏌熷锝呯础閻楋拷
閺嬩胶鍋f禍鏃傜應Mac閻楋拷7.13濮濓絽绱¢悧锟�閺嬩胶鍋f禍鏃傜應Mac閻楋拷7.13濮濓絽绱¢悧锟�
婵帊缍嬪銉ュ徔
Apple Logic Pro xV10.3.2Apple Logic Pro xV10.3.2
Adobe Premiere Pro CC 2017 mac閻楀澊11.0.0 娑擃厽鏋冮悧锟�Adobe Premiere Pro CC 2017 mac閻楀澊11.0.0 娑擃厽鏋冮悧锟�
閸楀啫宕堥棃娆忔儔Mac閻楀湸9.1.1 鐎规ɑ鏌熼張鈧弬鎵閸楀啫宕堥棃娆忔儔Mac閻楀湸9.1.1 鐎规ɑ鏌熼張鈧弬鎵
Mac缂冩垹绮堕惄瀛樻尡鏉烆垯娆�(MacTV)v0.121 鐎规ɑ鏌熼張鈧弬鎵Mac缂冩垹绮堕惄瀛樻尡鏉烆垯娆�(MacTV)v0.121 鐎规ɑ鏌熼張鈧弬鎵
Adobe Fireworks CS6 Mac閻楀湑S6鐎规ɑ鏌熺粻鈧担鎾茶厬閺傚洨澧�Adobe Fireworks CS6 Mac閻楀湑S6鐎规ɑ鏌熺粻鈧担鎾茶厬閺傚洨澧�
閸ユ儳鑸伴崶鎯у剼
AutoCAD2015 mac娑擃厽鏋冮悧鍫熸拱v1.0 鐎规ɑ鏌熷锝呯础閻楋拷AutoCAD2015 mac娑擃厽鏋冮悧鍫熸拱v1.0 鐎规ɑ鏌熷锝呯础閻楋拷
Adobe Photoshop cs6 mac閻楀澊13.0.3 鐎规ɑ鏌熸稉顓熸瀮閻楋拷Adobe Photoshop cs6 mac閻楀澊13.0.3 鐎规ɑ鏌熸稉顓熸瀮閻楋拷
Mac閻垽鍣虹紒妯烘禈鏉烆垯娆�(Sketch mac)v3.3.2 娑擃厽鏋冮悧锟�Mac閻垽鍣虹紒妯烘禈鏉烆垯娆�(Sketch mac)v3.3.2 娑擃厽鏋冮悧锟�
Adobe After Effects cs6 mac閻楀澊1.0娑擃厽鏋冮悧锟�Adobe After Effects cs6 mac閻楀澊1.0娑擃厽鏋冮悧锟�
Adobe InDesign cs6 mac1.0 鐎规ɑ鏌熸稉顓熸瀮閻楋拷Adobe InDesign cs6 mac1.0 鐎规ɑ鏌熸稉顓熸瀮閻楋拷
鎼存梻鏁ゆ潪顖欐
Mac閻楀牆鎻╅幘锟�1.1.26 鐎规ɑ鏌熷锝呯础閻楀溂dmg]Mac閻楀牆鎻╅幘锟�1.1.26 鐎规ɑ鏌熷锝呯础閻楀溂dmg]
Mac鐠囪鍟揘TFS(Paragon NTFS for Mac)12.1.62 鐎规ɑ鏌熷锝呯础閻楋拷Mac鐠囪鍟揘TFS(Paragon NTFS for Mac)12.1.62 鐎规ɑ鏌熷锝呯础閻楋拷
鏉╁懘娴�10 for macv3.4.1.4368 鐎规ɑ鏌熼張鈧弬鎵鏉╁懘娴�10 for macv3.4.1.4368 鐎规ɑ鏌熼張鈧弬鎵
Mac娑撳娓跺鍝勩亣閻ㄥ嫮閮寸紒鐔哥閻炲棗浼愰崗锟�(CleanMyMac for mac)v3.1.1 濮濓絽绱¢悧锟�Mac娑撳娓跺鍝勩亣閻ㄥ嫮閮寸紒鐔哥閻炲棗浼愰崗锟�(CleanMyMac for mac)v3.1.1 濮濓絽绱¢悧锟�
閼昏鐏塀ootCamp5.1.5640 鐎规ɑ鏌熼張鈧弬鎵閼昏鐏塀ootCamp5.1.5640 鐎规ɑ鏌熼張鈧弬鎵
ios缁€鍙ユ唉閼卞﹤銇�
瀵邦喕淇奿pad閻楋拷2020v7.0.12 鐎规ɑ鏌熼悧锟�瀵邦喕淇奿pad閻楋拷2020v7.0.12 鐎规ɑ鏌熼悧锟�
iphone閹靛婧€qq2021v8.5.0 鐎规ɑ鏌熼悧锟�iphone閹靛婧€qq2021v8.5.0 鐎规ɑ鏌熼悧锟�
閺勬挷淇奿OS閻楀澊7.3.13 iPhone閻楋拷閺勬挷淇奿OS閻楀澊7.3.13 iPhone閻楋拷
闂勫矂妾� iphoneV8.32.4 鐎规ɑ鏌熷锝呯础閻楋拷闂勫矂妾� iphoneV8.32.4 鐎规ɑ鏌熷锝呯础閻楋拷
閸楀啰澧� iphone閻楋拷9.2.5 鐎规ɑ鏌熼悧锟�閸楀啰澧� iphone閻楋拷9.2.5 鐎规ɑ鏌熼悧锟�
ios閻㈢喐妞块張宥呭
99娑撱儵鈧娓堕弬鎵V1.3.699娑撱儵鈧娓堕弬鎵V1.3.6
韫囶偆澧甶Phone閻楋拷5.7.3 鐎规ɑ鏌熼悧锟�韫囶偆澧甶Phone閻楋拷5.7.3 鐎规ɑ鏌熼悧锟�
濞fê鐤� for iPhonev9.5.15 鐎规ɑ鏌熼張鈧弬鎵濞fê鐤� for iPhonev9.5.15 鐎规ɑ鏌熼張鈧弬鎵
婢с劏鎶楁径鈺傜毜 for iphoneV7.5.3鐎规ɑ鏌熼張鈧弬鎵IPA婢с劏鎶楁径鈺傜毜 for iphoneV7.5.3鐎规ɑ鏌熼張鈧弬鎵IPA
鐠嬮攱鐡曢崷鏉挎禈iphone(Google Maps)4.54  娑擃厽鏋冮悧锟�鐠嬮攱鐡曢崷鏉挎禈iphone(Google Maps)4.54 娑擃厽鏋冮悧锟�
ios瑜伴亶鐓舵繛鍙樼
韫囶偅鎸遍懟瑙勭亯閻楀湸3.3.35 鐎规ɑ鏌熼悧鍦糹pa]韫囶偅鎸遍懟瑙勭亯閻楀湸3.3.35 鐎规ɑ鏌熼悧鍦糹pa]
閸氬鎮忚ぐ閬嶇叾閹绢厽鏂侀崳鈺s閻楋拷1.0.1017 閼昏鐏塱pad閻楋拷閸氬鎮忚ぐ閬嶇叾閹绢厽鏂侀崳鈺s閻楋拷1.0.1017 閼昏鐏塱pad閻楋拷
瑜伴亶鐓堕崗鍫ユ敱閹绢厽鏂侀崳鈺s閻楋拷2.8.0 鐎规ɑ鏌熼悧锟�瑜伴亶鐓堕崗鍫ユ敱閹绢厽鏂侀崳鈺s閻楋拷2.8.0 鐎规ɑ鏌熼悧锟�
閺傛濂旈惄瀛樻尡鐎广垺鍩涚粩鐥爋s閻楋拷7.0.1 鐎规ɑ鏌熼張鈧弬鎵閺傛濂旈惄瀛樻尡鐎广垺鍩涚粩鐥爋s閻楋拷7.0.1 鐎规ɑ鏌熼張鈧弬鎵
闁伴瀚嶉棅鍏呯 for iPhonev10.9.0 鐎规ɑ鏌熼張鈧弬鎵闁伴瀚嶉棅鍏呯 for iPhonev10.9.0 鐎规ɑ鏌熼張鈧弬鎵
ios閸ユ儳鑸伴崶鎯у剼
How old do I look ios閻楋拷1.02 鐎规ɑ鏌熼悧锟�How old do I look ios閻楋拷1.02 鐎规ɑ鏌熼悧锟�
缂囧骸娴樼粔鈧粔鈧琲Phone閻楀湸8.6.62 閺堚偓閺傜増顒滃蹇曞缂囧骸娴樼粔鈧粔鈧琲Phone閻楀湸8.6.62 閺堚偓閺傜増顒滃蹇曞
濮樻潙宓冮梼鐔兼毐閼昏鐏夐悧鍧�1.0.0濮樻潙宓冮梼鐔兼毐閼昏鐏夐悧鍧�1.0.0
婢垛晛銇塸閸ョ穭pad閻楋拷5.7.4 鐎规ɑ鏌熼悧锟�婢垛晛銇塸閸ョ穭pad閻楋拷5.7.4 鐎规ɑ鏌熼悧锟�
韫囶偅澧渋os閻楀湸9.6.30 鐎规ɑ鏌熼悧锟�韫囶偅澧渋os閻楀湸9.6.30 鐎规ɑ鏌熼悧锟�
ios濞村繗顫嶅銉ュ徔
閼冲苯瀵橀崷鏉挎禈ios閻楋拷1.0 鐎规ɑ鏌熼張鈧弬鎵閼冲苯瀵橀崷鏉挎禈ios閻楋拷1.0 鐎规ɑ鏌熼張鈧弬鎵
閹靛婧€鐎瑰鍙忛崝鈺傚閼昏鐏夐悧鍧�1.0 鐎规ɑ鏌熼張鈧弬鎵閹靛婧€鐎瑰鍙忛崝鈺傚閼昏鐏夐悧鍧�1.0 鐎规ɑ鏌熼張鈧弬鎵
UC濞村繗顫嶉崳鈺�113.5.5.1555娑擃厽鏋冮悧锟�UC濞村繗顫嶉崳鈺�113.5.5.1555娑擃厽鏋冮悧锟�
360濞村繗顫嶉崳鈩塂 for iPadV4.1.3  濮濓絽绱¢悧锟�360濞村繗顫嶉崳鈩塂 for iPadV4.1.3 濮濓絽绱¢悧锟�
iPhone閹靛婧€QQ濞村繗顫嶉崳鈺�8.9.1 鐎规ɑ鏌熼悧锟�iPhone閹靛婧€QQ濞村繗顫嶉崳鈺�8.9.1 鐎规ɑ鏌熼悧锟�

首页编程开发C#.NET → Paste from Visual Studio 插件中文乱码的解决方案

Paste from Visual Studio 插件中文乱码的解决方案

相关文章发表评论 来源:本站整理时间:2011/1/15 17:13:15字体大小:A-A+

作者:佚名点击:315次评论:0次标签: VisualStudio 插件

  • 类型:角色扮演大小:18.1M语言:中文 评分:.0
  • 标签:
立即下载
以前在 Windows Live Writer 中一直使用 Paste from Visual Studio 插件来在博文中粘贴代码。这个插件对 Visual Studio 2008 很好用,但是从 Visual Stduio 2010 中粘贴代码的话,每个中文字符后面,会跟着一个乱码,如下 ClipboardTester.cs 所示:

01: using System;
02: using System.Windows;
03:
04: namespace Skyiv.Tester
05: {
06: static class ClipboardTester
07: {
08: [STAThread]
09: static void Main()
10: {
11: var obj = Clipboard.GetDataObject();
12: foreach (var v in obj.GetFormats())
13: {
14: Console.WriteLine("[{0}]", v);
15: Console.WriteLine("-------- 开a始? --------");
16: try { Console.WriteLine("{0}", obj.GetData(v)); }
17: catch (Exception ex) { Console.WriteLine(ex); }
18: Console.WriteLine("-------- 结á束? --------");
19: Console.WriteLine();
20: }
21: }
22: }
23: }


我以前是手工一个个删除这些乱码。

查找根源
现在让我们来查找为什么会有乱码的原因吧。首先用以下命令编译上面给出的 ClipboardTester.cs 程序:

E:\CS\VSPaste> csc ClipboardTester.cs -r:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationCore.dll
Microsoft(R) Visual C# 2010 编译器 4.0.30319.1 版
版权所有(C) Microsoft Corporation。保留所有权利。


然后在 Visual Studio 2010 中使用“Ctrl-A”、“Ctrl-C”将这段源程序代码送到系统剪贴板,再运行 ClipboardTester.exe 从系统剪贴板中取出数据:

E:\CS\VSPaste> ClipboardTester
[Text]
-------- 开始 --------
using System;
using System.Windows;

namespace Skyiv.Tester
{
static class ClipboardTester
{
[STAThread]
static void Main()
{
var obj = Clipboard.GetDataObject();
foreach (var v in obj.GetFormats())
{
Console.WriteLine("[{0}]", v);
Console.WriteLine("-------- 开始 --------");
try { Console.WriteLine("{0}", obj.GetData(v)); }
catch (Exception ex) { Console.WriteLine(ex); }
Console.WriteLine("-------- 结束 --------");
Console.WriteLine();
}
}
}
}
-------- 结束 --------

[UnicodeText]
-------- 开始 --------
using System;
using System.Windows;

namespace Skyiv.Tester
{
static class ClipboardTester
{
[STAThread]
static void Main()
{
var obj = Clipboard.GetDataObject();
foreach (var v in obj.GetFormats())
{
Console.WriteLine("[{0}]", v);
Console.WriteLine("-------- 开始 --------");
try { Console.WriteLine("{0}", obj.GetData(v)); }
catch (Exception ex) { Console.WriteLine(ex); }
Console.WriteLine("-------- 结束 --------");
Console.WriteLine();
}
}
}
}
-------- 结束 --------

[System.String]
-------- 开始 --------
using System;
using System.Windows;

namespace Skyiv.Tester
{
static class ClipboardTester
{
[STAThread]
static void Main()
{
var obj = Clipboard.GetDataObject();
foreach (var v in obj.GetFormats())
{
Console.WriteLine("[{0}]", v);
Console.WriteLine("-------- 开始 --------");
try { Console.WriteLine("{0}", obj.GetData(v)); }
catch (Exception ex) { Console.WriteLine(ex); }
Console.WriteLine("-------- 结束 --------");
Console.WriteLine();
}
}
}
}
-------- 结束 --------

[Rich Text Format]
-------- 开始 --------
{\rtf\ansi{\fonttbl{\f0 NSimSun;}}{\colortbl;\red0\green0\blue255;\red43\green14
5\blue175;\red163\green21\blue21;}\f0 \fs19 \cf1 using\cf0 System;\par \cf1 usi
ng\cf0 System.Windows;\par \par \cf1 namespace\cf0 Skyiv.Tester\par \{\par \
cf1 static\cf0 \cf1 class\cf0 \cf2 ClipboardTester\cf0 \par \{\par [\cf2
STAThread\cf0 ]\par \cf1 static\cf0 \cf1 void\cf0 Main()\par \{\par
\cf1 var\cf0 obj = \cf2 Clipboard\cf0 .GetDataObject();\par \cf1 for
each\cf0 (\cf1 var\cf0 v \cf1 in\cf0 obj.GetFormats())\par \{\par
\cf2 Console\cf0 .WriteLine(\cf3 "[\{0\}]"\cf0 , v);\par \cf2 Console
\cf0 .WriteLine(\cf3 "-------- \uinput2\u24320 ?a\uinput2\u22987 ê? --------"\cf
0 );\par \cf1 try\cf0 \{ \cf2 Console\cf0 .WriteLine(\cf3 "\{0\}"\cf0 ,
obj.GetData(v)); \}\par \cf1 catch\cf0 (\cf2 Exception\cf0 ex) \{ \cf
2 Console\cf0 .WriteLine(ex); \}\par \cf2 Console\cf0 .WriteLine(\cf3 "-
------- \uinput2\u32467 ?á\uinput2\u26463 ê? --------"\cf0 );\par \cf2 C
onsole\cf0 .WriteLine();\par \}\par \}\par \}\par \}\par }
-------- 结束 --------

E:\CS\VSPaste>



从上面可以看出,出现乱码的根源在于 Visual Studio 2010 往系统剪贴板送 RTF 格式的内容时出错了。

修改 Paste from Visual Studio 插件
我们无法改变 Visual Studio 2010 的做法,只好修改 Paste from Visual Studio 插件了。以下步骤参照老赵的“定制 Paste from Visual Studio 插件”一文。

首先,使用 Reflector 查看 VSPaste.dll:





参照上图中的代码,编写一个 VSPaste2.cs:

01: using System;
02: using System.Windows.Forms;
03: using System.Text.RegularExpressions;
04:
05: public class HTMLRootProcessor
06: {
07: public static string FromRTF(string s) { return null; }
08: }
09:
10: namespace VSPaste
11: {
12: public class ContentSource
13: {
14: public virtual DialogResult CreateContent(IWin32Window dialogOwner, ref string newContent)
15: {
16: return DialogResult.Cancel;
17: }
18: }
19:
20: public class VSPaste : ContentSource
21: {
22: public static string Undent(string s) { return null; }
23:
24: public static string AddLines(string html)
25: {
26: string[] lines = html.Trim().Split('\n');
27: string pattern = "<span style=\"color:black; font-weight:bold;\">{0:" +
28: new String('0', lines.Length.ToString().Length) + "}: </span>";
29: for (int i = 0; i < lines.Length; i++)
30: lines[i] = String.Format(pattern, i + 1) + lines[i];
31: return String.Join("\n", lines);
32: }
33:
34: public static string DeleteChineseGarbage(string str)
35: {
36: return Regex.Replace(str, @"(?<ch>\\u\d+ )..", "${ch}?");
37: }
38:
39: public override DialogResult CreateContent(IWin32Window dialogOwner, ref string newContent)
40: {
41: try
42: {
43: if (Clipboard.ContainsData(DataFormats.Rtf))
44: {
45: string data = DeleteChineseGarbage((string)Clipboard.GetData(DataFormats.Rtf));
46: string str3 = AddLines(Undent(HTMLRootProcessor.FromRTF(data)));
47: newContent = "<pre class=\"code\">" + str3 + "</pre>";
48: return DialogResult.OK;
49: }
50: }
51: catch
52: {
53: MessageBox.Show("VS Paste could not convert that content.", "VS Paste Problem", MessageBoxButtons.OK, MessageBoxIcon.Hand);
54: }
55: return DialogResult.Cancel;
56: }
57: }
58: }


上述程序中,第 34 行到第 37 行的 DeleteChineseGarbage 方法用于删除中文乱码。第 45 行调用这个方法。用以下命令编译和反汇编:

E:\CS\VSPaste> csc /t:library VSPaste2.cs
Microsoft(R) Visual C# 2010 编译器 4.0.30319.1 版
版权所有(C) Microsoft Corporation。保留所有权利。

E:\CS\VSPaste> ildasm VSPaste2.dll /output:VSPaste2.il


得到的 VSPaste2.il 文件如下所示:

001: // Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.1
002:
003:
004:
005:
006: // Metadata version: v2.0.50727
007: .assembly extern mscorlib
008: {
009: .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
010: .ver 2:0:0:0
011: }
012: .assembly extern System.Windows.Forms
013: {
014: .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
015: .ver 2:0:0:0
016: }
017: .assembly extern System
018: {
019: .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
020: .ver 2:0:0:0
021: }
022: .assembly VSPaste2
023: {
024: .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
025: .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
026: 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
027: .hash algorithm 0x00008004
028: .ver 0:0:0:0
029: }
030: .module VSPaste2.dll
031: // MVID: {A944F44D-8C74-42FF-956B-B14EADD37E70}
032: .imagebase 0x00400000
033: .file alignment 0x00000200
034: .stackreserve 0x00100000
035: .subsystem 0x0003 // WINDOWS_CUI
036: .corflags 0x00000001 // ILONLY
037: // Image base: 0x00280000
038:
039:
040: // =============== CLASS MEMBERS DECLARATION ===================
041:
042: .class public auto ansi beforefieldinit HTMLRootProcessor
043: extends [mscorlib]System.Object
044: {
045: .method public hidebysig static string
046: FromRTF(string s) cil managed
047: {
048: // 代码大小 7 (0x7)
049: .maxstack 1
050: .locals init (string V_0)
051: IL_0000: nop
052: IL_0001: ldnull
053: IL_0002: stloc.0
054: IL_0003: br.s IL_0005
055:
056: IL_0005: ldloc.0
057: IL_0006: ret
058: } // end of method HTMLRootProcessor::FromRTF
059:
060: .method public hidebysig specialname rtspecialname
061: instance void .ctor() cil managed
062: {
063: // 代码大小 7 (0x7)
064: .maxstack 8
065: IL_0000: ldarg.0
066: IL_0001: call instance void [mscorlib]System.Object::.ctor()
067: IL_0006: ret
068: } // end of method HTMLRootProcessor::.ctor
069:
070: } // end of class HTMLRootProcessor
071:
072: .class public auto ansi beforefieldinit VSPaste.ContentSource
073: extends [mscorlib]System.Object
074: {
075: .method public hidebysig newslot virtual
076: instance valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult
077: CreateContent(class [System.Windows.Forms]System.Windows.Forms.IWin32Window dialogOwner,
078: string& newContent) cil managed
079: {
080: // 代码大小 7 (0x7)
081: .maxstack 1
082: .locals init (valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult V_0)
083: IL_0000: nop
084: IL_0001: ldc.i4.2
085: IL_0002: stloc.0
086: IL_0003: br.s IL_0005
087:
088: IL_0005: ldloc.0
089: IL_0006: ret
090: } // end of method ContentSource::CreateContent
091:
092: .method public hidebysig specialname rtspecialname
093: instance void .ctor() cil managed
094: {
095: // 代码大小 7 (0x7)
096: .maxstack 8
097: IL_0000: ldarg.0
098: IL_0001: call instance void [mscorlib]System.Object::.ctor()
099: IL_0006: ret
100: } // end of method ContentSource::.ctor
101:
102: } // end of class VSPaste.ContentSource
103:
104: .class public auto ansi beforefieldinit VSPaste.VSPaste
105: extends VSPaste.ContentSource
106: {
107: .method public hidebysig static string
108: Undent(string s) cil managed
109: {
110: // 代码大小 7 (0x7)
111: .maxstack 1
112: .locals init (string V_0)
113: IL_0000: nop
114: IL_0001: ldnull
115: IL_0002: stloc.0
116: IL_0003: br.s IL_0005
117:
118: IL_0005: ldloc.0
119: IL_0006: ret
120: } // end of method VSPaste::Undent
121:
122: .method public hidebysig static string
123: AddLines(string html) cil managed
124: {
125: // 代码大小 130 (0x82)
126: .maxstack 5
127: .locals init (string[] V_0,
128: string V_1,
129: int32 V_2,
130: string V_3,
131: char[] V_4,
132: int32 V_5,
133: bool V_6)
134: IL_0000: nop
135: IL_0001: ldarg.0
136: IL_0002: callvirt instance string [mscorlib]System.String::Trim()
137: IL_0007: ldc.i4.1
138: IL_0008: newarr [mscorlib]System.Char
139: IL_000d: stloc.s V_4
140: IL_000f: ldloc.s V_4
141: IL_0011: ldc.i4.0
142: IL_0012: ldc.i4.s 10
143: IL_0014: stelem.i2
144: IL_0015: ldloc.s V_4
145: IL_0017: callvirt instance string[] [mscorlib]System.String::Split(char[])
146: IL_001c: stloc.0
147: IL_001d: ldstr "<span style=\"color:black; font-weight:bold;\">{0:"
148: IL_0022: ldc.i4.s 48
149: IL_0024: ldloc.0
150: IL_0025: ldlen
151: IL_0026: conv.i4
152: IL_0027: stloc.s V_5
153: IL_0029: ldloca.s V_5
154: IL_002b: call instance string [mscorlib]System.Int32::ToString()
155: IL_0030: callvirt instance int32 [mscorlib]System.String::get_Length()
156: IL_0035: newobj instance void [mscorlib]System.String::.ctor(char,
157: int32)
158: IL_003a: ldstr "}: </span>"
159: IL_003f: call string [mscorlib]System.String::Concat(string,
160: string,
161: string)
162: IL_0044: stloc.1
163: IL_0045: ldc.i4.0
164: IL_0046: stloc.2
165: IL_0047: br.s IL_0066
166:
167: IL_0049: ldloc.0
168: IL_004a: ldloc.2
169: IL_004b: ldloc.1
170: IL_004c: ldloc.2
171: IL_004d: ldc.i4.1
172: IL_004e: add
173: IL_004f: box [mscorlib]System.Int32
174: IL_0054: call string [mscorlib]System.String::Format(string,
175: object)
176: IL_0059: ldloc.0
177: IL_005a: ldloc.2
178: IL_005b: ldelem.ref
179: IL_005c: call string [mscorlib]System.String::Concat(string,
180: string)
181: IL_0061: stelem.ref
182: IL_0062: ldloc.2
183: IL_0063: ldc.i4.1
184: IL_0064: add
185: IL_0065: stloc.2
186: IL_0066: ldloc.2
187: IL_0067: ldloc.0
188: IL_0068: ldlen
189: IL_0069: conv.i4
190: IL_006a: clt
191: IL_006c: stloc.s V_6
192: IL_006e: ldloc.s V_6
193: IL_0070: brtrue.s IL_0049
194:
195: IL_0072: ldstr "\n"
196: IL_0077: ldloc.0
197: IL_0078: call string [mscorlib]System.String::Join(string,
198: string[])
199: IL_007d: stloc.3
200: IL_007e: br.s IL_0080
201:
202: IL_0080: ldloc.3
203: IL_0081: ret
204: } // end of method VSPaste::AddLines
205:
206: .method public hidebysig static string
207: DeleteChineseGarbage(string str) cil managed
208: {
209: // 代码大小 22 (0x16)
210: .maxstack 3
211: .locals init (string V_0)
212: IL_0000: nop
213: IL_0001: ldarg.0
214: IL_0002: ldstr "(\?<ch>\\\\u\\d+ ).."
215: IL_0007: ldstr "${ch}\?"
216: IL_000c: call string [System]System.Text.RegularExpressions.Regex::Replace(string,
217: string,
218: string)
219: IL_0011: stloc.0
220: IL_0012: br.s IL_0014
221:
222: IL_0014: ldloc.0
223: IL_0015: ret
224: } // end of method VSPaste::DeleteChineseGarbage
225:
226: .method public hidebysig virtual instance valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult
227: CreateContent(class [System.Windows.Forms]System.Windows.Forms.IWin32Window dialogOwner,
228: string& newContent) cil managed
229: {
230: // 代码大小 115 (0x73)
231: .maxstack 4
232: .locals init (string V_0,
233: string V_1,
234: valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult V_2,
235: bool V_3)
236: IL_0000: nop
237: .try
238: {
239: IL_0001: nop
240: IL_0002: ldsfld string [System.Windows.Forms]System.Windows.Forms.DataFormats::Rtf
241: IL_0007: call bool [System.Windows.Forms]System.Windows.Forms.Clipboard::ContainsData(string)
242: IL_000c: ldc.i4.0
243: IL_000d: ceq
244: IL_000f: stloc.3
245: IL_0010: ldloc.3
246: IL_0011: brtrue.s IL_0050
247:
248: IL_0013: nop
249: IL_0014: ldsfld string [System.Windows.Forms]System.Windows.Forms.DataFormats::Rtf
250: IL_0019: call object [System.Windows.Forms]System.Windows.Forms.Clipboard::GetData(string)
251: IL_001e: castclass [mscorlib]System.String
252: IL_0023: call string VSPaste.VSPaste::DeleteChineseGarbage(string)
253: IL_0028: stloc.0
254: IL_0029: ldloc.0
255: IL_002a: call string HTMLRootProcessor::FromRTF(string)
256: IL_002f: call string VSPaste.VSPaste::Undent(string)
257: IL_0034: call string VSPaste.VSPaste::AddLines(string)
258: IL_0039: stloc.1
259: IL_003a: ldarg.2
260: IL_003b: ldstr "<pre class=\"code\">"
261: IL_0040: ldloc.1
262: IL_0041: ldstr "</pre>"
263: IL_0046: call string [mscorlib]System.String::Concat(string,
264: string,
265: string)
266: IL_004b: stind.ref
267: IL_004c: ldc.i4.1
268: IL_004d: stloc.2
269: IL_004e: leave.s IL_0070
270:
271: IL_0050: nop
272: IL_0051: leave.s IL_006b
273:
274: } // end .try
275: catch [mscorlib]System.Object
276: {
277: IL_0053: pop
278: IL_0054: nop
279: IL_0055: ldstr "VS Paste could not convert that content."
280: IL_005a: ldstr "VS Paste Problem"
281: IL_005f: ldc.i4.0
282: IL_0060: ldc.i4.s 16
283: IL_0062: call valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string,
284: string,
285: valuetype [System.Windows.Forms]System.Windows.Forms.MessageBoxButtons,
286: valuetype [System.Windows.Forms]System.Windows.Forms.MessageBoxIcon)
287: IL_0067: pop
288: IL_0068: nop
289: IL_0069: leave.s IL_006b
290:
291: } // end handler
292: IL_006b: nop
293: IL_006c: ldc.i4.2
294: IL_006d: stloc.2
295: IL_006e: br.s IL_0070
296:
297: IL_0070: nop
298: IL_0071: ldloc.2
299: IL_0072: ret
300: } // end of method VSPaste::CreateContent
301:
302: .method public hidebysig specialname rtspecialname
303: instance void .ctor() cil managed
304: {
305: // 代码大小 7 (0x7)
306: .maxstack 8
307: IL_0000: ldarg.0
308: IL_0001: call instance void VSPaste.ContentSource::.ctor()
309: IL_0006: ret
310: } // end of method VSPaste::.ctor
311:
312: } // end of class VSPaste.VSPaste
313:
314:
315: // =============================================================
316:
317: // *********** 反汇编完成 ***********************
318: // 警ˉ告: 创建了 Win32 资ê源文件 VSPaste2.res


现在,使用以下命令反汇编 VSPaste.dll:

E:\CS\VSPaste> ildasm VSPaste.dll /output:VSPaste.il



把 VSPaste2.il 文件中第 226 行到第 300 行的 VSPaste::CreateContent 方法替代 VSPaste.il 中的同名方法。并且把 VSPaste2.il 文件中第 206 行到第 224 行的 VSPate::DeleteChineseGarbage 方法加入到 VSPaste.il 文件中去。最后,使用以下命令重新进行汇编:

E:\CS\VSPaste> ilasm /dll /quiet VSPaste.il


将得到的 VSPaste.dll 拷贝到 Windows Live Writer 安装目录的 Plugins 目录,在我的机器上是 C:\Program Files\Windows Live\Writer\Plugins\,就行了。现在,让我们运行 Windows Live Writer,咦,VSPaste 插件不见了。怎么回事?

想了半天,最后使用 .NET Framework 2.0 中的 csc.exe 和 ilasm.exe 代替 .NET Framework 4 的,重做以上步骤。

在我的机器上,这两个 exe 文件位于 C:\Windows\Microsoft.NET\Framework\v2.0.50727\ 目录。而 ildasm.exe 还是使用 .NET Framework 4 的,因为没有找到 .NET Framework 2.0 的 ildasm.exe。

这下果然行了。

测试一下效果:

01: using System;
02: using System.Windows;
03:
04: namespace Skyiv.Tester
05: {
06: static class ClipboardTester
07: {
08: [STAThread]
09: static void Main()
10: {
11: var obj = Clipboard.GetDataObject();
12: foreach (var v in obj.GetFormats())
13: {
14: Console.WriteLine("[{0}]", v);
15: Console.WriteLine("-------- 开始 --------");
16: try { Console.WriteLine("{0}", VSPaste.VSPaste.DeleteChineseGarbage(obj.GetData(v).ToString())); }
17: catch (Exception ex) { Console.WriteLine(ex); }
18: Console.WriteLine("-------- 结束 --------");
19: Console.WriteLine();
20: }
21: }
22: }
23: }


果然没有乱码了。

另外一个 Paste from Visual Studio 插件
后来,又找到另外一个 Paste from Visual Studio 插件,效果如下:

ClipboardTester.cs
using System;
using System.Windows;

namespace Skyiv.Tester
{
static class ClipboardTester
{
[STAThread]
static void Main()
{
var obj = Clipboard.GetDataObject();
foreach (var v in obj.GetFormats())
{
Console.WriteLine("[{0}]", v);
Console.WriteLine("-------- 开始 --------");
try { Console.WriteLine("{0}", VSPaste.VSPaste.DeleteChineseGarbage(obj.GetData(v).ToString())); }
catch (Exception ex) { Console.WriteLine(ex); }
Console.WriteLine("-------- 结束 --------");
Console.WriteLine();
}
}
}
}

相关评论

阅读本文后您有什么感想? 已有人给出评价!

  • 8 喜欢喜欢
  • 3 顶
  • 1 难过难过
  • 5 囧
  • 3 围观围观
  • 2 无聊无聊

热门评论

最新评论

发表评论 查看所有评论(0)

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)