buenas amigos de club delphi, aqui de nuevo molestandolos, saben, tengo 2 aplicaciones, una cliente y otra servidor, y con ellas manejo sockets, lo que estoy haciendo es que por medio de una aplicacion me conecto por medio de sockets a la otra y le doy la orden de que se bloquee el administrador de tareas, el escritorio y la barra de tareas, abriendo las 2 aplicaciones en mi compu y ejecutandolas al mismo tiempo si me obedecen y se conectan correctamente, el problema es cuando las tengo en diferente computadora, no se si sea que tengo equivocados los valores del clientsocket y del serversocket.
Los valores del client socket son:
active: true
address:127.0.0.1 (aqui la verdad no se cual ip poner)
client type: ctNonBlocking
port: 4141 (lo tengo exactamente igual en el server socket)
y los valores en el serversocket son:
active: true
port:4141
server type: stNonBlocking
no se si tenga algun error aqui.
ahora les pongo el codigo de las aplicaciones:
en la aplicacion principal que es donde tengo el clientsocket y mando bloquear a la otra aplicacion tengo el siguiente codigo, que lo tengo funcionando con radiobuttons:
Código Delphi
[-]
procedure TMenuPrincipal.RadioButton1Click(Sender: TObject);
begin
clientsocket1.socket.SendText('1');
end;
procedure TMenuPrincipal.RadioButton2Click(Sender: TObject);
begin
clientsocket1.socket.SendText('2');
end;
procedure TMenuPrincipal.RadioButton3Click(Sender: TObject);
begin
clientsocket1.socket.SendText('3');
end;
procedure TMenuPrincipal.RadioButton4Click(Sender: TObject);
begin
clientsocket1.socket.SendText('4');
lo que hago aqui es mandarle al serversocket un numero y cuando lo reciba va a ejecutar un case, que es el siguiente.
Este es el codigo del server socket en la propiedad onclientread:
Código Delphi
[-]
procedure TMenuPrincipal.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
reg: TRegistry;
begin
case (strtoint(Socket.ReceiveText)) of
1: begin
label1.caption:='El administrador de tareas está desactivado';
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
reg.WriteString('DisableTaskMgr', '1');
reg.CloseKey;
reg.Free;
end;
2: begin
label1.caption:='El administrador de tareas está activado';
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
reg.DeleteValue('DisableTaskMgr');
reg.CloseKey;
reg.Free;
end;
3: begin
timer1.Enabled:=true;
label2.caption:='El barra de tareas y el escritorio están ' +
'activados';
end;
4:
begin
label2.caption:='El barra de tareas y el escritorio están ' +
'desactivados';
Timer1.Enabled:= false;
ShellExecute(MenuPrincipal.Handle,nil,('explorer.exe'),'','',SW_HIDE);
registro(Hkey_Current_User, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\',
'DisableTaskMgr',ParamStr(1));
end;
end;
end;
las opciones 3 y 4 en el case utilizan un timer, el codigo es el siguiente:
Código Delphi
[-]procedure TMenuPrincipal.Timer1Timer(Sender: TObject);
begin
ShellExecute(Handle, nil, 'tskill', 'explorer', nil, sw_hide);
registro(Hkey_Current_User, 'SOFTWARE\Microsoft\Windows \CurrentVersion ' +
'Policies\System\', 'DisableTaskMgr',IntToStr(1));
end;
como ya les comente mi verdadero problema esta en la conexion de los sockets, si me pudieran ayudar lo antes posible se los agradeceria mucho
un saludo