FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Enviar Fax a traves de IFaxServer
Hola, estoy intentando enviar faxes a traves de la interface COM de windows, con un codigo como este:
El caso es que funciona, lo envia, pero me deja abierto el acrobat con el fichero que ha enviado. La idea es automatizar una serie de envios, y claro, no es plan de que se queden abiertas 100 instancias del Acrobat... Alguien puede darme una idea sobre como arreglar esto, y que el acrobat no se quede abierto? Gracias !! Última edición por mgomez2 fecha: 14-10-2008 a las 22:52:49. |
#2
|
|||
|
|||
chequea esta pagina http://www.programmersheaven.com/mb/delphikylix/342117/342117/faxing/?S=B20000 aca en vez de usar IFaxDocument usan IFaxDoc(Supongo q no "exactamente" lo mismo) y para enviar la hacen con IFaxDoc.Send. para mas info sobre IFaxDoc anda a http://msdn.microsoft.com/en-us/library/ms692281.aspx
espero q te sirva |
#3
|
|||
|
|||
donde están esas librerias para importar?
Buenos días,
Quisiera saber como puedo conseguir esas librerias para poder importarlas en delphi y asi poder enviar faxes. He estado buscando en las url que habeis indicado en este foro pero no veo el modo de bajarlas Gracias |
#4
|
|||
|
|||
en el msdn indica q esas interfaces estan en "Faxcom.dll" pero yo en mi maquina no la encuentro, entonces supongo que no viene por defecto en la instanacion de windows xp. trata de buscar sobre esa dll y lo mas seguro que para obtener las interfaces vas a tener q extraerle los TLB y despues importarlos con delphi.
saludos |
#5
|
|||
|
|||
Libreria faxcomex.dll
Tengo la libreria "Faxcom.dll" la he importado perfectamente en el delphi pero no consigo hacerlo funcionar correctamente intentando hacer un simil al código que ha puesto "mgomez2" puesto que no contiene IFaxDocument usan IFaxDoc, tal como ha explicado "Fistandantilus" he intentado buscar los métodos y/o propiedades que se pudieran asemejar pero no consigo hacerlo funcionar. ¿alguna idea o ejemplo?
Pienso que el código de "mgomez2" se puede hacer funcionar con la libreria "Faxcomex.dll" pero no consigo encontrarla, al fin y al cabo cuando pego ese código en el delphi y compilo me la solicita, ¿dónde la conseguiste mgomez2? Muchas gracias |
#6
|
|||
|
|||
No debes instalar la libreria faxcomex.dll, sino, en Delphi, "Import Type Library", dentro de "Project", y despues busca "Microsoft Fax Service Extended COM type library".
A partir de aqui, en "Activex" te apareceran unos iconos sobre el fax, que sinceramente no he usado, pero mi ejemplo anterior te deberia funcionar. Evidentemente, debes haber instalado antes el servicio de fax de windows.... Por otro lado, por MP Nuppy me ha pasado la solución a mi problema, y la expongo aqui por si a alguien mas le ocurre. La idea es instalar otro programa, distinto del Adobe, para que cuando imprimas no te saque el documento en pantalla, asi que hay que descargarse gsview (está en Google) e instalarlo junto con la ultima version de Ghostscript (de la misma pagina), y entonces modificar el registro de windows para que asocie la impresion del archivo .pdf al gsprint. Busca en el registro: HKey_CLASSES_ROOT->AcroExch.Document.7->shell->Printto->Command la clave por defecto pondrá algo del Adobe, hazte una copia de seguridad, porsiaca y pon lo siguiente: "C:\Archivos de programa\Ghostgum\gsview\gsprint.exe" "%1" -printer ""%2"" "%3" "%4" Lo que haces con eso es que cuando se quiera mandar a imprimir un archivo .pdf llame al gsprint y no al acrobat reader. De esta forma se logra que se puedan mandar varios fax automatizados (con el adobe se cuelga) y no se abra el reader. La unica contra que tiene es que aparece una ventada de cmd por un lapso muy breve (menos de 1s) y se cierra. Gracias Nuppy !!! |
#7
|
|||
|
|||
Bueno, voy a mejorar un poquito el código:
He quitado toda referencia a FaxServer, puesto que no hace falta. Si alguien va a usar esto, le recomiendo encarecidamente que se lea detenidamente el manual de microsoft sobre el servicio de fax. Ejemplo usando FaxServer: La version extendida FaxComEx, funciona a partir de W2000, y ademas, para Vista han hecho algunas mejoras y ampliaciones. Rectifico lo anteriormente dicho por mi, se puede controlar el fax, la consola, puedes programar tu propia consola, monitorizar cada fax, ver los recibidos .... en fin, control total del fax (como no podia ser de otra forma, al fin y al cabo) Lo unico que no se puede hacer con XP (necesitas Vista) es enviar un fax con DOS ficheros adjuntos..... y ahí estoy atascado..... pero eso es otra cuestion. |
#8
|
|||
|
|||
Hola de nuevo,
Veamos según las pruebas realizadas cuando he utilizado un PC con windows XP si he conseguido conectar sin problemas aunque no he logrado enviar porque no dispongo de modem en ese equipo. Usando ese mismo código y ese mismo ejecutable en win2000 no logro conectar (usando el método faxserver) siempre falla al intentar conectar (a pesar de dejarlo null o '') el error que da es el siguiente: "connection to fax server failed" Aunque si puedo informar que la impresora virtual de windows 2000 si funciona si intento enviar un documento seleccionando la impresora correspondiente de fax. Al parecer si tenias razón que tenga algún inconveniente al intentar enviar desde un Pc con windows 2000. Como es mi caso. Ya he visto que has colocado otra posibilidad en la que no necesitas faxserver y te comento que tal va con windows 2000. Quisiera preguntar si cuando dices "La version extendida FaxComEx" está a partir de w2000, has probado?, si te fijas en los primeros post busqué la libreria faxcomex.dll (Que varia de la fxscomex.dll, dudo si pudiera ser la correspondiente a win2000) puede que la libreria sea diferente. Lo que si he comprobado es que la libreria fxscomex.dll en windows 2000 no aparece, la he añadido yo forzadamente asi como de igualmanera para poder importarlo en delphi tal como explique en varios post anteriores. Nose si para w2000 pudiera existir otra libreria diferente he estado buscando pero no he tenido mucho exito. El caso es que la impresora fax creada al instalarlo en el windows si funciona, asi que ha de existir el modo de hacerlo funcionar también. Muchas gracias y ya te voy informando Nuppy |
#9
|
|||
|
|||
Buenas tardes nuevamente,
Tras varias pruebas y leer en la página de microsoft llego a la conclusión que si lo que quieres es programar el servicio de fax en windows XP, el propio delphi al ir a importar las librerias te especifica la libreria fxscomex.dll, sin embargo si necesitas instalar en un Pc con windows 2000 entonces en el delphi al ir a importar estas librerias no las vas a encontrar porque el win2000 tiene otro enlace y otro modo de funcionamiento y hace referencia a Faxcom.dll.(lo denomina exactamente: Faxcom 1.0 Type Library (Version 1.0) creando en la pestaña activex los siguientes componentes: TFaxTiff TFaxServer TFaxPort TFaxPorts TFaxRoutingMethod TFaxRoutingMethods TFaxStatus TFaxDoc TFaxJobs TFaxJob Al código anterior, en lugar de usar Ifaxdocument se le denomina IFaxDoc y al Ifaxserver si se le denomina igual, quedandome dicho código de la siguiente manera: uses FAXCOMLib_TLB; (debemos añadir en el uses dicha llamada) procedure TForm1.Button1Click(Sender: TObject); var vlserver: IFaxServer; vlDocument : IFaxDoc; Begin vlserver := CoFaxServer.Create; vlDocument := CoFaxDoc.Create; vlserver.Connect(''); vlDocument.filename:='C:\prueba.pdf'; vlDocument.FaxNumber:='123456789'; vlDocument.Send; vlserver.Disconnect; end; Llegado a éste punto consigo que todo me compile correctamente pero... me encuentro con la sorpresa de un error al llegar a la linea CofaxDoc.Create porque dice que no encuentra esta clase registrada. Por más que lo he revisado lo encuentro perfectamente registrado todo, si acudo a la unidad FAXCOMLib_TLB.Pas puedo ver que todo está perfectamente declarado y de hecho compila perfectamente. He registrado la libreria faxcom.dll regsvr32 C:\WINDOWS\system32\faxcom.dll Obteniendo como resultado un mensaje del tipo DllRegisterServer in C:\WINDOWS\system32\faxcom.dll succeeded Comprendo que está correctamente pero desconozco si necesito registrar alguna más y por ello la clase ifaxdoc me falla porque del mismo modo la clase ifaxserver no me produce ningún tipo de fallo. ¿alguna idea respecto a éste nuevo problema? Quizá tal como explique anteriormente se puede intentar que un WIN2000 pueda acceder a la libreria de fxscomex.dll y forzar su instalacion, pero no he obtenido ningun resultado positivo al intentar enviar un fax en un PC con win2000, que es lo que me interesa, siempre se produce el error: "connection to fax server failed" Desconozco cual seria el siguiente paso a seguir para poder "engañar" también he copiado dicha libreria en C:\windows\System32\ y la he registrado de igual modo que la de faxcom.dll pero en ningún caso consigo enviar. Por ello opte por probar por la propia opción que trae el windows 2000. Por si hay alguien con el mismo problema y quiere leer sus instrucciones correspondientes en microsoft aqui dejo el enlace: http://msdn.microsoft.com/en-us/library/ms692281.aspx Si alguien pudiera darme alguna idea, ejemplo, estaria muy agradecida pues llevo días trabajando con esto sin lograr ningún resultado positivo. Muchas gracias Nuppy |
#10
|
|||
|
|||
buenas tardes de nuevo,
Quisiera confirmar el que código que expuso mgomez2 para windows XP funciona correctamente pero no en windows 2000, yo al menos no he logrado "engañar" al windows para que me deje hacerlo funcionar correctamente. Si alguien posee algun ejemplo, código o alguna idea para poder hacerlo funcionar en 2000 seria de gran ayuda. Muchas gracias Nuppy |
#11
|
|||
|
|||
Hola Nuppy, buscando otra cosa he encontrado esto, echale un vistazo, a ver si te sirve.
Te lo transcribo aqui: Código Delphi [-]function SendFax(filename : String; number : String) : Integer; var Srv : FAXCOMLib.FaxServer; var Doc : FAXCOMLib.FaxDoc; begin Srv := FaxServerClass.Create(); Srv.Connect(nil); srv.Retries := 5; Doc := FAXCOMLib.FaxDoc(Srv.CreateDocument(filename)); Doc.FaxNumber := trim(number); SendFax := Doc.Send(); srv.Disconnect; end; |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Tecla de control+Z y Escape para poder enviar SMS a través de un Modem | vejerf | Varios | 3 | 25-04-2008 17:09:54 |
Intercambiar XML´s a través de una pág. ASP | bataola | Internet | 0 | 13-09-2006 16:30:01 |
Enviar una estructura de datos a traves de Socket en Delphi | ygkw | API de Windows | 3 | 29-06-2006 21:53:48 |
conectar a través de ssh | barrauda | Linux | 2 | 29-05-2006 12:57:44 |
Enviar email a través de Outlook Express | kambiz | Internet | 9 | 20-10-2004 22:58:12 |
|