RE:Error handling para ESocketError
Esa ventana de error no es de Windows, sino que la muestra el manejador de excepciones predeterminado de Delphi. Lo que tienes que hacer es capturar la excepción con un bloque TRY para evitar que llegue al manejador predeterminado.
try
// Operaciones con el socket
except
// Se ha producido un error. Si quieres no haces nada.
end;
try
// Cierras el socket
except
// Ignoras error de cierre, o muestras un mensaje a tu gusto.
end;
Espero que te sirva.