Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2010
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Hay alguna forma de controlar el volumen de una PC en la red

Hola a todos
Pues eso, hay alguna forma de poder controlar el volumen de otra PC por la red?
Es que tengo un compañero de oficina que a veces se le olvida que no esta solo y sube demasiado el volumen, cuando se lo digo lo baja, pero despues lo vuelve a subir, y es un poco molesto

Si tuviera la forma de bajarle el volumen por la red, fuera mejor
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 06-09-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
si, te conectas al messenger, lo agregas a tu lista y luego intentas mandarle el mensaje:

"mira jijo de la mañana, si no le bajas al volumen, te voy a dar unos buenos en la cabezota para que no se te olvide..."

y listo, ya lo controlas por la red.

Saludos.
__________________

Responder Con Cita
  #3  
Antiguo 06-09-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Talking jajajaj

esta bueno tu chiste contra-veneno, aunque a mi gusto iria a su lugar le quito las bocinas y se las aviento por la ventana asi elimino el estres que me provoco el mismo jajaja y si de plano la bocina es interna le descoencto toa la pc no sin antes decirme el comentario de contra-veneno jajajaj
Responder Con Cita
  #4  
Antiguo 06-09-2010
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
mejor cuando se vaya subele mas, para que cuando pase un jefe o algo se de cuenta, aparte de que mas se le van a echar encima
Responder Con Cita
  #5  
Antiguo 07-09-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Ya en serio Joanca, no hay forma de hacerlo (al menos no fácilmente) así como lo planteas. De todas formas si puedieras hacerlo sería un eterno estira y afloja, tu le subes...yo le bajo...tu le subes...yo le bajo. Solo con acceso al equipo físicamente puedes desactivar el audio via BIOS y así sí.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #6  
Antiguo 07-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
O le colocas un troyano (NOTA1) para poder hacerlo o le cortas el cable del altavoz.

NOTA1: En este caso el troyano en un simple programita hecho en Delphi, con un Server Socket que admita peticiones desde el tuyo para controlar el volumen.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 08-09-2010
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool

Cita:
Empezado por Neftali Ver Mensaje
O le colocas un troyano (NOTA1) para poder hacerlo o le cortas el cable del altavoz.

NOTA1: En este caso el troyano en un simple programita hecho en Delphi, con un Server Socket que admita peticiones desde el tuyo para controlar el volumen.

Un saludo.
Pues de hecho, si existe la forma, no solo de bajarle el volumen, tambien para enmudecerlo

Aporte de Seoane:
Código Delphi [-]
program udpvol;
 
uses
  Windows,
  SysUtils,
  Winsock;
 
const
  START_PORT = 5000;
  END_PORT = 5005;
  BUFFER_SIZE = 64*1024;  // 64 Kb
 
var
  WSAData: TWSAData;
 
const
  VK_VOLUME_MUTE = $AD;
  VK_VOLUME_DOWN = $AE;
  VK_VOLUME_UP = $AF;
 
procedure Pulsar(Key: Byte);
begin
 keybd_event(Key, 0, 0, 0);
 keybd_event(Key, 0, KEYEVENTF_KEYUP, 0); 
end;
 
procedure SubirVolumen;
begin
  Pulsar(VK_VOLUME_UP);
end;
 
procedure BajarVolumen;
begin
  Pulsar(VK_VOLUME_DOWN);
end;
 
procedure Mute;
begin
  Pulsar(VK_VOLUME_MUTE);
end;
 
procedure Loop;
var
  i,j: Integer;
  b: Boolean;
  Addr: TSockaddr;
  AddrSize: Integer;
  FDSet: TFDSet;
  TimeVal: TTimeVal;
  Buffer: PAnsiChar;
  Sockets: array[START_PORT..END_PORT] OF TSocket;
begin
  // Si el puerto de inicio es mayor que el final terminamos
  if START_PORT > END_PORT then
    Exit;
  b:= FALSE;
  // Creamos un socket por cada puerto
  for i:= START_PORT to END_PORT do
  begin
    Sockets[i]:= Winsock.Socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
    if Sockets[i] <> INVALID_SOCKET then
    begin
      with Addr do
      begin
        sin_family:= AF_INET;
        sin_port:= htons(i);
        sin_addr.s_addr:= Inet_Addr(PChar('0.0.0.0'));
      end;
      // Ponemos cada socket a escuhar en el puerto correspondiente
      if Bind(Sockets[i], Addr, SizeOf(Addr)) = SOCKET_ERROR then
      begin
        // Si no podemos cerramos el socket
        CloseSocket(Sockets[i]);
        Sockets[i]:= INVALID_SOCKET;
      end else
        b:= TRUE;
    end;
  end;
  // Si no pudimos poner a la escucha ningun socket terminamos
  if not b then
    Exit;
  // Reservamos espacio para almacenar los mensajes
  GetMem(Buffer,BUFFER_SIZE);
  try
    // Mientras no pulsamos "Ctrl+C"
    while TRUE do
    begin
      // Para cada socket
      for i:= START_PORT to END_PORT do
        if Sockets[i] <> INVALID_SOCKET then
        begin
          TimeVal.tv_sec:= 0;
          TimeVal.tv_usec:= 500;
          FD_ZERO(FDSet);
          FD_SET(Sockets[i], FDSet);
          // Comprobamos si ha recibido algun mensaje
          if Select(0, @FDSet, nil, nil, @TimeVal) > 0 then
          begin
            AddrSize:= Sizeof(Addr);
            FillChar(Buffer^,BUFFER_SIZE,#0);
            // Copyamos el mensaje en el buffer
            j:= Recvfrom(Sockets[i],Buffer^,BUFFER_SIZE,0,sockaddr_in(Addr),AddrSize);
            if j <> SOCKET_ERROR then
            begin
              if StrLIComp(Buffer,'SUBIR',Length('SUBIR')) = 0 then
                SubirVolumen;
              if StrLIComp(Buffer,'BAJAR',Length('BAJAR')) = 0 then
                BajarVolumen;
              if StrLIComp(Buffer,'MUTE',Length('MUTE')) = 0 then
                Mute;
            end;
          end;
        end;
      Sleep(10);
    end;
  finally
    FreeMem(Buffer);
  end;
  // Cerramos cada uno de los socket
  for i:= START_PORT to END_PORT do
  begin
    if Sockets[i] <> INVALID_SOCKET then
    begin
     CloseSocket(Sockets[i]);
    end;
  end;
end;
 
 
 
begin
  FillChar(WSAData,SizeOf(WSAData),0);
  if WSAStartup(MAKEWORD(1, 1), WSADATA) = 0 then
  try
    Loop;
  finally
    WSACleanup();
  end;
end.

Aporte de escafandra

Se trata de un servidor que cambia el volumen al enviado por un cliente.

El servidor:
Código Delphi [-]
program ServerSound;
 
uses
  WinSock,
  MMSystem,
  Windows;
 
function StrToInt(lpSrc: LPCTSTR): integer; stdcall; external 'Shlwapi.dll' name 'StrToIntA';
 
 
var
  WSA:    TWSADATA;
  Sock_c: TSOCKET;
  Sock_e: TSOCKET;
  Local:  sockaddr_in;
  Buffer: array[0..1024] of CHAR;
  Len:    integer;
begin
  if(WSAStartup(MakeWord(2,2), WSA) <> 0) then exit;
  Sock_e:= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if(Sock_e <> INVALID_SOCKET) then
  begin
 
    local.sin_family:= AF_INET;
    local.sin_addr.s_addr:= INADDR_ANY;
    local.sin_port:= htons(9999);
 
    // Asociamos el socket al puerto
    if(bind(Sock_e, Local, sizeof(Local)) <> -1) then
    begin
      // escucha...
      while true do
      begin
        // Socket a la escucha
        if (listen(sock_e, 1) = -1) then exit;
        Len:= sizeof(Tsockaddr);
 
        // Aceptamos conexión
        Sock_c:= accept(Sock_e, PSOCKADDR(@Local), @Len);
 
        Len:= recv(Sock_c, Buffer, 1023, 0); //recibimos los datos que envie
        if (Len > 0) then //si seguimos conectados
        begin
          Buffer[Len]:= #0; //le ponemos el final de cadena
          if Buffer[6]<>' ' then continue;
          Buffer[6]:= #0; //le ponemos el final de cadena comando
          if lstrcmpi(Buffer, 'Volume') = 0 then
            try
              //MessageBox(0, 'Hola', '', 0);
              waveOutSetVolume(0, StrToInt(@Buffer[7]));
            finally
            end;
        end;
        closesocket(Sock_c);
      end;
    end;
  end;
  WSACleanUp;
end.

El núcleo del cliente:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  WSA:    TWSADATA;
  Sock:   TSOCKET;
  Host:   PHostent;
  Remote: sockaddr_in;
  IP:     ^Integer;
  Conex:  integer;
  Msg:    array[0..1024] of CHAR;
begin
  if(WSAStartup(MakeWord(2,2), WSA) = 0) then
  begin
    Host:= gethostbyname(PCHAR(Edit_IP.Text));
    if Host <> nil then
    begin
      Sock:= socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
      if(Sock <> INVALID_SOCKET) then
      begin
        IP:= @Host.h_addr_list^[0];
        Remote.sin_family:= AF_INET;
        Remote.sin_addr.s_addr:= INADDR_ANY;
        Remote.sin_port:= htons(9999);
        Remote.sin_addr.S_addr:= IP^;
        ZeroMemory(@Remote.sin_zero, 8);
 
        //Intentamos establecer la conexión
        Conex:= connect(Sock, Remote, sizeof(Remote));
        //No se puene conectar porque no se ha encontrado el host o puerto abierto
        lstrcpy(@Msg[0], PCHAR('Volume ' + Edit1.Text));
        if (conex <> -1) then
          send(Sock, Msg, lstrlen(Msg), 0) //Enviar comando
        else
          ShowMessage('No se ha podido conectar con ServerSound...');
 
        ShutDown(Sock, SD_BOTH);
        CloseSocket(Sock);
      end;
    end;
  end;
  WSACleanUp;
end;
Como ven en informática Todo se puede, el límite es la imaginación


Claro que hay que saber encontrar como hacerlo.


Edito: A petición de JoAnCa, aquí está el enlace de donde ha extraído la información, se trata de la web de nuestros amigos de delphiaccess, un saludo para ellos.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por Casimiro Notevi fecha: 08-09-2010 a las 21:07:19.
Responder Con Cita
  #8  
Antiguo 08-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por JoAnCa Ver Mensaje
Pues de hecho, si existe la forma, no solo de bajarle el volumen, tambien para enmudecerlo
En ningun momento he dudado de ello, y si buscas por internet encontrarás códigos similares a los que has colocado (link, link, link o estos dos en torry, 1 y 2); Personalmente te había entendido mal (o no del todo) y pensé que te referías a hacerlo desde tu ordenador -sin acceder al suyo-. De ahí que no te adjunté ningun link.

La única forma que se me ocurrió de hacerlo sin acceder, es utilizando WMI, para lo que no tendrías que acceder físicamente, pero sí conocer usuario y password. Pensé que utilizando WMI y la clase Win32_SoundDevice podrías conseguirlo. Desgraciadamente con esta clase sólo podrás consultar los valores actuales, pero no modificarlos, puesto que no posee ningun método que permita el cambio.

Gracias por los códigos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 08-09-2010
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
En ningun momento he dudado de ello, y si buscas por internet encontrarás códigos similares a los que has colocado (link, link, link o estos dos en torry, 1 y 2); Personalmente te había entendido mal (o no del todo) y pensé que te referías a hacerlo desde tu ordenador -sin acceder al suyo-. De ahí que no te adjunté ningun link.

La única forma que se me ocurrió de hacerlo sin acceder, es utilizando WMI, para lo que no tendrías que acceder físicamente, pero sí conocer usuario y password. Pensé que utilizando WMI y la clase Win32_SoundDevice podrías conseguirlo. Desgraciadamente con esta clase sólo podrás consultar los valores actuales, pero no modificarlos, puesto que no posee ningun método que permita el cambio.

Gracias por los códigos.
Neftalí yo sé que tu sabes para eso y para más, puse la cita de tu comentario para encabezar la forma en que se puede hacer, como bien dijiste:

Cita:
NOTA1: En este caso el troyano en un simple programita hecho en Delphi, con un Server Socket que admita peticiones desde el tuyo para controlar el volumen.
el post fue para aclararle a los anteriores que si se puede hacer
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #10  
Antiguo 08-09-2010
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Para que puedan seguir mejoras en los codigos mostrados anteriormente lo pueden ver en

http://www.delphiaccess.com/forum/in...p?topic=3818.0
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Controlar volumen Ezecool Varios 1 16-08-2011 01:48:36
Alguna otra forma de pago? Waldo La Taberna 21 23-08-2007 08:53:36
Hay alguna forma de cerrar el Database en diseño David Conexión con bases de datos 16 31-05-2007 22:19:30
Controlar nivel de volumen... Phacko Varios 2 01-10-2006 21:19:24
Hay alguna forma? jam888 Firebird e Interbase 2 06-10-2004 21:34:45


La franja horaria es GMT +2. Ahora son las 08:48:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi