Using WinFax PRO 10.02 SDK on Windows XP?


2003-12-16 08:34:44 PM
cppbuilder1
Hello there
Im using the "WinFax.SDKSend" object to Fax from my application.
The setup uses Fax-sharing and it works fine on NT 4.0 and Win2000.
On Windows XP it also possible to Print to WinFax from Notepad (haven't
tried other apps.)
When SingleStep thrugh the code things looks normal until I wait for the
"IsEntryIDReady" to return. After 20 seconds it's has not returned, and the
fax doesn't get send. Calling the "Cancel" method chrashes the application.
Looking at Symnatecs website, I can only find support to Win95/NT SDK, which
suggest that it might not work in WinXP?
Is there anybody out there who knows if there really is af problem with
Windows Xp and SDK, and if ver. 10.03 fix this issue.
Best Regards
Jens
PS:
Part of my code (Borland C++ Builder) is listed below:
Variant V;
V = CreateOleObject("WinFax.SDKSend");
int Res;
long err;
int Retry = 0;
Res = V.Exec(Function("LeaveRunning"));
Res = V.Exec(Function("RemoveAllRecipients"));
Res = V.Exec(Function("SetNumber") << edMsgFax->Text);
Res = V.Exec(Function("SetAreaCode") << "");
Res = V.Exec(Function("SetCountryCode") << "");
Res = V.Exec(Function("SetCompany") << DBEdit1->Text);
Res = V.Exec(Function("SetTo") << DBEdit1->Text);
Res = V.Exec(Function("SetSubject") << "Messages");
Res = V.Exec(Function("AddRecipient"));
if(Res)
{
MessageBox(NULL,"Could'nt add Recipient","",MB_OK);
}
Res = V.Exec(Function("SetUseCover") << 0 );
Res = V.Exec(Function("SetResolution") << 0 );
Res = V.Exec(Function("ShowSendScreen") << 0 );
Res = V.Exec(Function("SetPreviewFax") << 0);
Res = V.Exec(Function("SetPrintFromApp") << 1);
int FaxFailed = V.Exec(Function("Send") << 1);
if(FaxFailed)
MessageBox(NULL,"Could'nt initiate send fax","",MB_OK);
while(Retry < 20 && (bool)V.Exec(Function("IsReadyToPrint")) ==
false)
{
Sleep(1000);
Retry++;
}
if(Retry == 20)
{
Res = V.Exec(Function("Cancel"));
MessageBox(NULL,"Winfax not ready to print","",MB_OK);
Screen->Cursor = SC;
return;
}
TPrinter *Prn = Printer();
for(int p = 0; p < Prn->Printers->Count; p++)
if( Prn->Printers->Strings[ p ].UpperCase() ==
AnsiString("WINFAX") )
{
Prn->PrinterIndex = p;
break;
}
reRTF->Print(DBEdit1->Text);
Sleep(100); // needed according to samples
Retry = 0;
while(Retry < 20 && (int)V.Exec(Function("IsEntryIDReady") << 0) !=
1)
{
Sleep(1000);
Retry++;
}
if(Retry == 20)
{
Res = V.Exec(Function("Cancel"));
MessageBox(NULL,"Winfax did'nt retrieve EntryId","",MB_OK);
Screen->Cursor = SC;
return;
}
V = Unassigned;