PDA

Ver la Versión Completa : Problema con mandar mensajes...


Lester
14-11-2003, 14:54:18
Hola a todos los amigos:

Tengo realizada una aplicación que envía mensajes por la red, simulando el comando "net send", pero el problema es que me envía más de un mensaje, o sea, al usuario al cual le envío el mensaje le llegan como 3 mensajes iguales y yo solamente le envío uno..., el código que utilicé lo inserto a continuación para una mayor comprensión, espero me puedan ayudar con este problemita...

Muchas gracias por adelantado...


procedure TForm1.Button1Click(Sender: TObject);
var
ComandoMensaje : String;
procedure MandaWinpopup( ServidorRemoto,
Destinatario,
Remitente,
Mensaje : String);
var
sTemp : string;
Mango : THandle;
Cuantos : DWord;
begin
sTemp := '\\'+ServidorRemoto+'\mailslot\messngr';

Mango := CreateFile( PChar(sTemp),
GENERIC_WRITE,
FILE_SHARE_READ,
NIL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

if Mango = INVALID_HANDLE_VALUE then
raise Exception.create( 'Error abriendo el slot'+#13+
'Error opening the slot');

sTemp:=Remitente+#0+Destinatario+#0+Mensaje;
try
Cuantos := 0;
if (NOT WriteFile(Mango,
Pchar(sTemp)^,
Length(sTemp),
Cuantos,
NIL)) or
(Cuantos <> Length(sTemp)) then
raise Exception.create( 'No puedo mandar el mensaje'+#13+
'Cannot send the message');
finally
CloseHandle(Mango);
end;
end;

begin
ComandoMensaje := '';
ComandoMensaje := Edit1.Text;
MandaWinpopup(ComboBox1.Text, {A quien va dirigido el mensaje}
ComboBox1.Text, {Nombre a quién va dirigido}
GetComputerName, {Nombre del que envía el mensaje}
ComandoMensaje); {Mensaje}
MessageDlg('El mensaje se ha enviado satisfactoriamente al usuario [' + ComboBox1.Text + ']', mtInformation, [mbOK], 0);
ComboBox1.ItemIndex := 0;
Edit1.Clear;
ComboBox1.SetFocus;
end;

Lester
20-11-2003, 17:31:30
Bueno amigos ya he resuelto el problema, a continuación muestro el código para si a alguien le hace falta algún día, el procedimiento es llamando al "net send" del MS-DOS y pasándole como parámetros el nombre o IP de la máquina a mandar el mensaje y luego el texto del mensaje...


procedure TForm1.Button1Click(Sender: TObject);
begin
Try
WinExec(Pchar('net send ' + ComboBox1.Text + ' ' + Edit1.Text),0);
MessageDlg('El mensaje ha sido enviado satisfactoriamente al usuario: [' + ComboBox1.Text + ']',mtInformation, [mbOK], 0);
Except
MessageDlg('El mensaje no se ha podido enviar...', mtError, [mbOK], 0);
End;
end;