📄 server.pas
字号:
end;
end;
procedure TForm1.glj(i:integer);
//-----------自定义子程序:锁定功能键 参数:1锁定 2 解锁
var
glj1: integer;
begin
if i=1 then
systemparametersinfo(spi_screensaverrunning,1,@glj1,0)
else
systemparametersinfo(spi_screensaverrunning,0,@glj1,0)
end; //-------自定义子程序:锁定功能键 参数:1锁定 2 解锁
procedure TForm1.lckmse();
var
rtfield: TRect;
begin
rtfield:= Rect(0, 0, 1, 1);
// 限制鼠标移动区域
ClipCursor(@rtfield);
end;
procedure TForm1.unmse();
var
rtScreen: TRect;
begin
//解除限制
rtScreen := Rect(0, 0, Screen.Width, Screen.Height);
ClipCursor(@rtScreen);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ReqCode:array[0..29] of char;
bgip:array[0..15] of char;
szj0,szj1,ReqCodeStr,bgip1:string;
szj2,bgip2,bgip3:integer;
begin
mima4; //密码为当前日期中的月+日
//在本机的IP地址范围内搜主机 分解IP前3段
bgip3:=0;
bgip1:=NMDayTime1.LocalIP;
StrpCopy(bgip,bgip1);
bgip2:=0;
while bgip3<3 do
begin
bgip1:=bgip[bgip2];
if bgip1='.' then bgip3:=bgip3+1;
bgip2:=bgip2+1;
end;
bgip1:=NMDayTime1.LocalIP;
delete(bgip1,bgip2+1,12);
// 分解IP前3段完 即***.***.***.
//szj0:='192.168.0.';
szj0:=bgip1;
szj1:='0';
szj2:=0;
RsltStream:=TMemoryStream.Create;
TmpStream:=TMemoryStream.Create;
BmpStream:=TMemoryStream.Create;
application.Title:=' ';
//应用程序没有名称,按Ctrl+Alt+Del时看不到程序
//application.showmainform:=false;
//程序运行时不显示
//BmpStream:=TMemoryStream.Create;
//运行时进行登录服务器,发送 计算机名和IP
while szj2<256 do //搜索主机
begin
//发计算机名
ReqCodeStr:='mz'+ComputerName;
StrpCopy(ReqCode,ReqCodeStr);
TmpStream.Clear;
RsltStream.Clear;
SUDP.RemoteHost:=szj0+szj1;
SUDP.SendBuffer(ReqCode,30);
//发IP 地址
ReqCodeStr:='ip'+NMDayTime1.LocalIP;
StrpCopy(ReqCode,ReqCodeStr);
TmpStream.Clear;
RsltStream.Clear;
SUDP.RemoteHost:=szj0+szj1;
SUDP.SendBuffer(ReqCode,30);
szj2:=szj2+1;
szj1:=inttostr(szj2);
end; //搜索主机完
//以下是建立任务栏图标
myicon.cbSize:=sizeof(TNotifyicondata);
myicon.Wnd:=handle;
myicon.uID:=1;
myicon.uFlags:=nif_message or nif_tip or nif_icon;
myicon.uCallbackMessage:=wm_icb;
myicon.hIcon:=application.Icon.Handle;
myicon.szTip:='超前电脑计费 V1.0';
shell_notifyicon(nim_add,@myicon);
//以上是建立任务栏图标
{--运行开始时有主机发来全脱机
时不开控制直接隐藏任务 }
lbox1.Items.Clear;
if fileexists('d:\yfjf.com') then lbox1.Items.LoadFromFile('d:\yfjf.com') else lbox1.Items[0]:='qwerqwe';
if lbox1.Items[0]='szxzxq_yfjf'+ComputerName then
ycck
else
glj(1); // 锁定功能键
end; //建立窗口函数完
//退出程序
procedure Tform1.winexit(var msg: Tmessage);
begin
msg.Result:=1;
application.ProcessMessages;
application.Terminate;
end;
procedure TForm1.SUDPDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
CtrlCode:array[0..250] of char;
Trun,trun1:string;
begin //---------读取控制码 处理控制
SUDP.ReadBuffer(CtrlCode,NumberBytes);
// 读取控制码
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]+CtrlCode[5]='ccompu' then
//到时间通知
begin
Trun:=CtrlCode;
delete(trun,1,6);
delete(trun,5,3);
delete(trun,1,2);
server3.M1.Clear;
server3.M1.Lines.Add('你的时间只有 '+trun+' 分钟了,请续费或做好下机准备!');
server3.Show;
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='hdesk' then
//锁定电脑
begin
form1.Show;
//使窗口始终保持在最前 来自编程实例与技巧
setwindowpos(form1.Handle,hwnd_topmost,form1.Left,form1.Top,form1.Width,form1.Height,0);
glj(1);
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='sdesk' then
//解锁电脑
begin
ycck;
glj(2);
end;
if CtrlCode[0]+CtrlCode[1]='xx' then
//接收到发来的信息
begin
Trun1:=CtrlCode;
delete(trun1,1,2);
Application.MessageBox(PCHAR(trun1),pchar(ComputerName),MB_OK);
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='chjd' then
//接收到发来的此号已登录
edit1.Text:='此号已登录了';
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='rest' then
//重新启动计算机
xq_close(1);
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='close' then
//关闭计算机
xq_close(0);
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='zjip' then
//主机发来IP
begin
zjip:=CtrlCode;
delete(zjip,1,4);
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='sfnw' then
//主机请求联系
begin
zjip:=CtrlCode;
delete(zjip,1,5);
fxx('sfnj'+CtrlCode[4]+NMDayTime1.LocalIP,zjip); //返回联机信息
end;
//主机发来全脱
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='wqtj' then
begin
Trun:=CtrlCode;
delete(trun,1,5);
trun:=trun+ComputerName;
lbox1.Items[0]:=Trun;
lbox1.Items.SaveToFile('d:\yfjf.com');
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='proc' then
//发来查进程
begin
MY_PROC;
end;
end; //---------读取控制码完
procedure TForm1.FormDestroy(Sender: TObject);
//删除图标
begin
BmpStream.Free;
RsltStream.Free;
TmpStream.Free;
shell_notifyicon(nim_delete,@myicon);
end;
procedure TForm1.wmicb(var msg:TMessage);
//图标与菜单联系
var tcwz:TPoint;
begin
case msg.LParam of
wm_lbuttonup: //左键
begin
getcursorpos(tcwz);
tccd.Popup(tcwz.x,tcwz.y);
end;
wm_rbuttonup: //右键
begin
getcursorpos(tcwz);
tccd.Popup(tcwz.x,tcwz.y);
end;
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if mima=ma then close;
end;
procedure TForm1.N1Click(Sender: TObject);
//查已用时间
begin
fxx('wyys'+NMDayTime1.LocalIP,zjip);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
fxx('hyxj'+NMDayTime1.LocalIP,zjip);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
hydn1:string;
begin
hydn1:=' ';
form1.FXX('yhdl'+form1.NMDayTime1.LocalIP+hydn1+edit1.Text+edit2.Text,zjip);
if edit1.Text<>'此号已登录了' then edit1.Text:='';
edit2.Text:=''
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if mima=edit2.Text then ycck;
edit2.Text:='';
//cazuji();
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if ver98() then
if application.messagebox('真要关机吗???','注意',
mb_yesno+mb_defbutton2+mb_iconquestion+mb_systemmodal)<>6 then exit;
xq_close(0);
// ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
timer1.Enabled:=true; //打开时钟
gjsj:=1800; //恢复时钟时间
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
xd:trect;
begin //限定鼠标
xd:=p1.BoundsRect;
mapwindowpoints(handle,0,xd,2);
clipcursor(@xd);
end;
procedure TForm1.FormHide(Sender: TObject);
begin
form1.glj(2);
clipcursor(0); //解限定鼠标
timer1.Enabled:=false;
gjsj:=1800;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
// 开功能键
begin
glj(2);
end;
procedure TForm1.N7Click(Sender: TObject);
//关机
begin
if application.messagebox('真要关机吗???','注意',
mb_yesno+mb_defbutton2+mb_iconquestion+mb_systemmodal)<>6 then
exit;
xq_close(0);
// ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0);
end;
procedure TForm1.N9Click(Sender: TObject);
var
xinxi:string;
begin
xinxi:=inputbox('请输入要发送的信息','信息','');
if xinxi<>'' then
fxx('xx'+ComputerName+':'+xinxi,zjip);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if gjsj<=0 then xq_close(0); //ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0);
gjsj:=gjsj-1;
//使窗口始终在最前
if not(ver98()) then setwindowpos(form1.Handle,hwnd_topmost,form1.Left,form1.Top,form1.Width,form1.Height,0);
label2.Caption:=inttostr(round(gjsj/10));
end;
procedure TForm1.FormResize(Sender: TObject);
begin
p1.left:=round((form1.Width-p1.Width)/2+20);
p1.top:=round((form1.Height-p1.Height)/2-50);
le1.left:=form1.Width-le1.Width-50;
le1.top:=form1.Height-le1.Height-50;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
if mima<>ma then reg_auto('1','servers.exe') else reg_auto('2','') ;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then Button4Click(Sender);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
//查找主机
if zjip='' then
begin
edit1.text:='还未连上主机' ;
cazuji;
end
else
begin
timer2.Enabled:=false;
edit1.Text:='';
end
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -