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

📄 pingmu.pas

📁 这是一个非常好的教师和学生沟通用的电子教室!
💻 PAS
字号:
unit Pingmu;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls,jpeg, Menus, ExtDlgs, LZRW1,wsocket, XPMenu,
  LMDPopupMenu;

type
  TPingMuf = class(TForm)
    Image1: TImage;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Timer1: TTimer;
    N4: TMenuItem;
    N5: TMenuItem;
    Timer2: TTimer;
    S1: TMenuItem;
    Timer3: TTimer;
    N6: TMenuItem;
    N7: TMenuItem;
    SavePictureDialog1: TSavePictureDialog;
    N8: TMenuItem;
    N9: TMenuItem;
    P1: TMenuItem;
    N10: TMenuItem;
    Timer4: TTimer;
    D1: TMenuItem;
    lzrw11: Tlzrw1;
    Label1: TLabel;
    LMDPopupMenu1: TLMDPopupMenu;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N23: TMenuItem;
    procedure N1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure S1Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure P1Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure D1Click(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  PingMuf: TPingMuf;
  pingmu_ok: boolean;
  wsh_move:boolean;
implementation
uses main;
{$R *.DFM}

procedure TPingMuf.N1Click(Sender: TObject);
begin
  N11.Enabled := false;
  N12.Enabled := false;
  N13.Enabled := false;
  N14.Enabled := false;
  N17.Enabled := false;
  N15.Enabled := false;

  n5.Enabled := false;
  N1.Enabled := FALSE;
 // n3.Enabled := false;
  P1.Enabled := false;
  n8.Enabled := false;
  n10.Enabled := false;
  d1.Enabled := false;
// n1.checked:=not n1.checked;

  wsh_socket[s_selected].SendStr('/*csh*/:' + #13 + #10 + '屏幕监看');
  Timer1.Enabled := true;
  Timer2.Enabled := true;
end;

procedure TPingMuf.N3Click(Sender: TObject);
begin
  timer1.Enabled := false;
  timer2.Enabled := false;
  timer3.Enabled := false;
  timer4.Enabled := false;
  wsh_pingmu := false;

  if (Wsh_Socket[s_selected].State in [wsConnected]) then
  wsh_socket[s_selected].SendStr('/*csh*/:' + #13 + #10 + '结束监看');

  close;
 // form1.N13Click(sender);
end;

procedure TPingMuf.Timer1Timer(Sender: TObject);
var
  bitkan: Tbitmap;
  mylzh: Tlzrw1;
  destream: Tmemorystream;
begin
  if pingmu_ok = true then
  begin
    //tmpstream.SaveToFile('t.dat');
    Timer1.Enabled := false;
    pingmu_ok := false;
    //解压流
    destream := Tmemorystream.Create;
    destream.Clear;
    tmpstream.Position := 0;
    mylzh := Tlzrw1.Create(self);
    try
      mylzh.Visible := false;
      mylzh.CompressMode := Auto;
      mylzh.UseStream := true;
      mylzh.InputStream := tmpstream;
      mylzh.OutputStream := destream;
      mylzh.deCompress;
      mylzh.Free;
    except
      mylzh.Free;
      tmpstream.Free;
      destream.free;
      exit;
    end;
 // image1.Picture.LoadFromFile(ExtractFilePath(Application.EXEName)+'screen.jpg');
   //image1.Picture.Graphic.LoadFromStream(TmpStream);
   
   bitkan := Tbitmap.Create;
   destream.Position := 0;
   bitkan.LoadFromStream(deStream);
   image1.Canvas.Draw(0, 0, bitkan);
   // bitkan.SaveToFile('test.bmp');

    destream.Clear;
    destream.Free;
    TmpStream.Clear;
    TmpStream.Free;
    bitkan.FreeImage;
    bitkan.free;

   //timer3.Enabled:=true;
    N1.Enabled := TRUE;
    N5.Enabled := TRUE;
    n3.Enabled := true;
  end;

end;

procedure TPingMuf.N5Click(Sender: TObject);
begin
  N1.Enabled := FALSE;
  N5.Enabled := FALSE;
  try
  wsh_socket[s_selected].SendStr('/*csh*/:' + #13 + #10 + '屏幕监看');
  except
  S1Click(sender);
  exit;
  end;
  Timer1.Enabled := true;
end;

procedure TPingMuf.Timer2Timer(Sender: TObject);
begin
  if n5.Enabled = true then
    N5Click(sender);
end;

procedure TPingMuf.S1Click(Sender: TObject);
begin
 try
  wsh_socket[s_selected].SendStr('/*csh*/:' + #13 + #10 + '结束监看');
 except
   wsh_pingmu:=false;
 end;
  form1.Wsockethook.Close; //停止遥控
  timer1.enabled := false; //停止连续监看
  timer2.Enabled := false;
  timer3.Enabled := false;

  N11.Enabled := true;
  N12.Enabled := true;
  N13.Enabled := true;
  N14.Enabled := true;
  N17.Enabled := true;
  N15.Enabled := true;

  n5.Enabled := true;
  N1.Enabled := TRUE;
  n3.Enabled := true;
  P1.Enabled := true;
  n8.Enabled := true;
  n10.Enabled := true;
  d1.Enabled := true;
 // n11.Enabled:=true;
  wsh_pingmu := false;
  Label1.Caption := Form1.ListView1.Items[s_selected].caption;
  Label1.Left:=screen.width-Label1.width;
  
 // DisableMouseHook; //停止操作广播
// form1.keySpy1.Enabled := false;
 // form1.wsockethook.close;
end;

procedure TPingMuf.Timer3Timer(Sender: TObject);
begin
  N1.Enabled := TRUE;
  N5.Enabled := TRUE;
  n3.Enabled := true;
  timer3.Enabled := false;
end;

procedure TPingMuf.N7Click(Sender: TObject);
 {var
  p_source:array[0..50] of char;
  p_tager:array[0..50] of char;
  s_source,s_tager:string;
  s_ok:longbool;}
begin
  if SavePictureDialog1.Execute then
  begin
    image1.Picture.SaveToFile(SavePictureDialog1.FileName);
   {s_source:=ExtractFilePath(Application.EXEName)+'screen.bmp';
   strpcopy(p_source,s_source);
   s_tager:=SavePictureDialog1.FileName;
   strpcopy(p_tager,s_tager);
   s_ok:=copyfile(p_source,p_tager,false);
    if s_ok<>false then}
   // showmessage('图片保存完成!');
   Application.MessageBox('图片保存完成!','提示信息', MB_OK + MB_ICONINFORMATION);
  end;
end;

procedure TPingMuf.N8Click(Sender: TObject);
begin
  if (s_selected + 1) = student_count then s_selected := -1;

  s_selected := s_selected + 1;
  Label1.Caption := Form1.ListView1.Items[s_selected].caption;
  Label1.Left:=screen.width-Label1.width;
  Image1.Canvas.Brush.Color := clBLack;
  Image1.Canvas.FillRect(rect(0, 0, image1.width, image1.height));
  if Form1.ListView1.Items[s_selected].imageindex <> 0 then
  begin
    N5Click(sender);
    n1.enabled := true;
    s1.enabled := true;
  end
  else
  begin
    Label1.Caption := Label1.Caption + '尚未登陆!';
    Label1.Left:=screen.width-Label1.width;
    n1.enabled := false;
    s1.enabled := false;
  end;
end;

procedure TPingMuf.P1Click(Sender: TObject);
begin
  if s_selected = 0 then s_selected := student_count;
  s_selected := s_selected - 1;
  Label1.Caption := Form1.ListView1.Items[s_selected].caption;
  Label1.Left:=screen.width-Label1.width;
  Image1.Canvas.Brush.Color := clBLack;
  Image1.Canvas.FillRect(rect(0, 0, image1.width, image1.height));
  if Form1.ListView1.Items[s_selected].imageindex <> 0 then
  begin
    N5Click(sender);
    n1.enabled := true;
    s1.enabled := true;
  end
  else
  begin
    Label1.Caption := Label1.Caption + '尚未登陆!';
    Label1.Left:=screen.width-Label1.width;
    n1.enabled := false;
    s1.enabled := false;
  end;
end;

procedure TPingMuf.N10Click(Sender: TObject);
begin
  N16.Enabled := false;
  N11.Enabled := false;
  N12.Enabled := false;
  N13.Enabled := false;
  N14.Enabled := false;
  N17.Enabled := false;
  N18.Enabled := false;

  N5.Enabled := false;
  N8.Enabled := false;
  N10.Enabled := false;
  p1.Enabled := false;
  n7.Enabled := false;
  N1.Enabled := false;
  s1.Enabled := false;
  Timer4.Interval := s_repeattime * 1000;
  Timer4.Enabled := true;
end;

procedure TPingMuf.D1Click(Sender: TObject);
begin
  N16.Enabled := true;
  N11.Enabled := true;
  N12.Enabled := true;
  N13.Enabled := true;
  N14.Enabled := true;
  N17.Enabled := true;
  N18.Enabled := true;

  Timer4.Enabled := false;
  N5.Enabled := true;
  N8.Enabled := true;
  N10.Enabled := true;
  p1.Enabled := true;
  n7.Enabled := true;
  N1.Enabled := true;
  s1.Enabled := true;
end;

procedure TPingMuf.Timer4Timer(Sender: TObject);
begin
  N8Click(sender);
end;

procedure TPingMuf.FormShow(Sender: TObject);
begin
 pingmu_ok:=false;
  Timer1.Enabled := true;
end;

procedure TPingMuf.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 wsh_move:=true;
end;

procedure TPingMuf.Label1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 wsh_move:=false;
end;

procedure TPingMuf.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;

end.

⌨️ 快捷键说明

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