Как использовать FAXCOMLib в службе Windows?

#c# #windows-7 #fax

#c# #windows-7 #факс

Вопрос:

Я реализовал программу для отправки факсимильных сообщений. Я использую FAXCOMLib, и он работает, когда я вызываю его в Windows forms. Теперь я хочу вызвать его в службе Windows, и это моя проблема.

Код прост:

             FaxServer faxServer = new FaxServer();
            faxServer.Connect(Environment.MachineName);

            object obj = faxServer.CreateDocument("D:\test.bmp");
            FaxDoc fd = (FaxDoc)obj;

            fd.FaxNumber = "123xxxxx";
            fd.RecipientName = "Tester";
            fd.DisplayName = "TestFax";
            fd.SenderName = "Annadurai";

            int i = fd.Send();

            lp.Debug("Sent"   i.ToString()); // Log fax id 

            faxServer.Disconnect();
  

В обоих случаях код возвращает идентификатор, но в Windows forms факс добавляется в «Факс и сканирование Windows», в службе Windows — НЕТ. Почему? Что я должен сделать, чтобы это заработало?

Я использую Windows 7.

Комментарии:

1. Я думаю, это может быть вызвано тем фактом, что служба windows не имеет пользовательского интерфейса? ЕСЛИ это так, что мне делать, чтобы отправить факс через службу Windows?

2. Никаких исключений не генерируется? во время отладки вы получаете идентификатор после отправки ()?

3. Да, никаких исключений, Send() возвращает идентификатор. Но в исходящих ничего нет :/

4. Да, программирование для Windows Fax sux.

Ответ №1:

Согласно документации, похоже, что FAXCOMLIB работает только в настольных приложениях:

Applies to: desktop apps only

http://msdn.microsoft.com/en-us/library/windows/desktop/ms692375 (v= против 85).aspx

Только настольное приложение — плохое описание, поскольку оно подразумевает что угодно, кроме веб-приложений. У меня есть следующий код, запущенный в консольном приложении, и он работает нормально, поэтому, по-видимому, он считается рабочим столом:

     FaxServer server = new FaxServer();
    server.Connect("");
    FaxDoc document = server.CreateDocument(@"C:RHDSetup.log");
    document.FaxNumber = @"111-111-1111";
    long jobId = document.Send();
  

Комментарии:

1. Будет ли это работать в службе Windows? Мне нужно сделать это в предстоящем проекте.

2. Я не пробовал, но поскольку я смог заставить его работать в консольном приложении, я думаю, вам будет хорошо заставить его работать в службе.