FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Detectar ip impresra de red
Primero que nada muy buenas tardes para todos, saludos desde Costa Rica.
Tengo una aplicación que está en funcionamiento desde hace ya algunos años, se trata de un programa que esta constantemente ejecutandose a espera de ordenes de producción, cuando estas llegan, las envia a una o mas impresoras según el tipo de producto, resulta que estas impresoras son impresoras de red con una IP definida. para poder saber si la impresora está en linea se realiza un ping a la misma, si responde se envía la impresión y sino sigue chequeando cada cierto tiempo hasta que la impresora se encuentre el linea. Para poder realizar esa verificación utilizo este utilitario:
Este me funciono perfecto mientras lo ejecute bajo un ambiente WINDOWS SERVER 2003, ahora lo trato de ejecutar en WINDOWS 10 si siempre me devuelve como si la impresora estuviese apagada. en esta instruccionDW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0)siempre devuelve 0 sin importar si la impresora esta apagado o no. La verdad entiendo casi nada del código, Yo solo se que enviaba la direccion IP y me decia si estaba en línea o no No se que buscar, para tratar de corregir esta situación, si alguien me pudiese orientar les agradeceria mucho y si alguien tuviese una rutina mas moderna para este proceso sería perfecto. También escucho sugerencias alternativas de como resolver mi situación. Trabajo con Delphi 2007 bajo ambiente windows server 2012 r2 y estaciones de trabajo windows 10 Nuevamente muy agradecido con la ayuda que me puedan brindar. |
#2
|
||||
|
||||
Desactiva el firewall de forma temporal para descartar que sea problemas de permisos.
Por aquí hablan de que las llamadas a ICMP.DLL puedes necesitar permisos extra, a diferencia del PING.
__________________
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. |
#3
|
|||
|
|||
Tambien puedes validar la compatibilidad de aplicación con el solucionador de problemas, define esta como compatibilidad con windows 7 o windows XP (aunque parezca de chiste llega a funcionar).
Windows 8.1 y 10 vinieron a complicar algunos temas que ya estaba trabajados en los windows previos. Saludos y suerte. |
#4
|
|||
|
|||
Cita:
Muchas gracias por responder. desactive el firewall y no hay cambio alguno Sigo en busca de una solución, gracias de todos modos. |
#5
|
|||
|
|||
Lo normal en estos casos suele ser que entre la versión del so en la que el código funcionaba correctamente y la versión en la que ya no funciona haya habido algún cambio en la Api. En estos casos lo mejor es ir a msd y comprobarlo.
https://msdn.microsoft.com/es-es/lib...=vs.85%29.aspx Por lo que veo el problema está en el último parámetro que pasas en
Estás pasando como timeout un 0 y al parecer en las últimas versiones de IcmpSendEcho es necesario pasar como timeout un valor mayor que 0 |
#6
|
||||
|
||||
Te muestro una Unit simple para hacer ping por código. Te permite direcciones en formato IP o Web:
Saludos. |
#7
|
|||
|
|||
Cita:
La solución al problema presentado fue cambiar el valor de timeout de 0 a 5, porque 5? no se;pero fue el que funcionó. Muchas gracias amigos de Club Dephi. Saludos desde Costa Rica. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Detectar USB | mefixxto | API de Windows | 6 | 31-12-2010 20:14:27 |
Detectar GPU | madiazg | Varios | 5 | 28-08-2010 16:58:12 |
Cómo detectar SO x64 o x86 | BrunoBsso | Varios | 3 | 12-02-2010 01:57:20 |
Detectar IP | Carliviris | Varios | 3 | 17-04-2006 19:18:26 |
Detectar procesador | Mic82 | Varios | 1 | 12-11-2004 09:45:35 |
|