Ver Mensaje Individual
  #3  
Antiguo 18-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Cita:
Empezado por egostar
Esto me huele a capturar lo que se escribe en el messenger
Los mensajes comienzan todos por "MSG", y ya no digo mas ...

Y ya que estamos, si cambiamos las siguientes funciones, tendremos una visión un poco mas clara de lo que esta pasando, eliminando los caracteres no imprimibles o extraños:
Código Delphi [-]
function BufToString(Buf: PChar; Len: Integer): String;
var
  i: Integer;
begin
  Result:= EmptyStr;
  for i:= 1 to Len do
  begin
    if (Buf^ in [#32..#126]) then
      Result:= Result + Buf^
    else
      Result:= Result + '.';
    inc(Buf);
  end;
end;

function newSend(s: TSocket; Buf: PChar; len, flags: Integer): Integer; stdcall;
begin
  OutputDebugString(PChar('Send: ' + BufToString(Buf,len)));
  if @OldSend <> nil then
    Result:= OldSend(s,Buf,len,flags)
  else
    Result:= -1;
end;

function newWSASend(s: TSocket; lpBuffers: PWSABUF; dwBufferCount: DWORD;
  lpNumberOfBytesSent: Pointer; dwFlags: DWORD; lpOverlapped: Pointer;
  lpCompletionRoutine: Pointer): Integer; stdcall;
var
  i: DWORD;
  P: PWSABUF;
begin
  i:= dwBufferCount;
  P:= lpBuffers;
  while i > 0 do
  begin
    OutputDebugString(PChar('Recv: ' + BufToString(P.Buf,P.len)));
    dec(i);
    inc(P);
  end;
  if @OldWSASend <> nil then
    Result:= OldWSASend(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,
      lpOverlapped,lpCompletionRoutine)
  else
    Result:= -1;
end;

function newWSARecv(s: TSocket; lpBuffers: PWSABUF; dwBufferCount: DWORD;
  lpNumberOfBytesSent: Pointer; dwFlags: DWORD; lpOverlapped: Pointer;
  lpCompletionRoutine: Pointer): Integer; stdcall;
var
  i: DWORD;
  P: PWSABUF;
begin
  if @OldWSARecv <> nil then
    Result:= OldWSARecv(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,
      lpOverlapped,lpCompletionRoutine)
  else
    Result:= -1;
  i:= dwBufferCount;
  P:= lpBuffers;
  while i > 0 do
  begin
    OutputDebugString(PChar('Recv: ' + BufToString(P.Buf,P.len)));
    dec(i);
    inc(P);
  end;
end;
Responder Con Cita