易聊天1.0源码系统结构:lpPrevWndFunc,处理函数,取日期时间,发送消息,SetWindowLong,GetWindow,CallWindowProcA,GetClassName,取本机外网IP,服务器初始化,处理函数,日志输出,删除数组,取数据到达客户句柄,客户句柄取客户IP,字节集转整数型,取日期时间,发送消息, ======程序集 || ||------_启动子程序 || ||------_窗口_创建完毕 || ||------lpPrevWndFunc || ||------_关闭按钮_被单击 || ||------_发送按钮_被单击 || ||------处理函数 || ||------_客户端_连接断开 || ||------_客户端_数据到达 || ||------取日期时间 || || ======调用的Dll || ||---[dll]------发送消息 || ||---[dll]------SetWindowLong || ||---[dll]------GetWindow || ||---[dll]------CallWindowProcA || ||---[dll]------GetClassName ======程序集 || ||------_启动子程序 || ||------_窗口_创建完毕 || ||------_保存日志按钮_被单击 || ||------取本机外网IP || ||------_清空日志按钮_被单击 || ||------服务器初始化 || ||------处理函数 || ||------日志输出 || ||------_服务器_客户离开 || ||------_服务器_客户进入 || ||------_服务器_数据到达 || ||------删除数组 || ||------取数据到达客户句柄 || ||------客户句柄取客户IP || ||------字节集转整数型 || ||------_断开用户按钮_被单击 || ||------_退出程序按钮_被单击 || ||------取日期时间 || || ======调用的Dll || ||---[dll]------发送消息 调用的DLL命令: .DLL命令发送消息,整数型,"user32","SendMessageA",,,调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum,;SendMessageByString是该函数的“类型安全”声明形式由具体的消息决定 .参数窗口句柄,整数型,,要接收消息的那个窗口的句柄 .参数信息值,整数型,,消息的标识符 .参数参数一,整数型,,具体取决于消息 .参数参数二,整数型,,具体取决于消息; .DLL命令SetWindowLong,整数型,"user32.dll","SetWindowLongA" .参数hWnd,整数型 .参数nlndex,整数型 .参数dwNewLong,整数型 .DLL命令GetWindow,整数型,,"GetWindow",,获得一个窗口的句柄,该窗口与某源窗口有特定的关系 .参数源窗口,整数型 .参数关系,整数型 .DLL命令CallWindowProcA,整数型,"user32" .参数lpPrevWndFunc,整数型 .参数hwnd,整数型 .参数msg,整数型 .参数wParam,整数型 .参数lParam,整数型 .DLL命令GetClassName,,,"GetClassNameA" .参数h,整数型 .参数t,文本型 .参数n,整数型 调用的DLL命令: .DLL命令发送消息,整数型,"user32","SendMessageA",,,调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum,;SendMessageByString是该函数的“类型安全”声明形式由具体的消息决定 .参数窗口句柄,整数型,,要接收消息的那个窗口的句柄 .参数信息值,整数型,,消息的标识符 .参数参数一,整数型,,具体取决于消息 .参数参数二,整数型,,具体取决于消息;