📄 main.pas
字号:
unit MAIN;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, StdCtrls, ImgList, WSocket, inifiles, Menus,
sxinxi, shellapi, jingcheng, pingmu, yuanc, Tmovie, Banji,
registry, brushp, telock, Guangbo, Chongqi, Guanji,
TeacherMessage, FastShe, Taolun, msacm, mmsystem, IPXUnit,
VCLUnZip, VCLZip, jGuangbo, Buttons, SoundOut, SoundIN, LZRW1,
LMDCustomFormFill, LMDFormFill, LMDGlobalHotKey, LMDCustomComponent,
LMDWndProcComponent, LMDTrayIcon, LMDControl, LMDBaseControl,
LMDBaseGraphicControl, LMDBaseLabel, LMDCustomLabel, LMDCustomLabelFill,
LMDLabelFill, LMDTimer, XPMenu, LMDOneInstance, LMDPopupMenu, SkinForm,
TFlatPanelUnit, TFlatSpeedButtonUnit, TFlatHintUnit, effects,
LMDCustomButton, LMDMouseBaseCtrl, LMDMouseFencer,
LMDMousePositioner, Animate,jpeg,GIFCtrl, EPCtrls, LMDSysBase,
LMDSysBaseComponent, LMDSysNetwork, VCLBase, IndiCtrls, RXCtrls, EffBtns,
LMDCustomControl, LMDCustomPanel, LMDCustomBevelPanel,
LMDCustomParentPanel, LMDCustomPanelFill,
XP_Button, XP_Matrix, Regware;
type
TForm1 = class(TForm)
WSocket1: TWSocket;
WSocket2: TWSocket;
WSocket3: TWSocket;
WSocket4: TWSocket;
WSocket5: TWSocket;
WSocket6: TWSocket;
WSocket7: TWSocket;
WSocket8: TWSocket;
WSocket9: TWSocket;
WSocket10: TWSocket;
WSocket11: TWSocket;
WSocket12: TWSocket;
WSocket13: TWSocket;
WSocket14: TWSocket;
WSocket15: TWSocket;
WSocket16: TWSocket;
WSocket17: TWSocket;
WSocket18: TWSocket;
WSocket19: TWSocket;
WSocket20: TWSocket;
WSocket21: TWSocket;
WSocket22: TWSocket;
WSocket23: TWSocket;
WSocket24: TWSocket;
WSocket25: TWSocket;
WSocket26: TWSocket;
WSocket27: TWSocket;
WSocket28: TWSocket;
WSocket29: TWSocket;
WSocket30: TWSocket;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
N11: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
WSocket31: TWSocket;
WSocket32: TWSocket;
WSocket33: TWSocket;
WSocket34: TWSocket;
WSocket35: TWSocket;
WSocket36: TWSocket;
WSocket37: TWSocket;
WSocket38: TWSocket;
WSocket39: TWSocket;
WSocket40: TWSocket;
WSocket41: TWSocket;
WSocket42: TWSocket;
WSocket43: TWSocket;
WSocket44: TWSocket;
WSocket45: TWSocket;
WSocket46: TWSocket;
WSocket47: TWSocket;
WSocket48: TWSocket;
WSocket49: TWSocket;
WSocket50: TWSocket;
WSocket51: TWSocket;
WSocket52: TWSocket;
WSocket53: TWSocket;
WSocket54: TWSocket;
WSocket55: TWSocket;
WSocket56: TWSocket;
WSocket57: TWSocket;
WSocket58: TWSocket;
WSocket59: TWSocket;
WSocket60: TWSocket;
WSocket61: TWSocket;
WSocket62: TWSocket;
WSocket63: TWSocket;
WSocket64: TWSocket;
WSocket65: TWSocket;
WSocket66: TWSocket;
WSocket67: TWSocket;
WSocket68: TWSocket;
WSocket69: TWSocket;
WSocket70: TWSocket;
WSocket71: TWSocket;
WSocket72: TWSocket;
WSocket73: TWSocket;
WSocket74: TWSocket;
WSocket75: TWSocket;
PopupMenu2: TPopupMenu;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
NetMeeting1: TMenuItem;
N27: TMenuItem;
N29: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N28: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N6404801: TMenuItem;
N8006001: TMenuItem;
LMDTrayIcon1: TLMDTrayIcon;
N20: TMenuItem;
NetMeeting2: TMenuItem;
NetMeeting3: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
LMDGlobalHotKey1: TLMDGlobalHotKey;
N35: TMenuItem;
N36: TMenuItem;
A1: TMenuItem;
WSocket: TWSocket;
N37: TMenuItem;
N38: TMenuItem;
N39: TMenuItem;
LMDGlobalHotKey2: TLMDGlobalHotKey;
WSockethook: TWSocket;
N41: TMenuItem;
R1: TMenuItem;
F1: TMenuItem;
SVoiceSocket: TWSocket;
RVoiceSocket: TWSocket;
N42: TMenuItem;
N43: TMenuItem;
N45: TMenuItem;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
VCLZip1: TVCLZip;
IPX1: IPX;
LWSocket: TWSocket;
IPX2: IPX;
SoundIN1: TSoundIN;
SoundOut1: TSoundOut;
Timer1: TTimer;
lzrw11: Tlzrw1;
ImageList1: TImageList;
WSocketsize: TWSocket;
PingmuTimer: TLMDHiTimer;
LMDOneInstance1: TLMDOneInstance;
Timer2: TTimer;
LMDPopupMenu1: TLMDPopupMenu;
N12: TMenuItem;
N40: TMenuItem;
N44: TMenuItem;
N46: TMenuItem;
N47: TMenuItem;
N48: TMenuItem;
N49: TMenuItem;
N50: TMenuItem;
N51: TMenuItem;
N52: TMenuItem;
N53: TMenuItem;
N54: TMenuItem;
N55: TMenuItem;
N56: TMenuItem;
LMDPopupMenu2: TLMDPopupMenu;
N57: TMenuItem;
N59: TMenuItem;
N62: TMenuItem;
FlatHint1: TFlatHint;
N58: TMenuItem;
N60: TMenuItem;
N61: TMenuItem;
N63: TMenuItem;
N64: TMenuItem;
N65: TMenuItem;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton14: TSpeedButton;
N66: TMenuItem;
N67: TMenuItem;
SkinForm1: TSkinForm;
SpeedButton22: TSpeedButton;
SpeedButton23: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton16: TSpeedButton;
FlatPanel2: TFlatPanel;
FlatPanel1: TFlatPanel;
ListView1: TListView;
RxLabel1: TRxLabel;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton20: TSpeedButton;
SpeedButton21: TSpeedButton;
XP_Button1: TXP_Button;
XP_Button2: TXP_Button;
XP_Button3: TXP_Button;
XP_Button4: TXP_Button;
XP_Button5: TXP_Button;
XP_Button6: TXP_Button;
XP_Button7: TXP_Button;
XP_Button8: TXP_Button;
XP_Button9: TXP_Button;
XP_Button10: TXP_Button;
XP_Button11: TXP_Button;
XP_Button12: TXP_Button;
SpeedButton24: TSpeedButton;
SpeedButton25: TSpeedButton;
Label5: TLabel;
reg: TRegware;
Label6: TLabel;
procedure GetHotSpot(var HotSpot: TPoint);
procedure GetCursorIcon(var Cursor: TIcon);
// procedure CaptureStreamEvent(Sender: TObject);
procedure WndProc(var Mess: TMessage); override;
// function streamcomp(var stream1: TMemoryStream; stream2: TMemoryStream): boolean;
procedure GetScreen(var bmp1: TBitmap; screenx: integer; screeny: integer; screenr: integer; screenb: integer);
procedure FormActivate(Sender: TObject);
procedure ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure WSocket1SessionClosed(Sender: TObject; Error: Word);
procedure N8Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
procedure WSocket1SessionConnected(Sender: TObject; Error: Word);
procedure WSocket1DataAvailable(Sender: TObject; Error: Word);
procedure N13Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure N29Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N28Click(Sender: TObject);
procedure N30Click(Sender: TObject);
procedure N32Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure N6404801Click(Sender: TObject);
procedure N8006001Click(Sender: TObject);
procedure LMDTrayIcon1DblClick(Sender: TObject);
procedure NetMeeting2Click(Sender: TObject);
procedure NetMeeting3Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure LMDGlobalHotKey1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure N35Click(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure N37Click(Sender: TObject);
procedure N39Click(Sender: TObject);
procedure LMDGlobalHotKey2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure R1Click(Sender: TObject);
procedure F1Click(Sender: TObject);
procedure N42Click(Sender: TObject);
procedure N43Click(Sender: TObject);
procedure N45Click(Sender: TObject);
procedure WSocketDataAvailable(Sender: TObject; Error: Word);
procedure WSockethookDataAvailable(Sender: TObject; Error: Word);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure SpeedButton15Click(Sender: TObject);
procedure LWSocketDataAvailable(Sender: TObject; Error: Word);
procedure SoundIN1Data(data: Pointer; size: Integer);
procedure RVoiceSocketDataAvailable(Sender: TObject; Error: Word);
procedure PingmuTimerTimer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure WSocketsizeDataAvailable(Sender: TObject; Error: Word);
procedure FormDestroy(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure LMDTrayIcon1Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure SpeedButton16Click(Sender: TObject);
procedure LMDOneInstance1Custom(Sender: TObject);
procedure N63Click(Sender: TObject);
procedure N64Click(Sender: TObject);
procedure N65Click(Sender: TObject);
procedure SpeedButton22Click(Sender: TObject);
procedure SpeedButton23Click(Sender: TObject);
procedure N67Click(Sender: TObject);
procedure SpeedButton24Click(Sender: TObject);
procedure SpeedButton25Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
onetea: word;
end;
const
wshport = '7509'; //学生教师机连接端口
STR_MSGMOUSEPOS: pchar = 'WM_MOUSEPOS'; //自己定义鼠标消息
var
Form1: TForm1;
student_count, s_selected, s_repeattime: smallint; //学生数,选择的学生号,循环时间
computer_name: array[0..75] of string; //计算机名称
computer_ip: array[0..75] of string; //计算机的IP地址
student_name: array[0..75] of string; //学生的姓名
student_memo: array[0..75] of string; //学生的注释
// s_student: ARRAY[0..80] OF smallint; //同时选择的学生
s_imageindex: array[0..75] of smallint; //保留学生图标的状态
wsh_socket: array[0..75] of TWSocket; //SOCKET控件的代替的指针
school_name, l_key,teacher_name, class_name, course_name: string;
pingmu_size, leftsize, recsize: longint; // 屏幕文件大小
wsh_pingmu, wsh_first, zhuce, zhuceall, s_guangbo, w_shuaxing: boolean;
TmpStream: TMemoryStream; //临时内存流
fabaotime, getime, student_time: integer; //每发1024数据包时间,发送全屏幕时延长时间,学生发送屏幕时间
huandeng: integer; //幻灯模式
msg_id: cardinal; //鼠标返回的消息
compress_mode, xieyi: integer; //选择压缩模式,采用什么协议
hua_ok: boolean; //接收屏幕可以开始画屏
drawstream, bmpstream: Tmemorystream; //接收屏幕广播的内存流
send_streamsize: integer; //校验发送长度,否则出错!
draw_mouse, send_voice, draw_ok: boolean; //是否画鼠标,是否发送语音
s_computername: string; //本机的计算机名称
shang_ci, shang_size: integer; //记录上次屏幕的流长和相同次数
quan_screen,quan_s: boolean; //记录是否发送全屏幕
allsize: longint;
wsh_test: smallint;
priscreen: Tbitmap;
// pcolorbit: tpixelformat;
// my: array [0..150]of integer;//test
function EnableMouseHook(hld: hwnd): BOOL; external 'hook.DLL'; //击活鼠标HOOK
function DisableMouseHook: BOOL; external 'hook.DLL'; //屏蔽鼠标HOOK
implementation
uses soundf, duijiangf, exitf, aboutf;
const
BufSize = 1024;
BufSize1 = 1024;
var
closeflag: boolean; //关闭标志
ScreenStream: TMemorystream; //保留现屏幕流
CursorSize, image_index: integer; //每个流的大小
bmpmap1, nowscreen: TBitmap; //屏幕广播时临时位图变量
playvoice_stream, p_stream, sendwav, voice_wsh: Tmemorystream; //语音传输流
l_lie, l_kuan, l_jian1, l_jian2, oldsize, cool: integer; //设置座位的列,宽,间隔
s_student_ip, s_student_name, StreamSize: string; //发送来的学生的IP地址,学生计算机名称,内存流长度
guding_ip,auto_login: string; //学生IP地址固定还是动态
len: integer;
// receive_login: boolean; //是否接收登陆信息,第一张屏幕图片
{$R *.DFM}
procedure TForm1.WndProc(var Mess: TMessage);
var //发送鼠标消息
xleng: integer;
s_x, s_y, m_mouse: string;
begin
if (mess.msg = msg_id) then //当有DLL传回的鼠标消息
begin
xleng := length(inttostr(mess.lparam)) - 4;
if xleng <= 0 then s_x := '0' else //lparam中包含鼠标位置和状态信息
begin
s_x := copy(inttostr(mess.lparam), 1, xleng);
s_y := inttostr(strtoint(copy(inttostr(mess.lparam), xleng + 1, 4)));
m_mouse := 'state:=' + inttostr(mess.wparam) +
' x:=' + s_x +
' y:=' + s_y;
end;
try
case xieyi of
0: wsockethook.SendStr(m_mouse);
1: ipx2.Send(pchar(m_mouse), length(m_mouse));
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -