Envio de Fax desde VB.Net con libreria FAXCOMLIB de W2000
Hola, para el que le interese muestro como mandar faxes mediante la libreria de Windows FAXCOMLIB y el servicio de envio de fax de windows. El siguiente código está generado contra la libreria de W2000 y funciona (en XP hay que cambiar alguna cosa):
-----------------------------------------
Dim PcServidorFax As New FAXCOMLib.FaxServer
Dim JobId As Integer
Dim objFaxDocumento As FAXCOMLib.FaxDoc
PcServidorFax.Connect("\" & DBHOST)
PcServidorFax.Retries = 1
PcServidorFax.ArchiveDirectory = RUTAFAX
objFaxDocumento = CType(PcServidorFax.CreateDocument(NombreArchivo, FAXCOMLib.FaxDoc)
objFaxDocumento.FileName = NombreArchivo
objFaxDocumento.FaxNumber = FaxDestino
objFaxDocumento.DisplayName = NombreDocumento
objFaxDocumento.EmailAddress = DireccionMail
'Datos del Remitente.
objFaxDocumento.SenderTitle = TituloRemitente objFaxDocumento.SenderName = NombreRemitente
objFaxDocumento.SenderCompany = CompanyRemitente
objFaxDocumento.SenderFax = FaxRemitente objFaxDocumento.SenderHomePhone = HomePhoneRemitente objFaxDocumento.SenderOffice = DirecOficinaRemitente
objFaxDocumento.SenderOfficePhone = OficinaPhoneRemitente
objFaxDocumento.SenderAddress = DirecRemitente
objFaxDocumento.SenderDepartment = DepartRemitente
objFaxDocumento.Tsid = TsidRemitente
objFaxDocumento.BillingCode = BillingCodeRemitente
'Enviamos el documento
JobId = objFaxDocumento.Send()
'FAX EN PROCESO DE ENVIO!!!
Dim FaxJobs As FAXCOMLib.FaxJobs
Dim FaxJob As FAXCOMLib.FaxJob
FaxJobs = PcServidorFax.GetJobs
FaxJob = FaxJobs.Item(1)
'Espero a que termine de enviarse.
Select Case FaxJob.QueueStatus
Case "En espera"
While FaxJob.QueueStatus = "En espera"
Sleep(1000)
FaxJob.Refresh()
Application.DoEvents()
End While
Case "En curso"
While FaxJob.QueueStatus = "En curso"
Sleep(1000)
FaxJob.Refresh()
Application.DoEvents()
End While
Case "Eliminando" 'Se ha cancelado por parte del usuario
While FaxJob.QueueStatus = "Eliminando"
Sleep(1000)
FaxJob.Refresh()
Application.DoEvents()
End While
Case "Desconocido" 'Al finalizar la eliminacion
EnviarFax = False
GoTo Continuar
End Select
'Tratar exito
........
Continuar:
'Tratar fracaso
.......
---------------------------------------------------
Ahora bien, mis preguntas por si alguien lo tiene también implementado...
1. Al enviarse el Fax se abre el Word y es éste el que lo envÃa. ¿Como se puede hacer para que no se vea el Word abierto? Es decir, que el usuario no aprecie nada.
2. Tratamiento del estado del envÃo. Tengo mis dudas de que tal como esté funcione correctamente. Alguien tiene hecho de esta u otra forma el tratamiento del cambio de estado del envio del Fax?
Un saludo, Kantabriko.
-----------------------------------------
Dim PcServidorFax As New FAXCOMLib.FaxServer
Dim JobId As Integer
Dim objFaxDocumento As FAXCOMLib.FaxDoc
PcServidorFax.Connect("\" & DBHOST)
PcServidorFax.Retries = 1
PcServidorFax.ArchiveDirectory = RUTAFAX
objFaxDocumento = CType(PcServidorFax.CreateDocument(NombreArchivo, FAXCOMLib.FaxDoc)
objFaxDocumento.FileName = NombreArchivo
objFaxDocumento.FaxNumber = FaxDestino
objFaxDocumento.DisplayName = NombreDocumento
objFaxDocumento.EmailAddress = DireccionMail
'Datos del Remitente.
objFaxDocumento.SenderTitle = TituloRemitente objFaxDocumento.SenderName = NombreRemitente
objFaxDocumento.SenderCompany = CompanyRemitente
objFaxDocumento.SenderFax = FaxRemitente objFaxDocumento.SenderHomePhone = HomePhoneRemitente objFaxDocumento.SenderOffice = DirecOficinaRemitente
objFaxDocumento.SenderOfficePhone = OficinaPhoneRemitente
objFaxDocumento.SenderAddress = DirecRemitente
objFaxDocumento.SenderDepartment = DepartRemitente
objFaxDocumento.Tsid = TsidRemitente
objFaxDocumento.BillingCode = BillingCodeRemitente
'Enviamos el documento
JobId = objFaxDocumento.Send()
'FAX EN PROCESO DE ENVIO!!!
Dim FaxJobs As FAXCOMLib.FaxJobs
Dim FaxJob As FAXCOMLib.FaxJob
FaxJobs = PcServidorFax.GetJobs
FaxJob = FaxJobs.Item(1)
'Espero a que termine de enviarse.
Select Case FaxJob.QueueStatus
Case "En espera"
While FaxJob.QueueStatus = "En espera"
Sleep(1000)
FaxJob.Refresh()
Application.DoEvents()
End While
Case "En curso"
While FaxJob.QueueStatus = "En curso"
Sleep(1000)
FaxJob.Refresh()
Application.DoEvents()
End While
Case "Eliminando" 'Se ha cancelado por parte del usuario
While FaxJob.QueueStatus = "Eliminando"
Sleep(1000)
FaxJob.Refresh()
Application.DoEvents()
End While
Case "Desconocido" 'Al finalizar la eliminacion
EnviarFax = False
GoTo Continuar
End Select
'Tratar exito
........
Continuar:
'Tratar fracaso
.......
---------------------------------------------------
Ahora bien, mis preguntas por si alguien lo tiene también implementado...
1. Al enviarse el Fax se abre el Word y es éste el que lo envÃa. ¿Como se puede hacer para que no se vea el Word abierto? Es decir, que el usuario no aprecie nada.
2. Tratamiento del estado del envÃo. Tengo mis dudas de que tal como esté funcione correctamente. Alguien tiene hecho de esta u otra forma el tratamiento del cambio de estado del envio del Fax?
Un saludo, Kantabriko.