unicodeDlg.cpp
上传用户:swkcbjrc
上传日期:2016-04-02
资源大小:45277k
文件大小:13k
源码类别:

游戏

开发平台:

Visual C++

  1. // unicodeDlg.cpp : implementation file
  2. //
  3. #include "stdAfx.h"
  4. #include "unicode.h"
  5. #include "unicodeDlg.h"
  6. #include "ClientSockThread.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. //extern UINT ClientSocketThreadProc(LPVOID);
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CAboutDlg dialog used for App About
  15. class CAboutDlg : public CDialog
  16. {
  17. public:
  18. CAboutDlg();
  19. CHyperLink m_sUrl;
  20. // Dialog Data
  21. //{{AFX_DATA(CAboutDlg)
  22. enum { IDD = IDD_ABOUTBOX };
  23. //}}AFX_DATA
  24. // ClassWizard generated virtual function overrides
  25. //{{AFX_VIRTUAL(CAboutDlg)
  26. protected:
  27. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  28. //}}AFX_VIRTUAL
  29. // Implementation
  30. protected:
  31. //{{AFX_MSG(CAboutDlg)
  32. virtual BOOL OnInitDialog();
  33. //}}AFX_MSG
  34. DECLARE_MESSAGE_MAP()
  35. };
  36. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  37. {
  38. //{{AFX_DATA_INIT(CAboutDlg)
  39. //}}AFX_DATA_INIT
  40. }
  41. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  42. {
  43. CDialog::DoDataExchange(pDX);
  44. //{{AFX_DATA_MAP(CAboutDlg)
  45. // DDX_Control(pDX, IDC_STATIC1, m_sUrl);
  46. //}}AFX_DATA_MAP
  47. }
  48. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  49. //{{AFX_MSG_MAP(CAboutDlg)
  50. //}}AFX_MSG_MAP
  51. END_MESSAGE_MAP()
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CUnicodeDlg dialog
  54. //extern HWND hwnd;
  55. CUnicodeDlg::CUnicodeDlg(CWnd* pParent /*=NULL*/)
  56. : CDialog(CUnicodeDlg::IDD, pParent)
  57. {
  58. //{{AFX_DATA_INIT(CUnicodeDlg)
  59. m_startip = _T("127.0.0.1");
  60. m_endip = _T("127.0.0.1");
  61. m_pDaodb=new CDaoDatabase;
  62. //}}AFX_DATA_INIT
  63. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  64. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  65. }
  66. void CUnicodeDlg::DoDataExchange(CDataExchange* pDX)
  67. {
  68. CDialog::DoDataExchange(pDX);
  69. //{{AFX_DATA_MAP(CUnicodeDlg)
  70. // DDX_Control(pDX, IDC_RESULT, m_result);
  71. DDX_Control(pDX, IDC_ANIMATE1, m_ani1);
  72. DDX_Text(pDX, IDC_EDIT1, m_startip);
  73. DDX_Text(pDX, IDC_EDIT2, m_endip);
  74. DDX_Control(pDX, IDC_STATIC1, m_stcURL);
  75. DDX_Control(pDX, IDC_STATIC2, m_stcURL1);
  76. DDX_Control(pDX, IDC_EDIT1, m_Edit1);
  77. DDX_Control(pDX, IDC_EDIT2, m_Edit2);
  78. DDX_Control(pDX, IDOK, btn1);
  79. DDX_Control(pDX, IDOK2, btn2);
  80. DDX_Control(pDX, IDCANCEL, btn3);
  81. DDX_Control(pDX, IDCLEAR, btn4);
  82. DDX_Control(pDX, IDC_RESULT, m_result);
  83. //}}AFX_DATA_MAP
  84. }
  85. BEGIN_MESSAGE_MAP(CUnicodeDlg, CDialog)
  86. //{{AFX_MSG_MAP(CUnicodeDlg)
  87. ON_WM_SYSCOMMAND()
  88. ON_WM_PAINT()
  89. ON_WM_QUERYDRAGICON()
  90. ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
  91. ON_BN_CLICKED(IDOK2, OnStop)
  92. ON_BN_CLICKED(IDCLEAR, OnClear)
  93. //}}AFX_MSG_MAP
  94. END_MESSAGE_MAP()
  95. /////////////////////////////////////////////////////////////////////////////
  96. // CUnicodeDlg message handlers
  97. BOOL CUnicodeDlg::OnInitDialog()
  98. {
  99. CDialog::OnInitDialog();
  100. // Add "About..." menu item to system menu.
  101. // IDM_ABOUTBOX must be in the system command range.
  102. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  103. ASSERT(IDM_ABOUTBOX < 0xF000);
  104. CMenu* pSysMenu = GetSystemMenu(FALSE);
  105. if (pSysMenu != NULL)
  106. {
  107. CString strAboutMenu;
  108. strAboutMenu.LoadString(IDS_ABOUTBOX);
  109. if (!strAboutMenu.IsEmpty())
  110. {
  111. pSysMenu->AppendMenu(MF_SEPARATOR);
  112. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  113. }
  114. }
  115. // Set the icon for this dialog.  The framework does this automatically
  116. //  when the application's main window is not a dialog
  117. SetIcon(m_hIcon, TRUE); // Set big icon
  118. SetIcon(m_hIcon, FALSE); // Set small icon
  119. WSADATA wsd;
  120. WORD wWinSockVer;
  121. wWinSockVer=MAKEWORD(2,0);
  122. int err=WSAStartup(wWinSockVer, &wsd);
  123. if(err!=0)
  124. {
  125. AfxMessageBox("WINSOCK 版本无效!");
  126. return FALSE;
  127. }
  128. BYTE btLowVer=LOBYTE(wsd.wVersion);
  129. //如果SOCK的版本大于2.0
  130. if(LOBYTE(wsd.wVersion)<2)
  131. {
  132. AfxMessageBox("WINSOCK 版本无效!");
  133. WSACleanup();
  134. return FALSE;
  135. }
  136. m_stcURL.SetWindowText("http://www.wantsoft.com");
  137. m_stcURL.SetAutoSize(FALSE);
  138. m_stcURL.SetURL("http://www.wantsoft.com");
  139. m_stcURL.SetColours(RGB(0,0,255), RGB(0,0,0) ,RGB(255,0,0));
  140. m_stcURL1.SetWindowText("mailto:wantsoft@163.com");
  141. m_stcURL1.SetAutoSize(FALSE);
  142. m_stcURL1.SetURL("mailto:wantsoft@163.com");
  143. m_stcURL1.SetColours(RGB(0,0,255), RGB(0,0,0) ,RGB(255,0,0));
  144. btn1.SetButtonText("开始扫描");
  145. btn2.SetButtonText("停止扫描");
  146. btn3.SetButtonText("退出程序");
  147. btn4.SetButtonText("清空列表");
  148. m_result.AddString("     欢迎使用思想软件安全扫描工具");
  149. m_result.AddString("台湾自古以来是中国的领土");
  150. m_result.AddString("版权所有,翻版必究!Copyright (c) by suyu 2001");
  151. m_result.AddString("HTTP://WWW.WANTSOFT.COM");
  152. m_result.AddString("QQ:5778368");
  153. TCHAR szBuffer[256];
  154. DWORD dwSize=256;
  155. GetCurrentDirectory(dwSize,szBuffer);
  156. hwnd=GetSafeHwnd();
  157. CString strTemp;
  158. strTemp=szBuffer;
  159. m_ani1.Open(IDR_AVI); 
  160.     m_ani1.Stop(); 
  161. return TRUE;  // return TRUE  unless you set the focus to a control
  162. }
  163. void CUnicodeDlg::OnSysCommand(UINT nID, LPARAM lParam)
  164. {
  165. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  166. {
  167. CAboutDlg dlgAbout;
  168. dlgAbout.DoModal();
  169. }
  170. else
  171. {
  172. CDialog::OnSysCommand(nID, lParam);
  173. }
  174. }
  175. // If you add a minimize button to your dialog, you will need the code below
  176. //  to draw the icon.  For MFC applications using the document/view model,
  177. //  this is automatically done for you by the framework.
  178. void CUnicodeDlg::OnPaint() 
  179. {
  180. if (IsIconic())
  181. {
  182. CPaintDC dc(this); // device context for painting
  183. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  184. // Center icon in client rectangle
  185. int cxIcon = GetSystemMetrics(SM_CXICON);
  186. int cyIcon = GetSystemMetrics(SM_CYICON);
  187. CRect rect;
  188. GetClientRect(&rect);
  189. int x = (rect.Width() - cxIcon + 1) / 2;
  190. int y = (rect.Height() - cyIcon + 1) / 2;
  191. // Draw the icon
  192. dc.DrawIcon(x, y, m_hIcon);
  193. }
  194. else
  195. {
  196. CDialog::OnPaint();
  197. }
  198. }
  199. // The system calls this to obtain the cursor to display while the user drags
  200. //  the minimized window.
  201. HCURSOR CUnicodeDlg::OnQueryDragIcon()
  202. {
  203. return (HCURSOR) m_hIcon;
  204. }
  205. BOOL CUnicodeDlg::ValidAddress(CString sAddress,
  206.   UINT& n1,
  207.   UINT& n2,
  208.   UINT& n3,
  209.   UINT& n4)
  210. {
  211. int nPos;
  212. CString sTemp=sAddress;
  213. n1=atoi(sTemp);
  214. nPos=sTemp.Find(".");
  215. if(nPos==-1) return false;
  216. sTemp=sTemp.Mid(nPos+1);
  217. n2=atoi(sTemp);
  218. nPos=sTemp.Find(".");
  219. if(nPos==-1) return false;
  220. sTemp=sTemp.Mid(nPos+1);
  221. n3=atoi(sTemp);
  222. nPos=sTemp.Find(".");
  223. if(nPos==-1) return false;
  224. sTemp=sTemp.Mid(nPos+1);
  225. n4=atoi(sTemp);
  226. if(n1<0 ||n1>255) return false;
  227. if(n2<0 ||n2>255) return false;
  228. if(n3<0 ||n3>255) return false;
  229. if(n4<0 ||n4>255) return false;
  230.  
  231. return true;
  232. }
  233. void CUnicodeDlg::OnOK() 
  234. {
  235. UINT nStartAddr1,nStartAddr2,nStartAddr3,nStartAddr4;
  236. UINT nEndAddr1,nEndAddr2,nEndAddr3,nEndAddr4;
  237. UpdateData(true);
  238. if (!ValidAddress(m_startip,
  239.   nStartAddr1,
  240.   nStartAddr2,
  241.   nStartAddr3,
  242.   nStartAddr4))
  243. {
  244. CString sInvalidAddr=m_startip + "rnIP地址格式不正确。";
  245. sInvalidAddr+="请输入n.n.n.n格式地址。";
  246. MessageBox(sInvalidAddr,"无效地址",MB_ICONEXCLAMATION);
  247. GetDlgItem(IDC_EDIT1)->SetFocus();
  248. return;
  249. }
  250.     
  251. if (!ValidAddress(m_endip,
  252.   nEndAddr1,
  253.   nEndAddr2,
  254.   nEndAddr3,
  255.   nEndAddr4))
  256. {
  257. CString sInvalidAddr=m_endip+"rnIP地址格式不正确。";
  258. sInvalidAddr+="请输入n.n.n.n格式地址。";
  259. MessageBox(sInvalidAddr,"无效地址",MB_ICONEXCLAMATION);
  260. GetDlgItem(IDC_EDIT2)->SetFocus();
  261. return;
  262. }
  263.     unsigned long nStartVal=(nStartAddr1<<24)+
  264. (nStartAddr2<<16)+
  265. (nStartAddr3<<8)+
  266. (nStartAddr4);
  267.     unsigned long nEndVal=(nEndAddr1<<24)+
  268. (nEndAddr2<<16)+
  269. (nEndAddr3<<8)+
  270. (nEndAddr4);
  271. if (nEndVal<nStartVal) 
  272. {
  273. CString sInvalidAddr="IP地址范围不正确。";
  274. sInvalidAddr+="请输入n.n.n.n格式地址。";
  275. MessageBox(sInvalidAddr,"无效地址",MB_ICONEXCLAMATION);
  276. GetDlgItem(IDC_EDIT2)->SetFocus();
  277. return;
  278. }
  279.     if (nEndVal-nStartVal>5000)
  280. {
  281. CString sInvalidAddr="IP地址范围不能超过5000。";
  282. //sInvalidAddr+="请输入n.n.n.n格式地址。";
  283. MessageBox(sInvalidAddr,"无效地址",MB_ICONEXCLAMATION);
  284. GetDlgItem(IDC_EDIT2)->SetFocus();
  285. return;
  286. }
  287. count=nEndVal-nStartVal+1;
  288. m_ani1.Play(0,-1,-1); 
  289. //    _tagHost* pHost=new _tagHost[count];
  290. UINT n1,n2,n3,n4;
  291. n1=nStartAddr1;
  292. n2=nStartAddr2;
  293. n3=nStartAddr3;
  294. n4=nStartAddr4;
  295. BOOL bContinue=true;
  296. for (int i=0;i<count;i++)
  297. {
  298. host[i].strIP.Format("%d.%d.%d.%d",n1,n2,n3,n4); 
  299. host[i].bFinished=false; 
  300. host[i].bProxy =false;
  301. host[i].strName="" ;
  302. host[i].strProxyName="";
  303. host[i].uPort=80;
  304. host[i].uProxyPort=0; 
  305. if((n1==nEndAddr1)&&
  306.       (n2==nEndAddr2)&&
  307.       (n3==nEndAddr3)&&
  308.       (n4==nEndAddr4)) break;
  309. else
  310. {
  311. n4++;
  312. if(n4>255)
  313. {
  314. n4=0;
  315. n3++;
  316. if(n3>255)
  317. {
  318. n3=0;
  319. n2++;
  320. if(n2>255)
  321. {
  322. n2=0;
  323. n1++;
  324. }//end n2
  325. }//end n3
  326. }//end n4
  327. }
  328. }
  329. CString strTemp="开始地址" + host[0].strIP;
  330. TRACE0(strTemp);
  331. strTemp="结束地址" + host[count-1].strIP;
  332. TRACE0(strTemp);
  333. CString strThread;
  334. ////////////////////////////////////
  335. for ( i=0;i< nTotalNum;i++)
  336. {
  337. if (i==count) break;
  338. session.Lock(); 
  339. thread[i].nThreadFlag =3;
  340. thread[i].nThreadNum =i+1;
  341. thread[i].pHost =&host[i];
  342. thread[i].strMsg ="";
  343. nThreadCount++;
  344. nCurrent++;
  345. session.Unlock(); 
  346. strThread.Format("%d/100",nThreadCount);
  347. SetDlgItemText(IDC_STATICOUNT,strThread);
  348. blnRunning=true;
  349. AfxBeginThread(ClientSocketThreadProc,(LPVOID)&thread[i],0,0,0,NULL);
  350. strTemp.Format("线程%d开始连接%s...",i+1,thread[i].pHost->strIP);
  351. m_result.AddString(strTemp);
  352. UpdateData(false);
  353. }
  354. // GetDlgItem(IDOK)->EnableWindow(false);
  355. btn1.EnableWindow(false);
  356. }
  357. void CUnicodeDlg::OnChangeEdit1() 
  358. {
  359. // TODO: If this is a RICHEDIT control, the control will not
  360. // TODO: Add your control notification handler code here
  361.     UpdateData(true);
  362. m_endip=m_startip;
  363. CString strTemp,strTemp1;
  364. strTemp=m_startip;
  365. strTemp.TrimLeft();
  366.     int nPos;
  367. nPos=strTemp.Find(".");
  368. if (nPos==-1) 
  369. {
  370.     UpdateData(false);
  371.      return;
  372. }
  373. strTemp1=strTemp.Left(nPos); 
  374. strTemp1=strTemp1+"."; 
  375. strTemp=strTemp.Mid(nPos+1);
  376. nPos=strTemp.Find(".");
  377. if (nPos==-1) 
  378. {
  379.     UpdateData(false);
  380.      return;
  381. }
  382. strTemp1=strTemp1+strTemp.Left(nPos); 
  383. strTemp1=strTemp1+"."; 
  384. strTemp=strTemp.Mid(nPos+1);
  385. nPos=strTemp.Find(".");
  386. if (nPos==-1) 
  387. {
  388.     UpdateData(false);
  389.      return;
  390. }
  391. strTemp1=strTemp1+strTemp.Left(nPos); 
  392. strTemp1=strTemp1+"."; 
  393. strTemp=strTemp.Mid(nPos+1);
  394. if (atoi(strTemp)==1)
  395. {
  396. strTemp1=strTemp1+"255";
  397. m_endip=strTemp1;
  398. }
  399.    UpdateData(false);
  400. }
  401. void CUnicodeDlg::OnStop() 
  402. {
  403. blnRunning=false;
  404. // m_ani1.Stop(); 
  405. //GetDlgItem(IDOK)->EnableWindow(true);
  406. btn1.EnableWindow(true);
  407. }
  408. unsigned long CUnicodeDlg::SplitIp(CString strIp)
  409.  {
  410. int ip1, ip2,ip3,ip4;
  411. int nPos;
  412. unsigned long result;
  413. ip1=atoi(LPCSTR(strIp));
  414.     nPos=strIp.Find(".");
  415. strIp=strIp.Mid (nPos+1);
  416. ip2=atoi(LPCSTR(strIp));
  417.     nPos=strIp.Find(".");
  418. strIp=strIp.Mid (nPos+1);
  419. ip3=atoi(LPCSTR(strIp));
  420.     nPos=strIp.Find(".");
  421. strIp=strIp.Mid (nPos+1);
  422. ip4=atoi(LPCSTR(strIp));
  423.        // result=ip1*2500000000+ip2*1000000+ip3*1000+ip4;  //合成一个
  424. int sip1,sip2,sip3,sip4;
  425. sip1=ip1;
  426. sip2=ip2;
  427. sip3=ip3;
  428. sip4=ip4;
  429. result=(sip1<<24)+(sip2<<16)+(sip3<<8)+ip4;  //合成一个
  430.     return result;
  431.  }
  432. BOOL CAboutDlg::OnInitDialog() 
  433. {
  434. CDialog::OnInitDialog();
  435. // TODO: Add extra initialization here
  436. HCURSOR hCur;
  437. hCur=AfxGetApp()->LoadCursor(IDC_HAND);
  438. return TRUE;  // return TRUE unless you set the focus to a control
  439.               // EXCEPTION: OCX Property Pages should return FALSE
  440. }
  441. LRESULT CUnicodeDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
  442. {
  443. CString strTemp;
  444. CString strThread;
  445. _tagThread * pThread;
  446. switch(message)
  447. {
  448. case WM_SCAN:
  449.  strTemp=LPCSTR(lParam);
  450.  m_result.AddString(strTemp);
  451.  break;
  452. case WM_SCANOVER:
  453. pThread=(_tagThread*)wParam;
  454. strTemp.Format("线程%d结束---->%s",pThread->nThreadNum,pThread->strMsg);
  455. // MessageBox(strTemp);
  456. m_result.AddString(strTemp);
  457. strThread.Format("%d/100",nThreadCount);
  458. SetDlgItemText(IDC_STATICOUNT,strThread);
  459.         //总数达到
  460. if (nThreadCount==0)
  461. {
  462. btn1.EnableWindow(true);
  463. m_ani1.Stop();
  464. break;
  465. }
  466. //结束
  467. if (!blnRunning)
  468. {
  469. btn1.EnableWindow(true);
  470. m_ani1.Stop();
  471. break;
  472. }
  473. if (nCurrent>count-1) break;
  474. session.Lock(); 
  475. pThread->nThreadFlag =3;
  476. pThread->pHost =&host[nCurrent];
  477. pThread->strMsg ="";
  478. nThreadCount++;
  479. nCurrent++;
  480. session.Unlock(); 
  481. blnRunning=true;
  482. AfxBeginThread(ClientSocketThreadProc,(LPVOID)pThread,0,0,0,NULL);
  483. strTemp.Format("线程%d开始连接%s...",pThread->nThreadNum,pThread->pHost->strIP);
  484. m_result.AddString(strTemp);
  485. UpdateData(false);
  486. break;
  487. case WM_SCANSTART:
  488.  break;
  489. default:
  490. ;
  491. }
  492. return CDialog::WindowProc(message, wParam, lParam);
  493. }
  494. void CUnicodeDlg::OnClear() 
  495. {
  496.     m_result.ResetContent();
  497.     m_result.AddString(" 欢迎使用思想软件安全扫描工具");
  498. m_result.AddString("台湾自古以来是中国的领土");
  499. m_result.AddString("版权所有,翻版必究!Copyright (c) by suyu 2001");
  500. m_result.AddString("HTTP://WWW.WANTSOFT.COM");
  501. m_result.AddString("QQ:5778368");
  502. }