Newsgroup: it.comp.appl.access
Titolo: Fax con winfax.dll e i device contest

Salve a tutti.
Sto preparando un codice per access 2003 per inviare un report via fax
utilizzando la libreria winfax.dll e i device context in windows XP SP2.
Utilizzo questo metodo perchè utilizzando fxscom.dll o fxscomEx.dll
(come esempi dal sitocomune) mi restituisce spesso un errore legato al
formato del file da faxare che non ho possibilità di convertite in TIFF.
Vorrei utilizzare quanto riportato in 
http://msdn.microsoft.com/en-us/library/ms690908.aspx
In particolare, una volta convertito il report in snapshot e, quindi, in
una serie di file EMF, utilizzo il codice seguente per eseguire (play) i
file emf sul device contest restituito da FaxStartPrintJob(); cosa
analoga a stampare i file sul device contest resituito per una stampante.
Ecco il codice:
'---------------------------------------------------
Public Function SendFax2DC(RptName As String, titolo As String,
numeroFaxDaComporre As String)
' invia un file snapshot attraverso il device context DC messo a
disposizione dalla libreria
' winfax.dll.
' Dallo snapshot vengono estratti i metafile emf e inviati al DC che
provvede a stamparli
Dim mIInfo As PFAX_PRINT_INFO
Dim mOInfo As PFAX_CONTEXT_INFO
Dim mID As Long
Dim res As Long
Dim hPrinter As Long 'handle del device contest del fax
Dim pagFile As String 'pagina da faxare in formato emf
Dim npagFile As Long
npagFile = 0
Dim tempfile As String
Dim xOff, yOff As Long
Dim hEmf As Long
Dim lnRet As Long
Dim lprect As RECTL
Dim i As Long
'
mIInfo.SizeOfStruct = Len(mIInfo)
mIInfo.DocName = "Prova di fax"
mIInfo.RecipientNumber = numeroFaxDaComporre '<-- Número del destinatario
mIInfo.SenderCompany = ""
'mIInfo.SenderDept = " " 'vbNullString
'mIInfo.SenderBillingCode = " " ' vbNullString
mIInfo.Reserved = vbNullString
mIInfo.OutputFileName = vbNullString
'
res = FaxStartPrintJob(vbNullString, mIInfo, mID, mOInfo)
If res <> 0 Then
    'Debug.Print  CStr(mOInfo.hDC)
    hPrinter = mOInfo.hDC
Else
    Debug.Print "Errore: " & CStr(Err.LastDllError)
    Exit Function
End If
'Determinazione dell'area di stampa
xOff = GetDeviceCaps(hPrinter, PHYSICALOFFSETX)
yOff = GetDeviceCaps(hPrinter, PHYSICALOFFSETY)
lprect.Left = xOff
lprect.Top = yOff
lprect.Bottom = 29700
lprect.Right = 21000
'Conversione del report da faxare in emf
'fonte 
www.lebans.com
pagFile = ConvertReportToEMF(RptName, titolo, 1, npagFile)
For i = 1 To npagFile
    lnRet = StartPage(hPrinter)
    If lnRet <= 0 Then Debug.Print "Errore: " & CStr(Err.LastDllError)
 
    'Indirizzo fisico della pagina da faxare
    tempfile = pagFile & i & ".emf"
 
    hEmf = GetEnhMetaFile(tempfile)
 
    'L'errore è in questa istruzione, in quanto lnRet è nullo
    lnRet = PlayEnhMetaFile(hPrinter, hEmf, lprect) 
    lnRet = DeleteEnhMetaFile(hEmf)
    Call EndPage(hPrinter)
Next i
Call EndDoc(hPrinter)
Call DeleteDC(hPrinter)
End Function
'--------------------------------------------------------------------
Da quello che ne so gli emf sono metafile, ovvero contengono al loro
interno le istruzioni per essere mostrati (o eseguiti, play) sul device.
Da qui l'utilizzo della funzione playenhmetafile(). 
L'esecuzione del codice non riporta nessun errore; alla chiamata di
EndDoc(hprinter) si apre la finestra di invio fax di windows, che
riporta un documento vuoto. In particolare il valore restituito alla
chiamata di playenhmetafile() è nullo e non dovrebbe esserlo.
Qualche suggerimento?
Grazie , ciao.

 ha scritto nel messaggio 
news:200901051...@mynewsgate.net...

Per risolvere il problema dei Tiff+l'utilizzo della libreria fxscom, ti 
posso suggerire PDFCreator per generare i tiff.
Qui: 
http://www.pdfforge.org/node/1145
 viene indicato il formato giusto per 
MS Fax...
Ciao.
-- 
Sergio MAZZA 

 ha scritto:


 2) pdfcreator non funziona in vista.
Vista?
Io ho provato la versione free di ImagePrinter 
http://code-industry.net
 su 
XP; la versione Pro funziona anche su Vista...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 



Non sono in grado di rispondere.
Ma la libreria winfax.dll non fa parte dell'applicazione WinFax di Symantec? 
Se è così perché ti preoccupi di non installare altro software?
In teoria se utilizzi la libreria fax di MS+un driver di stampa che ti 
genera Tiff multipagina (in formato adatto al fax), dovresti risolvere o mi 
manca qualche informazione?
Ciao.
-- 
Sergio MAZZA