Свойства принтера Silverlight Com-Interop и вне браузера - PullRequest
2 голосов
/ 05 августа 2011

Мне нужен доступ к принтеру, чтобы узнать, активен ли он, и есть ли бумага.

Я использую Silverlight 4 из коробки с повышенным доверием.

На данный момент у меня есть:

 string cFileName = "temp.txt";
 string cAction = "print";
 using (dynamic fso = AutomationFactory.CreateObject(@"Scripting.FileSystemObject"))
        {
            dynamic file = fso.CreateTextFile(cFileName, true);
            file.WriteLine("First line text");
            file.WriteLine("second line text");
            file.Close();
        }
  //Print
 dynamic shell = AutomationFactory.CreateObject("Shell.Application");
 shell.ShellExecute(cFileName, "", "", cAction, 1);

Я использую временный файл txt для создания своей страницы печати. ​​

Кстати, можно ли отправить строку или что-то подобное прямо на принтер?

С этим кодом я не могу видеть, активен ли принтер, или видеть, были ли операции успешно выполнены.

Я видел, что я могу использовать в C # using System.Drawing.Printing; или using System.Management;, но я думаю, что это невозможно с Silverlight.

Несколько советов?

- EDIT -

Я нахожу решение. Прямо сейчас я использую класс Win32_Printer для получения информации с принтера.

string name;
int printerStatus;
int detectedErrorState;

using (dynamic locatorService = AutomationFactory.CreateObject("WbemScripting.SWbemLocator"))
{
    locatorService.Security_.ImpersonationLevel = 3;
    locatorService.Security_.AuthenticationLevel = 4;
    var wmiService = locatorService.ConnectServer(".", @"root\cimv2");

    using (dynamic result = wmiService.ExecQuery("Select * from Win32_Printer where Default = True"))
    {
        name = result.ItemIndex(0).Name;
        printerStatus = result.ItemIndex(0).PrinterStatus;
        detectedErrorState = result.ItemIndex(0).DetectedErrorState;
    }
}

ссылка: http://msdn.microsoft.com/en-us/library/aa394363(v=VS.85).aspx

Теперь я пытаюсь печатать без временного файла file.txt.

Я хочу печатать прямо с кода на принтер.

Если у кого-то есть совет, дайте мне знать.

...