📄 jguangbo.pas
字号:
unit jGuangbo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Menus, wsocket, jpeg,
VCLUnZip, ThdTimer;
type
TjGuangbof = class(TForm)
Label1: TLabel;
Image1: TImage;
PopupMenu1: TPopupMenu;
VCLUnZip1: TVCLUnZip;
DxTimer1: TThreadedTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormShow(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DxTimer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
jGuangbof: TjGuangbof;
wsh_move: boolean; //是否遥控,是否移动
pingmu_state: string;
implementation
uses main;
{$R *.DFM}
procedure TjGuangbof.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DXTimer1.Enabled := false;
bmpstream.clear; //释放内存流
drawstream.clear;
// Image1.Canvas.Brush.Color := clBLack;
// Image1.Canvas.FillRect(rect(0, 0, image1.width, image1.height));
end;
procedure TjGuangbof.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i: smallint;
begin
if (key = VK_F11) and (ssShift in Shift) then //停止接收屏幕广播
begin
if pingmu_state = '遥控辅导' then
begin
form1.wsockethook.SendStr('up:=' + inttostr($10));
sleep(1);
form1.wsockethook.SendStr('up:=' + inttostr($11));
sleep(1);
form1.wsockethook.SendStr('up:=' + inttostr($12));
sleep(1);
pingmu_state := '';
end;
DXTimer1.Enabled := false;
try
if wsh_socket[s_selected].State <> wsClosed then
wsh_socket[s_selected].SendStr('/*csh*/:' + #13 + #10 + '停止示范');
finally
form1.Wsocket.Close; //关闭通讯
hua_ok := false;
Image1.Canvas.Brush.Color := clBLack;
Image1.Canvas.FillRect(rect(0, 0, screen.width, screen.height));
end;
// sleep(50);
if pingmu_state = '示范教学' then
for i := 0 to student_count - 1 do //停止别的学生机接收广播
begin
if (form1.ListView1.Items[i].imageindex <> 0) and (form1.listView1.Items[i].Selected <> true) then
if wsh_socket[i].State <> wsClosed then
wsh_socket[i].SendStr('/*csh*/:' + #13 + #10 + '停止广播');
//wsh_socket[i].SendStr('/*csh*/:' + #13 + #10 + '注销系统');
sleep(1);
end;
form1.Wsocketsize.Close; //遥控结束才可关闭
form1.Wsockethook.Close;
form1.wsocket.close;
priscreen.FreeImage; //清除流
priscreen.Free;
// bmpstream.free; //释放内存流
// drawstream.free;
close;
end;
if pingmu_state = '遥控辅导' then
begin
wsh_socket[s_selected].SendStr('/*csh*/:' + #13 + #10 + '遥控注销');
form1.wsockethook.SendStr('down:=' + inttostr(key));
sleep(1);
end;
end;
procedure TjGuangbof.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
m_mouse: string;
sbpos: TPoint;
begin
if pingmu_state = '遥控辅导' then //单击鼠标
begin
getcursorpos(sbpos);
m_mouse := 'state:=513' +
' x:=' + inttostr(sbpos.x) +
' y:=' + inttostr(sbpos.y);
form1.wsockethook.SendStr(m_mouse);
end;
end;
procedure TjGuangbof.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
m_mouse: string;
sbpos: TPoint;
begin
if pingmu_state = '遥控辅导' then //鼠标移动
begin
getcursorpos(sbpos);
m_mouse := 'state:=512' +
' x:=' + inttostr(sbpos.x) +
' y:=' + inttostr(sbpos.y);
form1.wsockethook.SendStr(m_mouse);
end;
end;
procedure TjGuangbof.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
m_mouse: string;
sbpos: TPoint;
begin
if pingmu_state = '遥控辅导' then //双击鼠标
begin
getcursorpos(sbpos);
m_mouse := 'state:=514' +
' x:=' + inttostr(sbpos.x) +
' y:=' + inttostr(sbpos.y);
form1.wsockethook.SendStr(m_mouse);
end;
end;
procedure TjGuangbof.FormShow(Sender: TObject);
begin
pingmu_state := '';
Image1.Canvas.CopyMode := cmSrcCopy;
image1.Canvas.Draw(0, 0, priscreen);
// dxtimer1.Enabled:=false;
end;
procedure TjGuangbof.PopupMenu1Popup(Sender: TObject);
var
m_mouse: string;
sbpos: TPoint;
begin
if pingmu_state = '遥控辅导' then
begin
getcursorpos(sbpos);
m_mouse := 'state:=516' +
' x:=' + inttostr(sbpos.x) +
' y:=' + inttostr(sbpos.y);
form1.wsockethook.SendStr(m_mouse);
m_mouse := 'state:=517' +
' x:=' + inttostr(sbpos.x) +
' y:=' + inttostr(sbpos.y);
form1.wsockethook.SendStr(m_mouse);
end;
end;
procedure TjGuangbof.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
wsh_move := true;
end;
procedure TjGuangbof.Label1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
sbpos: Tpoint;
begin
if wsh_move = true then
begin
getcursorpos(sbpos);
label1.Left := sbpos.x;
label1.Top := sbpos.y;
end;
end;
procedure TjGuangbof.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
wsh_move := false;
end;
procedure TjGuangbof.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if pingmu_state = '遥控辅导' then
begin
if (key = $10) or (key = $11) or (key = $12) then
form1.wsockethook.SendStr('up:=' + inttostr(key));
end;
end;
procedure TjGuangbof.DxTimer1Timer(Sender: TObject);
var
un_compress, wait_stream: TmemoryStream;
//wsh_pain: Tbitmap;
cshjpeg:tjpegimage;
R: TRect;
begin
if (hua_ok = true) and (draw_ok = true) then
begin
R := Rect(0, 0, Screen.Width, Screen.Height);
hua_ok := false;
draw_ok := false;
un_compress := Tmemorystream.Create;
un_compress.Clear;
un_compress.Position := 0;
drawstream.Position := 0;
//转存
wait_stream := Tmemorystream.Create;
wait_stream.Clear;
wait_stream.LoadFromStream(drawstream);
wait_stream.Position := 0;
//解压缩流
with vclunzip1 do
begin
ArchiveStream := TMemoryStream.Create;
archivestream.Position := 0;
wait_stream.SaveToStream(archivestream);
archivestream.Position := 0;
try
unZiptoStream(un_compress, 'screen.jpg');
finally
archivestream.Free;
archivestream := nil;
end;
end;
wait_stream.Clear;
wait_stream.Free;
drawstream.Clear;
// wsh_pain := TBItmap.Create;
cshjpeg:=tjpegimage.create;
un_compress.Position := 0;
cshjpeg.LoadFromStream (un_compress);
// wsh_pain.Assign(cshjpeg);
Image1.Canvas.CopyMode := cmSrcCopy;
Image1.Canvas.Draw(0, 0, cshjpeg);
//wsh_pain.FreeImage;
// wsh_pain.Free;
cshjpeg.Free ;
un_compress.Clear;
un_compress.Free;
draw_ok := true;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -