Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Mamut, Вы писали:
M>>M>>ISDKSendPtr send;
M>>send -> SetTo(L"123 45 56");
M>>send -> SetCompany(L"My Company");
M>>send -> SetSubject(L"My Fax");
M>>send -> SetPrintFromApp(TRUE);
M>>/* Печатаем на принтер WinFax*/
M>>send -> Send();
M>>
M>>Красота! Считывание пришедших сообщений — в таком же стиле. Ну, COM'овском.
E>А чем это лучше, например, вот такого:
E>E>system( "faxsend --to '123 45 56' --company 'My Company' --subject 'My Fax'" );
E>
Всем

Ну, вернее, отсылка самого факса, конечно, практически равнозначна. А вот уже считывание факсовых событий, пробег по папкам в винфаксе и вытягивание из них сообщений может оказаться для Unix-way геморроем (пишу по памяти):
ISDKLogPtr log;
log.CreateInstance();
bstr_t folderID = log -> GetFolderFirst(FAX_FOLDER_STANDARD, L"");
if(folderID.Length() > 0)
{
folderID = log -> GetFolderFirst(FAX_FOLDER_NONE, folderID);
while(folderID.Length() > 0)
{
bstr_t messageID = log -> GetMessageFirst(folderID);
while(messageID.Length() > 0)
{
bstr_t messageTo = log -> GetMessageTo(messageID);
bstr_t messageCompany = log -> GetMessageCompany(messageID);
bstr_t messageFax = log -> GetMessageFax(messageID);
/* ... и так далее. Там штук 20 параметров, */
/* включая даты, время, количество попыток, ошибки и т.д. */
messageID = log -> GetMessageNext(folderID, messageID);
}
folderID = log -> getFolderNext();
}
}
Unix-way подразумевает вызов faxsend для получения некоторого структурированного списка папок и сообщений. Этот список еще надо будет ручками распарсить и прийти, в общем, к такому же коду, что я привел, но с бОльшим геморроем (парсер-то придется писать).
Тут есть еще один грабель — пути к исполняемым фалам. В *nix же тоже есть переменная окружения PATH

(это если я не ошибаюсь) То есть, faxsend на самом деле придется запускать как-то так:
/usr/local/faxsend/bin/faxsend --faxlist
А faxsend не обязательно в той папке находится

В случае с COM'ом нам достаточно, чтобы WinFax был просто установлен в системе.
Но, опять же, я не против Unix-way. Он имеет право на существование и порой весьма и весьма полезен. Но он не единственный путь.
ЗЫ. WinFax'овые объекты тоже весьма Unix-way. Во-первых, возвращают только BSTR. Во вторых, функции GetMessageTime и GetMessageDate возвращают строки locale-aware. То есть, на US locale они возвращают, соответственно, "06/22/2006" и "08:01 РМ". А на RU locale — "22.06.2006" и "20:01"

От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>