Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2008
mgomez2 mgomez2 is offline
Registrado
 
Registrado: abr 2007
Posts: 9
Poder: 0
mgomez2 Va por buen camino
Enviar Fax a traves de IFaxServer

Hola, estoy intentando enviar faxes a traves de la interface COM de windows, con un codigo como este:

Código Delphi [-]
uses FAXCOMEXLib_TLB; 
procedure TForm1.BitBtn1Click(Sender: TObject); 
var   
   vlserver: IFaxServer;   
   vlDocument : IFaxDocument;
begin
     vlserver := CoFaxServer.Create;
     vlDocument := CoFaxDocument.Create;
     vlserver.Connect('');
     vlDocument.Body := 'D:\prueba.pdf';
     vlDocument.DocumentName := 'Prueba';
     vlDocument.Priority:=fptHIGH;
     vlDocument.Recipients.Add('937111111','Nombre');
     vlDocument.AttachFaxToReceipt := True;
     vlDocument.CoverPageType := fcptNONE;
     vlDocument.ScheduleType:=fstNOW;
     vlDocument.ReceiptType:=frtNONE;
     vlDocument.Submit('');
    vlserver.Disconnect;
end;

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.
Responder Con Cita
  #2  
Antiguo 10-10-2008
Fistandantilus Fistandantilus is offline
Miembro
 
Registrado: ago 2008
Posts: 10
Poder: 0
Fistandantilus Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 10-10-2008
User_Baja_2 User_Baja_2 is offline
Miembro
 
Registrado: may 2003
Posts: 126
Poder: 22
User_Baja_2 Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 11-10-2008
Fistandantilus Fistandantilus is offline
Miembro
 
Registrado: ago 2008
Posts: 10
Poder: 0
Fistandantilus Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 12-10-2008
User_Baja_2 User_Baja_2 is offline
Miembro
 
Registrado: may 2003
Posts: 126
Poder: 22
User_Baja_2 Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 13-10-2008
mgomez2 mgomez2 is offline
Registrado
 
Registrado: abr 2007
Posts: 9
Poder: 0
mgomez2 Va por buen camino
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 !!!
Responder Con Cita
  #7  
Antiguo 15-10-2008
mgomez2 mgomez2 is offline
Registrado
 
Registrado: abr 2007
Posts: 9
Poder: 0
mgomez2 Va por buen camino
Bueno, voy a mejorar un poquito el código:

Código Delphi [-]
uses FAXCOMEXLib_TLB; 
procedure TForm1.BitBtn1Click(Sender: TObject); 
var   
   vlDocument : IFaxDocument;
begin
     vlDocument := CoFaxDocument.Create;
     vlDocument.Body := 'D:\prueba.pdf';
     vlDocument.DocumentName := 'Prueba';
     vlDocument.Priority:=fptHIGH;
     vlDocument.Recipients.Add('937111111','Nombre');
     vlDocument.AttachFaxToReceipt := True;
     vlDocument.CoverPageType := fcptNONE;
     vlDocument.ScheduleType:=fstNOW;
     vlDocument.ReceiptType:=frtNONE;
     vlDocument.Submit('');
end;

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:
Código Delphi [-]
uses FAXCOMEXLib_TLB; 
procedure TForm1.BitBtn1Click(Sender: TObject); 
var   
   vlServer : IFaxServer;
   vlDocument : IFaxDocument;
begin
     vlServer := CoFaxServer.Create;
     vlServer := Connect('');
     vlDocument := CoFaxDocument.Create;
     vlDocument.Body := 'D:\prueba.pdf';
     vlDocument.DocumentName := 'Prueba';
     vlDocument.Priority:=fptHIGH;
     vlDocument.Recipients.Add('937111111','Nombre');
     vlDocument.AttachFaxToReceipt := True;
     vlDocument.CoverPageType := fcptNONE;
     vlDocument.ScheduleType:=fstNOW;
     vlDocument.ReceiptType:=frtNONE;
     vlDocument.ConnectedSubmit(vlServer);
     vlServer.Disconnect;
end;
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.
Responder Con Cita
  #8  
Antiguo 16-10-2008
User_Baja_2 User_Baja_2 is offline
Miembro
 
Registrado: may 2003
Posts: 126
Poder: 22
User_Baja_2 Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 16-10-2008
User_Baja_2 User_Baja_2 is offline
Miembro
 
Registrado: may 2003
Posts: 126
Poder: 22
User_Baja_2 Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 17-10-2008
User_Baja_2 User_Baja_2 is offline
Miembro
 
Registrado: may 2003
Posts: 126
Poder: 22
User_Baja_2 Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 22-10-2008
mgomez2 mgomez2 is offline
Registrado
 
Registrado: abr 2007
Posts: 9
Poder: 0
mgomez2 Va por buen camino
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;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 23:47:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi