⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analysis.cpp

📁 我们学校牛人开发的选课外挂源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				i=1;
				if (aDelKch)
				{
					CW[j][0]=CreateWindowEx(NULL,"button",Buffer, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 20, 110+20*row, 295, 20, hDlgChoose, NULL, hInst, NULL);
					SendMessage(CW[j][0],WM_SETFONT,(unsigned int)hFont,1);
				}
				else
				{
					CW[j][0]=CreateWindowEx(NULL,"static",Buffer, WS_CHILD | WS_VISIBLE, 40, 110+20*row, 295, 20, hDlgChoose, NULL, hInst, NULL);
					SendMessage(CW[j][0],WM_SETFONT,(unsigned int)hFont,1);
				}
				
				//服从调剂
				CW[j][6]=CreateWindowEx(NULL,"button",0, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 320, 110+20*row, 20, 20, hDlgChoose, NULL, hInst, NULL);
				SendMessage(CW[j][6],WM_SETFONT,(unsigned int)hFont,1);
				UpdateWindow(hDlgChoose);
				
				
				while(Locate(R,"<TD>","</TD>",&pos,&len))
				{
					R+=pos;
					if (len==1)					//此志愿已选
					{
						Name[1]=0;
						Name[0]=*R;
						CW[j][i]=CreateWindowEx(NULL,"static", Name, WS_CHILD | WS_VISIBLE , 260+i*102,113+20*row, 10, 15, hDlgChoose, NULL, hInst, NULL);
						SendMessage(CW[j][i],WM_SETFONT,(unsigned int)hFont,1);
						i++;
						continue;
					}
					if (*R=='&') continue;		//服从调剂
					if (memcmp(R,"已经选中",8)==0) 
					{
						CW[j][i]=CreateWindowEx(NULL,"static", "已经选中", WS_CHILD | WS_VISIBLE , 260+i*102,113+20*row, 200, 15, hDlgChoose, NULL, hInst, NULL);
						SendMessage(CW[j][i],WM_SETFONT,(unsigned int)hFont,1);
						goto rowfinish;
					}
					break;
				}
				k=i;							//暂时保存一下i
				if (memcmp(R,"<select",7)==0)	
				{
					R+=23;
					
					for (;i<6;i++)
					{
						CW[j][i]=CreateWindowEx(NULL,"combobox", 0, WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST , 260+i*83,110+20*row, 80, 1000, hDlgChoose, NULL, hInst, NULL);
						SendMessage(CW[j][i],WM_SETFONT,(unsigned int)hFont,1);//| CBS_NOINTEGRALHEIGHT | CBS_HASSTRINGS
					}
					
					while (Locate(R,"<option","</option>",&pos,&len))
					{
						R+=pos;
						Locate(R,">","</option>",&pos,&len);
						R+=pos;
						RtlZeroMemory(Name,sizeof(Name));
						memcpy(Name,R,len);
						for (i=k;i<6;i++)
							SendMessage(CW[j][i],CB_ADDSTRING,0,(long)Name);
						R=R+len+9;
						if (memcmp(R,"</TD>",5)==0)break;
					}
					for (i=k;i<6;i++)
						SendMessage(CW[j][i],CB_SETCURSEL,0,0);
				}
rowfinish:
				Locate(R,"</tr>",0,&pos,0);
				R+=pos;
				//Unix R+1
				if ( !memcmp(R+1,"</table>",8)) break;
				j++;
				row++;
				if (j>MAX_COURSE)
				{
					MessageBox(0,"对不起,数据有误,无法继续分析",szTitle,MB_ICONWARNING);
					return;
				}
				
	}
	
	R+=10;
finish_analysis3:
	
	if (Locate(R,"aInsertKch",0,&pos,0))
	{
		row++;
		R+=pos;
		CW2[MAX_COURSE+5]=CreateWindowEx(NULL,"static", "课程号", WS_CHILD | WS_VISIBLE , 20,118+20*row, 40, 20, hDlgChoose, NULL, hInst, NULL);
		SendMessage(CW2[MAX_COURSE+5],WM_SETFONT,(unsigned int)hFont,1);
		CW2[MAX_COURSE+4]=CreateWindowEx(NULL,"edit", 0, WS_CHILD | WS_VISIBLE |WS_BORDER, 60,115+20*row, 100, 20, hDlgChoose, NULL, hInst, NULL);
		SendMessage(CW2[MAX_COURSE+4],WM_SETFONT,(unsigned int)hFont,1);//| CBS_NOINTEGRALHEIGHT | CBS_HASSTRINGS
		SendMessage(CW2[MAX_COURSE+4],EM_LIMITTEXT,7,0);
	}
	if (Locate(R,"aInsertKxh",0,&pos,0))
	{
		row++;
		R+=pos;
		CW2[MAX_COURSE+7]=CreateWindowEx(NULL,"static", "课序号", WS_CHILD | WS_VISIBLE , 20,118+20*row+10, 40, 20, hDlgChoose, NULL, hInst, NULL);
		SendMessage(CW2[MAX_COURSE+7],WM_SETFONT,(unsigned int)hFont,1);
		CW2[MAX_COURSE+6]=CreateWindowEx(NULL,"edit", 0, WS_CHILD | WS_VISIBLE |WS_BORDER|ES_NUMBER , 60,115+20*row+10, 30, 20, hDlgChoose, NULL, hInst, NULL);
		SendMessage(CW2[MAX_COURSE+6],WM_SETFONT,(unsigned int)hFont,1);//| CBS_NOINTEGRALHEIGHT | CBS_HASSTRINGS
		SendMessage(CW2[MAX_COURSE+6],EM_LIMITTEXT,2,0);
	}
	if (mode)
	{
		Locate(R,"</form>",0,&pos,0);
		
	}
	else
	{
		Locate(R,"<hr",0,&pos,0);
	}
	R+=pos;
	for (i=MAX_COURSE+3;i>=MAX_COURSE;i--)
	{
		row++;
		//Unix <br>\n
		if (mode)
		{
			Locate(R,"\n","<br>",&pos,&len);
		}
		else
		{
			Locate(R,"<br>\n","<br>",&pos,&len);
		}
		R+=pos;
		RtlZeroMemory(Buffer,sizeof(Buffer));
		memcpy(Buffer,R,len);
		CW2[i]=CreateWindowEx(NULL,"static", Buffer, WS_CHILD | WS_VISIBLE , 20,130+20*row, 500, 15, hDlgChoose, NULL, hInst, NULL);
		SendMessage(CW2[i],WM_SETFONT,(unsigned int)hFont,1);
		R+=len;
	}
	
	
	
	SCROLLINFO si;
	si.cbSize = sizeof(SCROLLINFO);
	si.nMin = 0;
	si.nMax = row*15+100;//最大滚动范围
	si.nPage = 50;//合适的每页大小
	si.fMask = SIF_ALL;
	SetScrollInfo(hDlgChoose,SB_VERT,&si,true);
	
	
	//选课是否开放
	/*	if ( Locate(R,"对不起,现在不是选课时间",0,0,0) )
	{
	MessageBox(0,"对不起,现在不是选课时间",szTitle,MB_ICONWARNING);
	return;
	}*/
	
}

void Analysis4(char *R)
{
	int pos,len;
	char buff[100];
	
	if ( Locate(R,"<script>window.alert(\"","\"</script>",&pos,&len) )
	{
		R+=pos;
		RtlZeroMemory(buff,sizeof(buff));
		memcpy(buff,R,len);
		MessageBox(0,buff,szTitle,MB_ICONWARNING);
	}
	
	if ( Locate(R,"window.top.location.href=\"XK1.LoginWindow\"",0,&pos,0) )
	{
		return;
	}
	
	EndDialog(hDlgLogin,true);

	lstrcpy(buff,UserName);
	lstrcat(buff," -- 已登录");
	SetWindowText(hMain,buff);
	
	lstrcat(buff,"\r\n");
	mystatus.LOGINED =true;
	lout(buff);
	if (!mystatus.Autoing )MessageBox(0,buff,szTitle,MB_ICONINFORMATION);
	
	
}
void Analysis5(char *R)
{
	
	if ( Locate(R,"XK1.LoginWindow",0,0,0))
	{
		LogOFF("您已经退出登录");
	}
	else
	{
		lout("退出登录失败\r\n");
		MessageBox(0,"退出登录失",szTitle,MB_ICONERROR);
	}
	
}

void Analysis6(char *R)
{
	int pos,len,i,j;
	LV_ITEM lvi;
	char Buff[200];
	char DAY[15]="一二三四五六七";
	
	
	
	RtlZeroMemory(&lvi,sizeof(LV_ITEM));
	lvi.mask=LVIF_TEXT;
	lvi.pszText=Buff;
	
	if ( Locate(R,"<TH>星期日</TH>",0,&pos,0))
	{
		R+=pos;
	}
	else
	{
		MessageBox(0,"无法分析本学期课表信息",szTitle,MB_ICONWARNING);
		return;
	}
	
	for (j=0;j<7;j++)
	{
		RtlZeroMemory(Buff,sizeof(Buff));
		lstrcpy(Buff,"<TH>第");
		memcpy(Buff+6,DAY+j*2,2);
		lstrcat(Buff,"节</TH>");
		if ( Locate(R,Buff,0,&pos,0))
		{
			lvi.iSubItem=0;
			for (i=0;i<7;i++)
			{
				RtlZeroMemory(Buff,sizeof(Buff));
				lvi.iSubItem++;
				if ( Locate(R,"<TD>\n","\n</TD>",&pos,&len))
				{
					R+=pos;
					memcpy(Buff,R,len);
					R=R+len+5;
					SendMessage(hList4, LVM_SETITEM,0, (long)&lvi);
				}
			}
		}
		else
		{
			RtlZeroMemory(Buff,sizeof(Buff));
			lstrcpy(Buff,"无法分析第");
			memcpy(Buff+10,DAY+j,2);
			lstrcat(Buff,"节课");		
			MessageBox(0,Buff,szTitle,MB_ICONWARNING);
		}
		lvi.iItem++;
		lvi.lParam++;
	}
	
	lvi.iItem=0;
	lvi.lParam=0;
	
	if ( Locate(R,"<TH>上课周次</TH>",0,&pos,0))
	{
		R+=pos;
	}
	else
	{
		MessageBox(0,"无法分析本学期课表信息下部分",szTitle,MB_ICONWARNING);
		return;
	}
	SendMessage(hList5,LVM_DELETEALLITEMS,0,0);
AGAIN3:
	lvi.iSubItem=0;	
	for (i=0;i<10;i++)
	{
		RtlZeroMemory(Buff,sizeof(Buff));
		if ( Locate(R,"<TD>","</TD>",&pos,&len))
		{
			R+=pos;
			memcpy(Buff,R,len);
			R=R+len+5;
			if (i==0)
			{
				if (memcmp(Buff,"尚未选中",8)==0 || memcmp(Buff,"已经选中",8)==0) 
				{
					i--;
					continue;
				}
				SendMessage(hList5, LVM_INSERTITEM,0, (long)&lvi);
			}
			else
			{
				SendMessage(hList5, LVM_SETITEM,0, (long)&lvi);
			}
		}
		lvi.iSubItem++;
	}
	if ( Locate(R,"<TR>",0,&pos,0))
	{
		R+=pos;
		lvi.iItem++;
		lvi.lParam++;
		goto AGAIN3;
	}
	
	if ( Locate(R,"已提交必修课学分:","<br>",&pos,&len))
	{
		RtlZeroMemory(Buff,sizeof(Buff));
		R+=pos;
		memcpy(Buff,R,len);
		R=R+len+4;
		SetDlgItemText(hDlgArrangement,IDC_STATIC1,Buff);
	}
	if ( Locate(R,"已提交限选课学分:","<br>",&pos,&len))
	{
		RtlZeroMemory(Buff,sizeof(Buff));
		R+=pos;
		memcpy(Buff,R,len);
		R=R+len+4;
		SetDlgItemText(hDlgArrangement,IDC_STATIC2,Buff);
	}
	if ( Locate(R,"已提交任选课学分:","<br>",&pos,&len))
	{
		RtlZeroMemory(Buff,sizeof(Buff));
		R+=pos;
		memcpy(Buff,R,len);
		R=R+len+4;
		SetDlgItemText(hDlgArrangement,IDC_STATIC3,Buff);
	}
	if ( Locate(R,"总  学  分:","<br>",&pos,&len))
	{
		RtlZeroMemory(Buff,sizeof(Buff));
		R+=pos;
		memcpy(Buff,R,len);
		R=R+len+4;
		SetDlgItemText(hDlgArrangement,IDC_STATIC4,Buff);
	}
	
	
}

void Analysis7(char *R)
{
	//分析是否能够自动选课,不能的话给出提示,设置mystatus,返回
	
	//mystatus.Autoing=true;
	//修改定时器
	
	mystatus.Autoing =true;
	SetTimer(hMain,2,SendDlgItemMessage(hDlgAuto,IDC_SPIN1,UDM_GETPOS,0,0),0);
	PostMessage(hMain,WM_TIMER,2,0);
	
}

void Analysis8(char *Buffer,int seq)
{
	
	if (AnalysisFooter(Buffer))
	{		
		//PostMessage(hDlgAuto,WM_COMMAND,IDC_STOP,0);
		lstrcpy(Buffer,"恭喜您! ");
		lstrcat(Buffer,&CourseName[0][seq]);
		lstrcat(Buffer," 已经选中!");
		SetDlgItemText(hDlgAuto,IDC_EDIT1+seq,0);
		SetDlgItemText(hDlgAuto,IDC_EDIT4+seq,0);
		MessageBox(0,Buffer,szTitle,MB_ICONINFORMATION);
	}
	else
	{
		if (memcmp(Buffer,"已经没有上课余量",16)==0)
		{
			lstrcpy(&CourseName[0][seq],&Buffer[18]);
			int pos=50;
			CourseName[49][seq]=0;
			Locate(&CourseName[0][seq],"!",0,&pos,0);
			CourseName[pos-1][seq]=0;
			
			return;
		}
		
		if (lstrcmp(Buffer,"所选课程学分,已经超过控制学分,提交被取消")==0)
		{
			PostMessage(hDlgAuto,WM_COMMAND,IDC_STOP,0);
			MessageBox(0,"所选课程学分已经超过控制学分,提交被取消,自动选课中止",szTitle,MB_ICONINFORMATION);
			return;
		}
		if (Locate(Buffer,"现在不是选课时间",0,0,0))
		{
			PostMessage(hDlgAuto,WM_COMMAND,IDC_STOP,0);
			MessageBox(0,"对不起,现在不是选课时间,自动选课中止",szTitle,MB_ICONINFORMATION);
			return;
		}
		if (Locate(Buffer,"上课时间与",0,0,0))
		{
			//	PostMessage(hDlgAuto,WM_COMMAND,IDC_STOP,0);
			lstrcpy(Buffer,"恭喜您! ");
			lstrcat(Buffer,&CourseName[0][seq]);
			lstrcat(Buffer," 已经选中,但上课时间有冲突。");
			SetDlgItemText(hDlgAuto,IDC_EDIT1+seq,0);
			SetDlgItemText(hDlgAuto,IDC_EDIT4+seq,0);
			MessageBox(0,Buffer,szTitle,MB_ICONINFORMATION);
			return;
		}
		
		if (memcmp(Buffer,"您已经掉线",10)==0)
		{
			if (IsDlgButtonChecked(hDlgAuto,IDC_AUTO_CONNECT)==BST_UNCHECKED) 
			{
				PostMessage(hDlgAuto,WM_COMMAND,IDC_STOP,0);
			}
			LogOFF(Buffer);
			
			if (IsDlgButtonChecked(hDlgAuto,IDC_AUTO_CONNECT)==BST_CHECKED) 
			{
				lout("自动重新登录中...\r\n");
				LogIN();
			}
			return;
		}
		
		if (Locate(Buffer,"你已经选了",0,0,0))
		{
			//	PostMessage(hDlgAuto,WM_COMMAND,IDC_STOP,0);
			SetDlgItemText(hDlgAuto,IDC_EDIT1+seq,0);
			SetDlgItemText(hDlgAuto,IDC_EDIT4+seq,0);
			MessageBox(0,Buffer,szTitle,MB_ICONINFORMATION);
			return;
		}
		
		
	}
	
	//如果没有footer,mystatus.analysis=9;等待接收完整数据包
	
}


void Analysis10(char *B)
{
	int a,len;	
	if (Locate(B,"http://xk.njtu.thcic.cn:8080/xk.php",0,&a,0))
	{
		lout("连接到清华服务器\r\n");
		now_http_head=&http_head1;
		
	}
	else
	{
		lout("连接到交大服务器\r\n");
		now_http_head=&http_head2;
	}

	B+=a;
	Locate(B,"当前在线人数",0,&a,0);
	B+=a;
	Locate(B,">","<",&a,&len);
	B+=a;
	
	*(B+len)=0;

	lout("当前在线人数:");
	lout(B);
	lout("\r\n");

	
	LogIN();
}

bool AnalysisFooter(char *Buffer)
{
	char *R=Buffer;
	int pos,len;
	char buff[100],*p=buff;
	
	
	if (Locate(R,"请您登录后再使用",0,&pos,0))
	{
		lstrcpy(Buffer,"您已经掉线,请不要在别处登录选课系统。");
		return false;
	}
	if (Locate(R,"现在不是选课时间",0,&pos,0))
	{
		lstrcpy(Buffer,"现在不是选课时间");
		return false;
	}
	
	RtlZeroMemory(buff,sizeof(buff));
	while (Locate(R,"parent.xk_footer.document.write(\"","\"",&pos,&len))
	{
		R+=pos;
		if (*R==' ' && *(R+1)=='<') continue;		
		memcpy(p,R,len);
		R=R+2+len;
		p+=len;
		
	}
	if (lstrlen(buff))
	{
		//		lout("提示 :";
		lout(buff);
		lout("\r\n");
		lstrcpy(Buffer,buff);
		return false;
		//MessageBox(0,buff,"提示",MB_ICONINFORMATION);
	}
	return true;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -