Paul
Tue Oct 26 08:12:27 CDT 2004
This is a multi-part message in MIME format.
------=_NextPart_000_0007_01C4BB22.C48BE080
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
This is from the documentation I wrote at the time. It was customized =
for that application, but these parts should be relevant generally.
**********************
Initial information: The [name] installer expects to be run on the =
computer on which the Zetafax server is installed. It is not necessary =
to have the client software installed; in fact, you might not want to do =
that because of the limited number of client licenses available. The =
installer also expects the Zetafax working directory to be C:\ZFAX. If =
you want to install it on a different machine, or if the Zetafax =
directory is different from C:\ZFAX, you will have to modify ZETAFAX.INI =
after installing the application.
1. Using the Zetafax server configuration utility, create a user called =
[user name]. The application will attempt to log in as this user, so if =
the user does not exist, faxing will fail. After creating that user, =
open the file C:\ZFAX\USERS\[user name]\USER.INI. Blank out the option =
"coversheet". If you don't do this, all faxes the system sends will =
include a cover sheet.
2. Create a printer for Zetafax to use. First, create a folder =
C:\ZFPREREN. In that folder, create an empty text document called =
ZF.EPN. Next, in the Windows Printer section, choose Add a printer. =
Select "local printer" and deselect "Automatically detect and install". =
Select "Create a new port"; select the type as local and name it =
"c:\zfpreren\zf.epn". As type of printer, choose Epson LQ-1000 (this =
printer driver comes with Windows, so should be available). Name the =
printer "Epson for Zetafax". After the printer has been installed, =
delete the file C:\ZFPREREN\ZF.EPN.
*********************
That will cause a report printed from the Zetafax printer to show up as =
a prerendered file called zf.epn in c:\zfpreren\. You can then attach =
that file to a new fax object as described earlier.
One more thing - ZETAFAX.INI is critical to successful operation. Here =
are some sample settings:
[ZETAFAX]
Type: Init
Revision: A
[SERVER]
ServerArea: \\FAX SERVER\ZFAX\SERVER
SystemArea: \\FAX SERVER\ZFAX\SYSTEM
AllUserArea: \\FAX SERVER\ZFAX\USERS
RequestArea: \\FAX SERVER\ZFAX\REQUEST
("FAX SERVER" is the name of the machine the Zetafax server is running =
on.)
Sorry, but I haven't had time to run through this procedure again to =
verify that it all does what it's supposed to. But maybe this will give =
you enough info to get up and running. Good luck!
Paul
http://www.prpconsulting.com
"Paul Pedersen" <no-reply@swen.com> wrote in message =
news:%23xrwoMHuEHA.2980@tk2msftngp13.phx.gbl...
>I hate to admit this, but I don't remember all the setup details, of =
which=20
> there were several. It's been almost a year since I was involved with =
it. I=20
> probably even documented it somewhere. I'll try to look it all up over =
the=20
> weekend.
>=20
>=20
>=20
> "Bill Leavy" <bleavy@optonline.net> wrote in message=20
> news:v12hn0p7baohut3iccuffdgkm4692nag83@4ax.com...
>> Hi Paul -
>>
>> I know I already tried the .F., but tried it again just to make sure,
>> and still get the
>>
>> "OLE Dispatch exception code 0 from ZfAPI;;Logon(); API =
initialisation
>> has failed" error.
>>
>> Just for the heck of it, I tried calling a property that should be
>> available at the same level as logon (from the oZFAPI object) so I
>> could rule out syntax mistakes on the logon command.
>>
>> I called...
>>
>> ? oZFAPI.Version
>>
>> which should return the version number and I got the same error...
>>
>> "OLE Dispatch exception code 0 from ZfAPI;;Logon(); API =
initialisation
>> has failed"
>>
>> So now I'm thinking that maybe the oZFAPI object didn't instantiate
>> properly, but when I check the debugger, it shows oZFAPI with a type
>> of object.
>>
>> I'm baffled.
>>
>> -- Bill
>>
>>
>>
>>
>>
>>
>> On Thu, 21 Oct 2004 20:19:51 -0700, "Paul Pedersen"
>> <no-reply@swen.com> wrote:
>>
>>>Woops, extra quotes in that one. Use this instead:
>>>
>>>oZFUserSession =3D oZFAPI.Logon("BILL", .F.)
>>>
>>>
>>>BTW, I'm running this app only on the machine that has the ZetaFax =
server
>>>installed. I found it more trouble than it was worth to install the=20
>>>ZetaFax
>>>clients on all the computers, especially since there are no other =
faxing
>>>going from them. Those other computers enter the order information, =
and=20
>>>this
>>>app scans the orders table and faxes out the confirmations.
>>>
>>>
>>>
>>>
>>>"Paul Pedersen" <no-reply@swen.com> wrote in message
>>>news:uYKwWQ%23tEHA.1464@TK2MSFTNGP15.phx.gbl...
>>>> You have to use the standard "FoxPro False", which is .F.
>>>>
>>>> oZFUserSession =3D oZFAPI.Logon('"BILL"', .F.)
>>>>
>>>>
>>>>
>>>>
>>>> "Bill Leavy" <bleavy@optonline.net> wrote in message
>>>> news:67hgn05h85c0l8pjf1jvb2gquuasalu0e1@4ax.com...
>>>>> Hi Paul -
>>>>>
>>>>> Actually, I'm the guy doing the coding on this, and thanks for =
your
>>>>> help, it's gotten me started.
>>>>>
>>>>> I am running into a problem though with the logon command...
>>>>>
>>>>> I can instantiate the original object with...
>>>>>
>>>>> oZFAPI =3D CREATEOBJECT("zfapi32.zfapi")
>>>>>
>>>>>
>>>>> but, when I try to run the logon method as follows...
>>>>>
>>>>> oZFUserSession =3D oZFAPI.Logon("BILL", False)
>>>>>
>>>>> it is looking for a variable named false, so I changed it to
>>>>>
>>>>> oZFUserSession =3D oZFAPI.Logon('"BILL"', 'False')
>>>>>
>>>>> since without the quotes, VFP thinks I'm passing a variable)
>>>>>
>>>>> This gives me an error reading...
>>>>>
>>>>> "OLE Dispatch exception code 0 from ZfAPI;;Logon(); API =
initialisation
>>>>> has failed"
>>>>>
>>>>>
>>>>> If I use this line instead...
>>>>>
>>>>> oZFUserSession =3D oZFAPI.LogonAnonymous
>>>>>
>>>>> Visual Foxpro crashes.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Also, can you tell me what syntax you use for the logon command?
>>>>>
>>>>> Thanks again.
>>>>>
>>>>>
>>>>> -- Bill
>>>>>
>>>>>
>>>>>
>>>>> On Thu, 21 Oct 2004 14:08:16 -0700, "Paul Pedersen"
>>>>> <no-reply@swen.com> wrote:
>>>>>
>>>>>>I did mine in VFP8, not 6. I can't see any obvious reason it =
wouldn't
>>>>>>work
>>>>>>in 6, though.
>>>>>>
>>>>>>Zetafax works a little differently than Winfax. When you print to =
the
>>>>>>Zetafax printer, it creates a "prerendered" output file in a known
>>>>>>location.
>>>>>>You send the fax by creating a new zetafax message, setting =
attributes,
>>>>>>then
>>>>>>attaching that file.
>>>>>>
>>>>>>Here's a brief sample. Let me know if you need more.
>>>>>>
>>>>>>ozf =3D CREATEOBJECT("zfapi32.zfapi") && unlike Winfax, this =
can be
>>>>>>reused
>>>>>>ozfi =3D ozf.logon(some parameters, I forget what they are)
>>>>>>omsg =3D ozfi.createnewmsg
>>>>>>omsg.subject =3D "whatever" && this is used only in the cover =
sheet,=20
>>>>>>if
>>>>>>there is one
>>>>>>omsg.recipients.addfaxrecipient("Joe Blow", "Joe's Company",
>>>>>>"123-456-7890")
>>>>>>omsg.files.add(pathname of the prerendered file created earlier)
>>>>>>omsg.send
>>>>>>
>>>>>>In the newest version of Zetafax, omsg.body now contains an id of =
that
>>>>>>fax,
>>>>>>so you can query its status later if you want to.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>"Steve Freides" <steve@fridayscomputer.com> wrote in message
>>>>>>news:2tqckuF22rro8U1@uni-berlin.de...
>>>>>>> We were discussing faxing from VFP - we have mostly decided that
>>>>>>> Zetafax
>>>>>>> will meet our needs but are curious if printing a VFP 6 report=20
>>>>>>> directly
>>>>>>> to
>>>>>>> Zetafax's print driver has been a problem for anyone. How have =
you
>>>>>>> dealt
>>>>>>> with embedding fax number information, perhaps via a header =
band?
>>>>>>>
>>>>>>> Many thanks in advance.
>>>>>>>
>>>>>>> -S-
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>=20
>=20
>
------=_NextPart_000_0007_01C4BB22.C48BE080
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2523" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=3DArial>This is from the documentation I wrote at the =
time. It was=20
customized for that application, but these parts should be relevant=20
generally.</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial>**********************</FONT></DIV>
<DIV>
<P><FONT face=3DArial color=3D#0000ff>Initial information: The [name] =
installer=20
expects to be run on the computer on which the Zetafax server is =
installed. It=20
is not necessary to have the client software installed; in fact, you =
might not=20
want to do that because of the limited number of client licenses =
available. The=20
installer also expects the Zetafax working directory to be C:\ZFAX. If =
you want=20
to install it on a different machine, or if the Zetafax directory is =
different=20
from C:\ZFAX, you will have to modify ZETAFAX.INI after installing the=20
application.</FONT></P>
<P><FONT face=3DArial color=3D#0000ff>1. Using the Zetafax server =
configuration=20
utility, create a user called [user name]. The application will attempt =
to log=20
in as this user, so if the user does not exist, faxing will fail. After =
creating=20
that user, open the file C:\ZFAX\USERS\[user name]\USER.INI. Blank out =
the=20
option "coversheet". If you don't do this, all faxes the system sends =
will=20
include a cover sheet.</FONT></P>
<P><FONT face=3DArial color=3D#0000ff>2. Create a printer for Zetafax to =
use. First,=20
create a folder C:\ZFPREREN. In that folder, create an empty text =
document=20
called ZF.EPN. Next, in the Windows Printer section, choose Add a =
printer.=20
Select "local printer" and deselect "Automatically detect and install". =
Select=20
"Create a new port"; select the type as local and name it =
"c:\zfpreren\zf.epn".=20
As type of printer, choose Epson LQ-1000 (this printer driver comes with =
Windows, so should be available). Name the printer "Epson for Zetafax". =
After=20
the printer has been installed, delete the file=20
C:\ZFPREREN\ZF.EPN.</FONT></P></DIV>
<DIV><FONT face=3DArial>*********************</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial>That will cause a report printed from the =
Zetafax printer=20
to show up as a prerendered file called zf.epn in c:\zfpreren\. You can =
then=20
attach that file to a new fax object as described earlier.</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial>One more thing - ZETAFAX.INI is critical to =
successful=20
operation. Here are some sample settings:</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3D"Courier New" size=3D2>[ZETAFAX]<BR>Type: =
Init<BR>Revision:=20
A</FONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT> </DIV>
<DIV><FONT face=3D"Courier New" size=3D2>[SERVER]<BR>ServerArea: <A=20
href=3D"file://\\FAX">\\FAX</A> SERVER\ZFAX\SERVER<BR>SystemArea: <A=20
href=3D"file://\\FAX">\\FAX</A> SERVER\ZFAX\SYSTEM<BR>AllUserArea: <A=20
href=3D"file://\\FAX">\\FAX</A> SERVER\ZFAX\USERS<BR>RequestArea: <A=20
href=3D"file://\\FAX">\\FAX</A> SERVER\ZFAX\REQUEST<BR></FONT></DIV>
<DIV><FONT face=3DArial>("FAX SERVER" is the name of the machine the =
Zetafax=20
server is running on.)</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial>Sorry, but I haven't had time to run through =
this=20
procedure again to verify that it all does what it's supposed to. =
But maybe=20
this will give you enough info to get up and running. Good=20
luck!</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial>Paul</FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial><A=20
href=3D"
http://www.prpconsulting.com">http://www.prpconsulting.com</A></F=
ONT></DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT> </DIV>
<DIV><FONT face=3D"Courier New" size=3D2>"Paul Pedersen" <</FONT><A=20
href=3D"mailto:no-reply@swen.com"><FONT face=3D"Courier New"=20
size=3D2>no-reply@swen.com</FONT></A><FONT face=3D"Courier New" =
size=3D2>> wrote in=20
message </FONT><A =
href=3D"news:%23xrwoMHuEHA.2980@tk2msftngp13.phx.gbl"><FONT=20
face=3D"Courier New"=20
size=3D2>news:%23xrwoMHuEHA.2980@tk2msftngp13.phx.gbl</FONT></A><FONT=20
face=3D"Courier New" size=3D2>...</FONT></DIV><FONT face=3D"Courier New" =
size=3D2>>I=20
hate to admit this, but I don't remember all the setup details, of which =
<BR>> there were several. It's been almost a year since I was =
involved with=20
it. I <BR>> probably even documented it somewhere. I'll try to look =
it all up=20
over the <BR>> weekend.<BR>> <BR>> <BR>> <BR>> "Bill =
Leavy"=20
<</FONT><A href=3D"mailto:bleavy@optonline.net"><FONT face=3D"Courier =
New"=20
size=3D2>bleavy@optonline.net</FONT></A><FONT face=3D"Courier New" =
size=3D2>> wrote=20
in message <BR>> </FONT><A=20
href=3D"news:v12hn0p7baohut3iccuffdgkm4692nag83@4ax.com"><FONT =
face=3D"Courier New"=20
size=3D2>news:v12hn0p7baohut3iccuffdgkm4692nag83@4ax.com</FONT></A><FONT =
face=3D"Courier New" size=3D2>...<BR>>> Hi Paul =
-<BR>>><BR>>> I=20
know I already tried the .F., but tried it again just to make =
sure,<BR>>>=20
and still get the<BR>>><BR>>> "OLE Dispatch exception code 0 =
from=20
ZfAPI;;Logon(); API initialisation<BR>>> has failed"=20
error.<BR>>><BR>>> Just for the heck of it, I tried calling =
a=20
property that should be<BR>>> available at the same level as logon =
(from=20
the oZFAPI object) so I<BR>>> could rule out syntax mistakes on =
the logon=20
command.<BR>>><BR>>> I called...<BR>>><BR>>> ?=20
oZFAPI.Version<BR>>><BR>>> which should return the version =
number=20
and I got the same error...<BR>>><BR>>> "OLE Dispatch =
exception code=20
0 from ZfAPI;;Logon(); API initialisation<BR>>> has=20
failed"<BR>>><BR>>> So now I'm thinking that maybe the =
oZFAPI object=20
didn't instantiate<BR>>> properly, but when I check the debugger, =
it shows=20
oZFAPI with a type<BR>>> of object.<BR>>><BR>>> I'm=20
baffled.<BR>>><BR>>> -- =20
Bill<BR>>><BR>>><BR>>><BR>>><BR>>><BR>>&=
gt;<BR>>>=20
On Thu, 21 Oct 2004 20:19:51 -0700, "Paul Pedersen"<BR>>> =
<</FONT><A=20
href=3D"mailto:no-reply@swen.com"><FONT face=3D"Courier New"=20
size=3D2>no-reply@swen.com</FONT></A><FONT face=3D"Courier New" =
size=3D2>>=20
wrote:<BR>>><BR>>>>Woops, extra quotes in that one. Use =
this=20
instead:<BR>>>><BR>>>>oZFUserSession =3D =
oZFAPI.Logon("BILL",=20
.F.)<BR>>>><BR>>>><BR>>>>BTW, I'm running =
this app=20
only on the machine that has the ZetaFax =
server<BR>>>>installed. I=20
found it more trouble than it was worth to install the=20
<BR>>>>ZetaFax<BR>>>>clients on all the computers, =
especially=20
since there are no other faxing<BR>>>>going from them. Those =
other=20
computers enter the order information, and=20
<BR>>>>this<BR>>>>app scans the orders table and faxes =
out the=20
confirmations.<BR>>>><BR>>>><BR>>>><BR>>>=
;><BR>>>>"Paul=20
Pedersen" <</FONT><A href=3D"mailto:no-reply@swen.com"><FONT =
face=3D"Courier New"=20
size=3D2>no-reply@swen.com</FONT></A><FONT face=3D"Courier New" =
size=3D2>> wrote in=20
message<BR>>>>news:uYKwWQ%23tEHA.1464@TK2MSFTNGP15.phx.gbl...<BR=
>>>>>=20
You have to use the standard "FoxPro False", which is=20
.F.<BR>>>>><BR>>>>> oZFUserSession =3D=20
oZFAPI.Logon('"BILL"',=20
.F.)<BR>>>>><BR>>>>><BR>>>>><BR>>&=
gt;>><BR>>>>>=20
"Bill Leavy" <</FONT><A href=3D"mailto:bleavy@optonline.net"><FONT=20
face=3D"Courier New" size=3D2>bleavy@optonline.net</FONT></A><FONT=20
face=3D"Courier New" size=3D2>> wrote in message<BR>>>>> =
</FONT><A=20
href=3D"news:67hgn05h85c0l8pjf1jvb2gquuasalu0e1@4ax.com"><FONT =
face=3D"Courier New"=20
size=3D2>news:67hgn05h85c0l8pjf1jvb2gquuasalu0e1@4ax.com</FONT></A><FONT =
face=3D"Courier New" size=3D2>...<BR>>>>>> Hi Paul=20
-<BR>>>>>><BR>>>>>> Actually, I'm the guy =
doing=20
the coding on this, and thanks for your<BR>>>>>> help, =
it's=20
gotten me started.<BR>>>>>><BR>>>>>> I am =
running=20
into a problem though with the logon=20
command...<BR>>>>>><BR>>>>>> I can =
instantiate the=20
original object with...<BR>>>>>><BR>>>>>> =
oZFAPI =3D=20
CREATEOBJECT("zfapi32.zfapi")<BR>>>>>><BR>>>>>=
><BR>>>>>>=20
but, when I try to run the logon method as=20
follows...<BR>>>>>><BR>>>>>> =
oZFUserSession =3D=20
oZFAPI.Logon("BILL", =
False)<BR>>>>>><BR>>>>>> it=20
is looking for a variable named false, so I changed it=20
to<BR>>>>>><BR>>>>>> oZFUserSession =3D=20
oZFAPI.Logon('"BILL"', =
'False')<BR>>>>>><BR>>>>>>=20
since without the quotes, VFP thinks I'm passing a=20
variable)<BR>>>>>><BR>>>>>> This gives me =
an error=20
reading...<BR>>>>>><BR>>>>>> "OLE Dispatch =
exception code 0 from ZfAPI;;Logon(); API =
initialisation<BR>>>>>>=20
has=20
failed"<BR>>>>>><BR>>>>>><BR>>>>&g=
t;>=20
If I use this line =
instead...<BR>>>>>><BR>>>>>>=20
oZFUserSession =3D=20
oZFAPI.LogonAnonymous<BR>>>>>><BR>>>>>> =
Visual=20
Foxpro crashes.<BR>>>>>><BR>>>>>> Any=20
ideas?<BR>>>>>><BR>>>>>> Also, can you =
tell me=20
what syntax you use for the logon=20
command?<BR>>>>>><BR>>>>>> Thanks=20
again.<BR>>>>>><BR>>>>>><BR>>>>>=
;>=20
-- =20
Bill<BR>>>>>><BR>>>>>><BR>>>>>&=
gt;<BR>>>>>>=20
On Thu, 21 Oct 2004 14:08:16 -0700, "Paul =
Pedersen"<BR>>>>>>=20
<</FONT><A href=3D"mailto:no-reply@swen.com"><FONT face=3D"Courier =
New"=20
size=3D2>no-reply@swen.com</FONT></A><FONT face=3D"Courier New" =
size=3D2>>=20
wrote:<BR>>>>>><BR>>>>>>>I did mine in =
VFP8,=20
not 6. I can't see any obvious reason it=20
wouldn't<BR>>>>>>>work<BR>>>>>>>in =
6,=20
though.<BR>>>>>>><BR>>>>>>>Zetafax =
works a=20
little differently than Winfax. When you print to=20
the<BR>>>>>>>Zetafax printer, it creates a =
"prerendered"=20
output file in a=20
known<BR>>>>>>>location.<BR>>>>>>>You=
send=20
the fax by creating a new zetafax message, setting=20
attributes,<BR>>>>>>>then<BR>>>>>>>at=
taching=20
that file.<BR>>>>>>><BR>>>>>>>Here's =
a brief=20
sample. Let me know if you need=20
more.<BR>>>>>>><BR>>>>>>>ozf =3D=20
CREATEOBJECT("zfapi32.zfapi") && unlike =
Winfax, this=20
can be<BR>>>>>>>reused<BR>>>>>>>ozfi =
=3D=20
ozf.logon(some parameters, I forget what they=20
are)<BR>>>>>>>omsg =3D=20
ozfi.createnewmsg<BR>>>>>>>omsg.subject =3D=20
"whatever" && this is used only in the cover =
sheet,=20
<BR>>>>>>>if<BR>>>>>>>there is=20
one<BR>>>>>>>omsg.recipients.addfaxrecipient("Joe =
Blow",=20
"Joe's=20
Company",<BR>>>>>>>"123-456-7890")<BR>>>>>&=
gt;>omsg.files.add(pathname=20
of the prerendered file created=20
earlier)<BR>>>>>>>omsg.send<BR>>>>>>>=
<BR>>>>>>>In=20
the newest version of Zetafax, omsg.body now contains an id of=20
that<BR>>>>>>>fax,<BR>>>>>>>so you =
can query=20
its status later if you want=20
to.<BR>>>>>>><BR>>>>>>><BR>>>&g=
t;>>><BR>>>>>>><BR>>>>>>>"St=
eve=20
Freides" <</FONT><A href=3D"mailto:steve@fridayscomputer.com"><FONT=20
face=3D"Courier New" size=3D2>steve@fridayscomputer.com</FONT></A><FONT=20
face=3D"Courier New" size=3D2>> wrote in=20
message<BR>>>>>>>news:2tqckuF22rro8U1@uni-berlin.de...<=
BR>>>>>>>>=20
We were discussing faxing from VFP - we have mostly decided=20
that<BR>>>>>>>> =
Zetafax<BR>>>>>>>>=20
will meet our needs but are curious if printing a VFP 6 report=20
<BR>>>>>>>> =
directly<BR>>>>>>>>=20
to<BR>>>>>>>> Zetafax's print driver has been a =
problem for=20
anyone. How have you<BR>>>>>>>>=20
dealt<BR>>>>>>>> with embedding fax number =
information,=20
perhaps via a header=20
band?<BR>>>>>>>><BR>>>>>>>> =