?? server.~pas
字號(hào):
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.FXX(xxly:string;IPdz:string); //發(fā)控制碼
//參數(shù):XXLY 消息內(nèi)容 最多250個(gè)字符 IP 客戶機(jī)的IP地址
var
ReqCode:array[0..250] of char;
ReqCodeStr:string;
begin
if IPdz<>'' then
begin
ReqCodeStr:=xxly;
StrpCopy(ReqCode,ReqCodeStr);
TmpStream.Clear;
RsltStream.Clear;
SUDP.RemoteHost:=IPdz;
SUDP.SendBuffer(ReqCode,250);
end;
end;
procedure TForm1.glj(i:integer);
//-----------自定義子程序:鎖定功能鍵 參數(shù):1鎖定 2 解鎖
var
glj1: integer;
begin
if i=1 then
systemparametersinfo(spi_screensaverrunning,1,@glj1,0)
else
systemparametersinfo(spi_screensaverrunning,0,@glj1,0)
end; //-------自定義子程序:鎖定功能鍵 參數(shù):1鎖定 2 解鎖
procedure TForm1.lckmse();
var
rtfield: TRect;
begin
rtfield:= Rect(0, 0, 1, 1);
// 限制鼠標(biāo)移動(dòng)區(qū)域
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;
regf:tregistry;
reg:TRegistry;
mypath:string;
begin
if hhkLowLevelKybd = 0 then
begin
hhkLowLevelKybd := SetWindowsHookExW(WH_KEYBOARD_LL,
LowLevelKeyboardProc, Hinstance, 0);
end;
regf:=tregistry.Create;
regf.RootKey:=HKEY_CURRENT_USER;
regf.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',true);
RegF.WriteInteger('Noclose',1);
RegF.WriteInteger('startmenulogoff',1);
RegF.WriteInteger('noviewcontextmenu',1);
RegF.WriteInteger('nodesktop',1);
RegF.WriteInteger('NoTrayContextMenu',1);
RegF.WriteInteger('Disableregistrytools',1);
regf.Free;
mypath:=extractfilepath(paramstr(0));
reg:=Tregistry.create;
reg.rootkey:=HKEY_LOCAL_MACHINE;
if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true) then
begin
reg.WriteString('servers',mypath+'servers.exe');
Reg.Free; //釋放變量
end;
mima4; //密碼為當(dāng)前日期中的月+日
//在本機(jī)的IP地址范圍內(nèi)搜主機(jī) 分解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:=' ';
//應(yīng)用程序沒(méi)有名稱,按Ctrl+Alt+Del時(shí)看不到程序
//application.showmainform:=false;
//程序運(yùn)行時(shí)不顯示
//BmpStream:=TMemoryStream.Create;
//運(yùn)行時(shí)進(jìn)行登錄服務(wù)器,發(fā)送 計(jì)算機(jī)名和IP
while szj2<256 do //搜索主機(jī)
begin
//發(fā)計(jì)算機(jī)名
ReqCodeStr:='mz'+GetMAC(0);
StrpCopy(ReqCode,ReqCodeStr);
TmpStream.Clear;
RsltStream.Clear;
SUDP.RemoteHost:=szj0+szj1;
SUDP.SendBuffer(ReqCode,30);
//發(fā)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; //搜索主機(jī)完
//以下是建立任務(wù)欄圖標(biāo)
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:='軟件公司';
shell_notifyicon(nim_add,@myicon);
//以上是建立任務(wù)欄圖標(biāo)
{--運(yùn)行開(kāi)始時(shí)有主機(jī)發(fā)來(lái)全脫機(jī)
時(shí)不開(kāi)控制直接隱藏任務(wù) }
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'+GetMAC(0) then
ycck
else
glj(1); // 鎖定功能鍵
end; //建立窗口函數(shù)完
//退出程序
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
//到時(shí)間通知
begin
//Trun:=CtrlCode;
//delete(trun,1,6);
//delete(trun,5,3);
//delete(trun,1,2);
//server3.M1.Clear;
//server3.M1.Lines.Add('你的時(shí)間只有 '+trun+' 分鐘了,請(qǐng)續(xù)費(fèi)或做好下機(jī)準(zhǔn)備!');
Trun:=CtrlCode;
delete(trun,1,6);
Application.MessageBox(PCHAR('離下機(jī)時(shí)間只有'+trun+'分鐘了'+#10#13#10#13+'請(qǐng)續(xù)費(fèi)或做好下機(jī)準(zhǔn)備!'),pchar(GetMAC(0)),MB_OK);
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='hdesk' then
//鎖定電腦
begin
form1.Show;
//使窗口始終保持在最前 來(lái)自編程實(shí)例與技巧
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
//接收到發(fā)來(lái)的信息
begin
Trun1:=CtrlCode;
delete(trun1,1,2);
Application.MessageBox(PCHAR(trun1),pchar(GetMAC(0)),MB_OK);
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='chjd' then
//接收到發(fā)來(lái)的此號(hào)已登錄
edit1.Text:='此號(hào)已登錄了';
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='rest' then
//重新啟動(dòng)計(jì)算機(jī)
xq_close(1);
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]+CtrlCode[4]='close' then
//關(guān)閉計(jì)算機(jī)
xq_close(0);
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='zjip' then
//主機(jī)發(fā)來(lái)IP
begin
zjip:=CtrlCode;
delete(zjip,1,4);
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='sfnw' then
//主機(jī)請(qǐng)求聯(lián)系
begin
zjip:=CtrlCode;
delete(zjip,1,5);
fxx('sfnj'+CtrlCode[4]+NMDayTime1.LocalIP,zjip); //返回聯(lián)機(jī)信息
end;
//主機(jī)發(fā)來(lái)全脫
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='wqtj' then
begin
Trun:=CtrlCode;
delete(trun,1,5);
trun:=trun+GetMAC(0);
lbox1.Items[0]:=Trun;
lbox1.Items.SaveToFile('d:\yfjf.com');
end;
if CtrlCode[0]+CtrlCode[1]+CtrlCode[2]+CtrlCode[3]='proc' then
//發(fā)來(lái)查進(jìn)程
begin
MY_PROC;
end;
end; //---------讀取控制碼完
procedure TForm1.FormDestroy(Sender: TObject);
//刪除圖標(biāo)
begin
BmpStream.Free;
RsltStream.Free;
TmpStream.Free;
shell_notifyicon(nim_delete,@myicon);
end;
procedure TForm1.wmicb(var msg:TMessage);
//圖標(biāo)與菜單聯(lián)系
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);
//查已用時(shí)間
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<>'此號(hào)已登錄了' 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('真要關(guān)機(jī)嗎???','注意',
mb_yesno+mb_defbutton2+mb_iconquestion+mb_systemmodal)<>6 then exit;
xq_close(0);
// ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0);
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
xd:trect;
begin //限定鼠標(biāo)
xd:=p1.BoundsRect;
mapwindowpoints(handle,0,xd,2);
clipcursor(@xd);
end;
procedure TForm1.FormHide(Sender: TObject);
begin
form1.glj(2);
clipcursor(0); //解限定鼠標(biāo)
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
// 開(kāi)功能鍵
begin
glj(2);
end;
procedure TForm1.N7Click(Sender: TObject);
//關(guān)機(jī)
begin
if application.messagebox('真要關(guān)機(jī)嗎???','注意',
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('請(qǐng)輸入要發(fā)送的信息','信息','');
if xinxi<>'' then
fxx('xx'+GetMAC(0)+':'+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
//查找主機(jī)
if zjip='' then
begin
edit1.text:='還未連上主機(jī)' ;
cazuji;
end
else
begin
timer2.Enabled:=false;
edit1.Text:='';
end
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if sizong>3 then //每半分鐘刷新一次 時(shí)鐘器是10秒一次
begin
fxx('xy',zjip);
sizong:=0;
end
else
inc(sizong);
end;
end.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -