📄 global.h
字号:
#ifndef YBJJ_GLOBAL
#define YBJJ_GLOBAL
//=======================================
// 一些常量定义
//=======================================
#define PALVERSION 0x300
#define MAXPALETTE 256
#define TIMER_RECV_TIMEOUT 10000 //每个socket超时时间
/*
#ifdef _DEBUG
#define TIMER_SELECT_TIMEOUT 2 //20秒
#else
#define TIMER_SELECT_TIMEOUT 20 //20秒
#endif
*/
#define POSTCOURSE_BUFFER_SIZE 1024*10 //自动选课每个线程的buffer
#define MAX_COURSE 50
#define COLUMN_COUNT 7
#define MAX_LOADSTRING 100
#define WM_TRAY WM_USER+1111
#define MAIN_BUFFER_SIZE 1024*512
#define SEND_BUFFER_SIZE 1536
//=======================================
// 结构体定义
//=======================================
struct struct_mystatus
{
int Busy;
bool LOGINED; //是否已登录
bool CanAuto; //是否可以自动选课
bool Autoing; //是否正在自动选课
short post; //记录提交的次数
};
struct struct_get
{
char ctable[20];
char ntable_type[5];
char ccolumns[150];
char cclauses[500];
char nrow_min[5];
char nrow_max[5];
};
struct struct_http_head
{
char *Host;
char *Path;
char *IPA;
int PORT;
};
struct thread_param
{
TCHAR SendBuffer[SEND_BUFFER_SIZE];
TCHAR SendBuffer2[SEND_BUFFER_SIZE];
HWND hProgress;
BYTE Analysis;
bool NeedBuffer2;
};
//=======================================
// 外部变量定义
//=======================================
extern char *USER_AGENT;
extern char *ACCEPT_LANGUAGE;
extern char *ACCEPT_ENCODING;
extern char *CONTENT_TYPE;
// Global Variables:
extern HINSTANCE hInst; // current instance
extern TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
extern SOCKET hSocket;
extern HWND hLCD;
extern HWND hMain,hSplash;
extern HWND hDlgQuery,hList1;
extern HWND hDlgCancel,hList2;
extern HWND hDlgChoose;
extern HWND hDlgLogin;
extern HWND hDlgArrangement,hList4,hList5;
extern HWND hDlgAuto;
extern HWND hStatusBar;
extern HMENU m,m2;
extern HFONT hFont;
extern unsigned short int g_iServer; //使用那个服务器
extern long g_iTimeOut; //线程超时
extern long g_iMaxThread; //最大线程数
extern long g_iCountThread; //当前线程数
extern WNDPROC oldWndProc1; //存放List1的原有WndProc
extern TCHAR UserName[10]; //用于存放学号
extern TCHAR PassWord[30]; //用于存放密码
extern TCHAR CourseName[50][3]; //用于存放课程名
extern TCHAR UserCookie[100]; //存储HTTP头中的User-Cookie字段
//HWND CW[MAX_COURSE][COLUMN_COUNT];//用于存储课程选择对话框里那些控件句柄
//COLUMN0为课程名称AUTOCHECKBOX ||COLUMN6为服从分配AUTOCHECKBOX ||中间为5项志愿的COMBOBOX
//HWND CW2[MAX_COURSE+8]; //存放课程选择上半部分||后四个存放已提交**学分,已选中**学分||再后两个存放提交课程号的edit及其配套标签||再后两个存放提交课序号的edit及其配套标签
//TCHAR KW[MAX_COURSE][8+1]; //前7位课程号,第8位为0,第9位为课程属性 (1=必修,2=限选,3=任选)
//TCHAR KW2[MAX_COURSE][10]; //上半部分
extern const TCHAR signature1[6];
extern struct struct_mystatus mystatus;
extern struct struct_get myget;
extern struct struct_http_head *now_http_head;
extern struct_http_head http_head1;
extern struct_http_head http_head2;
extern struct_http_head http_head3;
extern struct_http_head http_head_custom;
extern struct_http_head http_head_debug;
//=======================================
// 函数定义
//=======================================
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgQuery(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgCanceled(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgChoose(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgLogin(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgArrangement(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgAuto(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcDlgCustom(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProcList1(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK WndProcSplash(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
void SplashWindow();
void ShowTip(TCHAR *Text,TCHAR *Title=szTitle);
void lout(char *Text);
void lstrcatutf8(const char *string1,char *string2);
void LogOFF(TCHAR *tips);
void LogIN();
unsigned int __stdcall SendThread(LPVOID lParam);
void CopyRight();
PCHAR AnalysisHttpHeader(char *R);
void Analysis1(char *R); //分析课程查询
void Analysis2(char *R); //分析停课查询
void Analysis3(char *R); //分析我选的课
void Analysis4(char *R); //分析是否成功登录
void Analysis5(char *R); //分析是否成功退出登录
void Analysis6(char *R); //分析本学期课表
void Analysis7(char *R); //分析是否可以自动选课
void Analysis8(char *Buffer,int seq); //分析是否自动选课成功
void Analysis10(char *B); //分析应该连接到交大服务器还是清华服务器
bool AnalysisFooter(char *Buffer); //分析本学期课表
bool Locate(char *str,char *Start,char *End,int *pos,int *length);
//输入str==在这个字符串里寻找,Start==前匹配字符串
//输出*pos,找到的前匹配字符串的相对位置,*length前后匹配所夹字串的长度
void GetDefault(TCHAR *PAGE, int Analysis);
//void GetUserMessage();
unsigned int __stdcall ThreadForPostCourse(PVOID lParam);
unsigned int __stdcall ThreadForSchedule(PVOID lParam);
void EnableDlgItem(HWND hDlg,int nID,bool bEnable);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -