Newsgroup: it.comp.appl.access
Titolo: WinFaxPro 10.0 symantec

Vorrei sapere se qualcuno di voi è riuscito ad integrare access con il
WinfaxPro 10.0 della symantec
personalmente con gli esempi del SDK sono riuscito trovare qualcosa:
Dim ObjWinFaxSend As Object
Set ObjWinFaxSend = CreateObject("Winfax.SDKSend8.0")
ObjWinFaxSend.SetCoverText ("Fax di Prova")
ObjWinFaxSend.SetNumber ("409")
ObjWinFaxSend.AddRecipient
ObjWinFaxSend.SetPrintFromApp (1)
ObjWinFaxSend.Send (0)
DoCmd.OpenReport "fax"
MsgBox "aspetto prima di chiudere"
con questo codice dovrei settare le opzioni per il fax da trasmettere
e poi lui dovrebbe usare come documento il primo che viene inviato al
driver di stampa, 
invece lui non fa niente e resta in attesa,
il documento viene inviato allo spool di stampa e quindi eliminato, ma
winfax non fa nulla di visibile.
Suggerimenti?
Saluti.
Emanuele.

 personalmente con gli esempi del SDK sono riuscito trovare qualcosa:
Sul sito comune ci sono esempi che funzionano.
Ciao.


wrote:

ma sono per winfax delrina e fax di windows non quello della symantec,
o sbaglio?
Saluti.
Emanuele.

 ha scritto nel messaggio
news:onqm5v8b4iif43c8c...@4ax.com...

Non sbagli?
Io uso WinFax PRO 10.02 della Symantec e non sono riuscito a trovare una
soluzione per inviare un fax con VBA; fra l'altro nel CD che mi è stato
fornito non c'è neppure la guida SDK (Software Development Kit) nè tanto
meno il relativo software da installare; non vorrei che esista la versione
Developer e la versione non Developer ed io ho acquistato quest'ultima, per
cui non riesco a realizzare ciò che mi serve.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

cui non riesco a realizzare ciò che mi serve.
ti confermo, nella 10.02 non c'è nulla, nella 10.00 c'è tutto il SDK
penso tu possa anche scaricarlo dal sito della symantec, oppure se
vuoi te lo spedisco, chissà che in due ci si riesca.
Al momento penso di aggirare il problema (visto che devo mandare una
sola pagina) personalizzando una cover e spedendo quella.
Saluti.
Emanuele.

 o sbaglio?
Secondo me funzionano.
In fin dei conti si tratta di passare dei parametri DDE abbastanza standard
a una Printer installata da WinFax.
O forse è diversa la tua richiesta?
Ciao.


wrote:

può anche darsi, però che parametri devo passare via dde e fra l'altro
supporta il dde?
nel SDK ci sono addirittura librerie per interfacciarsi e rifarsi un
programma personalizzato, ma non mi sembra funzionino a dovere, oppure
la documentazione è imprecisa....
Saluti.
Emanuele.

 supporta il dde?
Io avevo recuperato l'esempio del S.C. e implementato in qualche .mdb quanto
segue, ha sempre funzionato.
Private Function InviaWinFax(FaxNum As String, NomeRpt As String,
Destinatario As String, Oggetto As String, Nome As String) As Boolean
  Dim strRecipient As String
  Dim DefPrn As String
  Dim lngChannelNumber As Long
  Dim strFaxStatus As String
  On Error GoTo InviaFax_Error
  If Nz(FaxNum) = "" Then
       FaxNum = InputBox("inserisci il numero di fax di " & Destinatario)
       If Nz(Trim(FaxNum)) = "" Then Exit Function
  End If
  DefPrn = GetDefaultPrinter                                'Setta la
stampante WinFax come predefinita
  If Not ChangePrn("WinFax") Then GoTo InviaFax_Exit
  strRecipient = Chr$(34) & FaxNum & Chr$(34) & "," & Chr$(34) & "" &
Chr$(34) & "," & _
    Chr$(34) & "" & Chr$(34) & "," & Chr$(34) & Nome & Chr$(34) & "," &
Chr$(34) & _
    Mid(Trim(Destinatario), 1, 42) & Chr$(34) & "," & Chr$(34) & Oggetto &
Chr$(34) '+ "," + Chr$(34) + "Sales" + Chr$(34) + "," + Chr$(34) + "Billing
Code 08" + Chr$(34) + "," + Chr$(34) + "Fax" + Chr$(34)
  lngChannelNumber = DDEInitiate("faxmng32", "CONTROL")   'Inizializza la
connessione DDE
  strFaxStatus = DDERequest(lngChannelNumber, "STATUS")   'Riceve e setta lo
stato della connessione DDE
   'Attende che il Fax non sia occupato (se necessario)
  While strFaxStatus Like "Busy*"
       strFaxStatus = DDERequest(lngChannelNumber, "STATUS")
  Wend
  lngChannelNumber = DDEInitiate("FAXMNG", "TRANSMIT")    'Setta il Numero
del canale come corrente canale DDE
  DDEPoke lngChannelNumber, "Sendfax", "recipient(" & strRecipient & ")"
  DoCmd.OpenReport NomeRpt, A_NORMAL
  InviaWinFax = True
InviaFax_Exit:
    DDETerminateAll              'Termina tutti i collegamenti
    lngChannelNumber = 0
    ChangePrn (DefPrn)
    Exit Function
InviaFax_Error:
    If Err.Number = 282 Then
        MsgBox ("Attivare il Controller del WinFax")
    Else
        MsgBox Err.Description
    End If
    InviaWinFax = False
    Resume InviaFax_Exit
End Function

 Emanuele.
--


 ha scritto nel messaggio
news:mH_6a.157293$ZE.46...@twister2.libero.it...

Io ho provuto quanto indicato dal Sito comune dopo aver installato WinFax
PRO 10.02 dell Symantec e non mi ha funzionato un tubo; sono dell'avviso di
Emyr, ovvero sul Sito comune non si fa riferimento a WinFax della Symantec
ma a WinFax della delrina (fra l'altro di una sua versione particolare e
patchata) come è chiaramente indicato nelle righe di commento di una delle
funzioni.
Comunque se tu sei riuscito a farlo funzionare, dicci come hai fatto.


 Comunque se tu sei riuscito a farlo funzionare, dicci come hai fatto.
Leggi bene il Thread: ho già postato il codice.
Ciao.



devi smarcare sui riferimenti l'automation service di winfax
Saluti.
Emanuele.

avevo gią risolto creando una copertina personalizzata, ma proverņ
anche il tuo metodo, ti faro sapere
grazie
Saluti.
Emanuele.


wrote:
purtroppo non mi funziona
Saluti.
Emanuele.

 ha scritto nel messaggio
news:UBa7a.158765$YG2.4...@twister1.libero.it...

Visto, grazie!


 ha scritto nel messaggio
news:kcbr5v492ppv4rukd...@4ax.com...

OK, Grazie!


 wrote:
putroppo non mi funziona
Accidenti: è proprio una maledizione  ;-))
Purtroppo non posso aiutarti più di tanto non avendo sottomano il prodotto:
ma sul tuo sistema è installata una stampantina virtuale WinFax?
Considera che il codice che ho postato, con pochissime variazioni funziona
senza problemi anche con ZetaFax e AthosFax.
Spedire parametri DDE alle stampantine Fax è una procedura abbastanza
standard.
Ciao.

 ha scritto nel messaggio
news:rvfr5vsuckv4rbt6u...@4ax.com...

Penso di aver trovato la soluzione dei problemi.
Per inviare una copertina del fax occorre per prima cosa aggiungere ai
riferimenti del database quello relativo a WinFax Automation Server (ma
questo mi sembra che tu già lo sapessi); l'invio lo oterrai eseguento il
seguente codice VBA:
Dim objWinfaxSend As Object
Dim TestoCopertina As String
Dim NumeroFAX As String
Dim Oggetto As String
Dim A As String
TestoCopertina = "Testo della copertina"
NumeroFAX = "06233206198"
Oggetto = "Oggetto della Copertina"
A = "Nome del destinatario
Set objWinfaxSend = CreateObject("WinFax.SDKSend8.0")
objWinfaxSend.SetCoverText (TestoCopertina)
objWinfaxSend.SetNumber (NumeroFAX)
objWinfaxSend.SetSubject (Oggetto)
objWinfaxSend.SetTo (A)
objWinfaxSend.AddRecipient
objWinfaxSend.Send (0)
Quando esegui questo codice occorre che sia aperta la Gestione messaggi di
WinFax PRO.
Invece per inviare un report chiamato Report1 per fax devi:
1) registrare in un modulo del tuo database le seguenti funzioni:
Declare Function GetProfileSection& Lib "kernel32" _
Alias "GetProfileSectionA" (ByVal lpAppName As String, _
ByVal lpReturnedString As String, ByVal nSize As Long)
Declare Function GetProfileString& Lib "kernel32" _
Alias "GetProfileStringA" (ByVal lpAppName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long)
Declare Function WriteProfileString& Lib "kernel32" _
Alias "WriteProfileStringA" (ByVal lpszSection As _
String, ByVal lpszKeyName As String, ByVal _
lpszString As String)
Public DefaultPrinter As String
Public Function SostCar(s As String, c1 As String, _
c2 As String) As String
Dim pos As Integer
pos = InStr(1, s, c1)
If pos > 0 Then Mid(s, pos) = c2
SostCar = s
End Function
Public Sub SetDefaultPrinter(s As String)
On Error GoTo Esci
Dim x As Long
If IsNull(s) Or s = "" Then Exit Sub
x = WriteProfileString("windows", "device", _
vbNullString)
DoEvents
x = WriteProfileString("windows", "device", s)
DoEvents
Esci:
End Sub
Public Sub ResetDefaultPrinter()
SetDefaultPrinter (DefaultPrinter)
End Sub
Public Function GetDefaultPrinter() As String
Dim x As Integer
Dim buffer As String
buffer = Space$(255)
x = GetProfileString("windows", "device", _
"?", buffer, 255)
GetDefaultPrinter = Left$(buffer, x)
End Function
Queste funzioni le ho copiate sul Sito Comune dal database di esempio
allegato alla FAQ di Carlo Costarella e Lorenzo Coronati intitolata "Gestire
la stampante predefinita".
2) In un altro modulo registra quest'altra funzione:
Public Function InviaWinFax(FaxNum As String, _
NomeRpt As String, Destinatario As String, _
Oggetto As String, Nome As String) As Boolean
Dim strRecipient As String
Dim lngChannelNumber As Long
Dim strFaxStatus As String
On Error GoTo InviaFax_Error
If Nz(FaxNum, "") = "" Then
FaxNum = InputBox("inserisci il numero di fax di " _
& Destinatario)
If Nz(Trim(FaxNum)) = "" Then Exit Function
End If
Dim ss As String
ss = "winfax,WINFAX,LPT1:"
DefaultPrinter = GetDefaultPrinter
Call SetDefaultPrinter(ss)
strRecipient = Chr$(34) & FaxNum & Chr$(34) & _
"," & Chr$(34) & "" & Chr$(34) & "," & _
Chr$(34) & "" & Chr$(34) & "," & Chr$(34) & _
Nome & Chr$(34) & "," & Chr$(34) & _
Mid(Trim(Destinatario), 1, 42) & Chr$(34) & _
"," & Chr$(34) & Oggetto & Chr$(34)
lngChannelNumber = DDEInitiate("faxmng32", "CONTROL")
strFaxStatus = DDERequest(lngChannelNumber, "STATUS")
While strFaxStatus Like "Busy*"
strFaxStatus = DDERequest(lngChannelNumber, "STATUS")
Wend
lngChannelNumber = DDEInitiate("FAXMNG", "TRANSMIT")
DDEPoke lngChannelNumber, "Sendfax", "recipient(" _
& strRecipient & ")"
DoCmd.OpenReport NomeRpt, A_NORMAL
InviaWinFax = True
InviaFax_Exit:
DDETerminateAll
lngChannelNumber = 0
Call SetDefaultPrinter(DefaultPrinter)
Exit Function
InviaFax_Error:
If Err.Number = 282 Then
MsgBox ("Attivare il Controller del WinFax")
Else
MsgBox Err.Description
End If
InviaWinFax = False
Resume InviaFax_Exit
End Function
Che altro non è che la funzione di Massimiliano ma riveduta e corretta.
3) per iviare il fax esegui il seguente codice VBA:
Dim NumeroFAx As String
Dim Dest As String
Dim Ogg As String
Dim Pippo As String
NumeroFAx = "06233206198"
Dest = "Società destinatario del fax"
Ogg = "Oggetto del fax"
Pippo = "Nome Destinatario del fax"
Call InviaWinFax([NumeroFAx], "Report1", _
[Dest], [Ogg], [Pippo])
Quando esegui questo codice VBA occorre che sia aperta la Gestione messaggi
di WinFax PRO.
A me ha funzionato, fammi sapere se a te funziona.


 ha scritto nel messaggio
news:wB77a.158054$YG2.4...@twister1.libero.it...

Questa routine non funziona per questi motivi:
1) occorre sostituire la riga di codice:
If Nz(FaxNum) = "" Then
con la seguente:
If Nz(FaxNum, "") = "" Then
2) Occorre che esista una funzione chiamata GetDefaultPrinter con la quale
rilevare il nome della stampante, ma tu non ne hai postato il codice.
3) Occorre che esista una funzione chiamata ChangePrn con la quale Settare
la stampante FAX come stampante predefinita, ma tu non ne hai postato il
codice.
4) Il nome reale della stampante FAX usando WinFax PRO di Symantec non è
WinFAx ma WinFax,WINFAX,LPT1:
Ho postato a Emyr una soluzione funzionante.


WinFAx ma WinFax,WINFAX,LPT1:
ecco cosa mi mancava........
adesso provo....
comunque mi resta l'amaro in bocca perchč cosě usiamo una chiamate dde
e non l'automazione sdk fornita con l'applicazione che consente di
fare molto di piů.
Saluti.
Emanuele.

il Sito Comune d
a me no, mi fa come con l'sdk mi passa attraverso il driver di stampa,
si elimina e non fa null'altro....
io ho xp con sp1 e office xp developer con sp.2 e WinfaxPro10.02
tu su cosa hai provato?
Saluti.
Emanuele.

 WinFAx ma WinFax,WINFAX,LPT1:
Farò qualche verifica dai clienti.
Il codice che ho postato funziona perfettamente con WinFax (forse non la
versione 10, ma sicuramente Symantec)
Ciao.

 Ciao.
--


 Emanuele.


 Emanuele.
--
Roberto
---------------------------------------------


 gestione della stampante predefinita, ma ChangePrn?
Magari faccio confusione tra sito Comune e Google  ;-)
Però credo che l'esempio "storico" di Carlo Costarella riporti tutto ... in
ogni caso accuso il colpo per l'omissis.
Ciao.
P.S: Per WinFax farò sapere, ma non ho dubbi sul fatto che quel codice funzi
con Symantec WinFax.

 con Symantec WinFax.
Sono d'accordo con te; io ho usato la tua soluzione solo che mi sono visto
costretto ad usare le funzioni che ho trovato sul Sito Comune, non sapendo
dove trovare quelle usate da te.
Ho anche dovuto cambiare il nome della stampante; questo però potrebbe
dipendere dal fatto che ho dovuto usare una funzione divera da ChangePrn:
magari per ChangePrn va bene WinFax come nome.


> Emanuele.
Saluti.
Emanuele.

> Emanuele.
l'object browser è il visualizzatore oggetto di access lo vedi sul
codice vba
li vedi tutti i metodi dopo aver scelto WFXCTL32 come libreria
comunque del manuale di sdk sono presenti tutte le funzioni con tanto
di specifiche se mi dai l'ok ti spedisco il tutto
Saluti.
Emanuele.

tu che sistema operativo usi?
Saluti.
Emanuele.

 Emanuele.
--
Roberto
---------------------------------------------


 ha scritto nel messaggio
news:u5nu5vosofgbjivki...@4ax.com...

OK! OK trovato e visto.
Quanto al manuale SDK, quello in inglese ce l'ho, me lo ha gentilmente
inviato per posta elettronica non mi ricordo chi; è un file PDF di circa 170
pagine; sino ad ora lo solo sbirciato sommariamente in elettronico: dovrei
stamparlo e studiarlo, solo che i manuali in inglese non mi hanno mai
entusiasmato (sai com'è, oltre a un po' di italiano conosco solo il
romanesco, lingua veramente poco usata nell'informatica).
Quindi se hai, per caso, quello in italiano bene, altrimenti quello in
inglese già ce l'ho.
Comunque nel dare uno sguardo alle funzioni ed ai parametri SDK ho fatto un
piccolo passo avanti; usando SDK, unitamente alla copertina, sono riuscito a
inviare per FAX anche un file di testo; nel caso che ti serva ti invio il
relativo codice VBA:
Dim objWinfaxSend As Object
Dim TestoCopertina As String
Dim NumeroFax As String
Dim Oggetto As String
Dim NomeDestinatario As String
Dim Allegato As String
Dim SocietàDestinatario As String
Allegato = "C:\Documenti\NomeFileTesto.doc"
TestoCopertina = "Questo è il tetso della copertina"
NumeroFax = "06233206198"
Oggetto = "Oggetto della Prova"
NomeDestinatario = "Pinco Pallino"
SocietàDestinatario = "Mascalzoni & C."
Set objWinfaxSend = CreateObject("WinFax.SDKSend8.0")
objWinfaxSend.AddAttachmentFile (Allegato)
objWinfaxSend.SetCoverText (TestoCopertina)
objWinfaxSend.SetNumber (NumeroFax)
objWinfaxSend.SetSubject (Oggetto)
objWinfaxSend.SetTo (NomeDestinatario)
objWinfaxSend.SetCompany (SocietàDestinatario)
objWinfaxSend.AddRecipient
objWinfaxSend.Send (0)
Come vedi la variabile stringa Allegato deve contenere il path completo del
file che vuoi inviare per fax; così facendo WinFax PRO converte il file in
una immagine fax e lo invia automaticamente a seguire alla copertina del
fax.
Ho dovuto aggiungere ai riferimenti del database anche la dll WFXCTRL.DLL:
ho fatto questo agiungendo il riferimento chiamato Symantec WinFax PRO
Controls.
Se volessi mandare via fax un report potresti prima trasformarlo in un file
txt e poi iviarlo usando solo SDK, che, se non sbaglio, era un tuo
obiettivo.
Certo che ora bisognerebbe studiare le innumerevoli possibilità illustrate
nelle 170 pagine del manuale SDK (peccato che l'inglese mi è un po'
antipatico: sarà forse perché in inglese si parla troppo di guerra?).


 Quello sul Sito Comune è di Giorgio Valsangiacomo.
L'esempio di Carlo Costarella è per impostare una stampante come
predefinita...
Ciao: Max

 tu che sistema operativo usi?
Cioč i clienti?
Windows 98 e 2000.
Ciao.

> Emanuele.
Saluti.
Emanuele.

antipatico: sarà forse perché in inglese si parla troppo di guerra?).
si parla anche di pace  (image)
il mio obiettivo è i far funzionare il
printfromapp(1) 
Saluti.
Emanuele.


wrote:

io sul mio ho xp, oggi provo su un 98 se mi da ancora problemi
Saluti.
Emanuele.


Non sapendo cosa sia e a cosa ti serva printfromapp(1), non sono in grado di
seguire il tuo ragionamento.
[CUT]


 Emanuele.


printfromapp(1)
serve per indicare a winfax che la successiva stampa inviata al driver
di winfax venga inoltrata con le specifiche precedentemente impostate 
Saluti.
Emanuele.

 ha scritto nel messaggio
news:5r716vkp5sssgsd46...@4ax.com...

Penso proprio che dovrò studiare tutta la guida SDK.
Per ora sto studiando il secondo capitolo parla dei metodi e funzioni del
Send object di WinFax PRO.
