WebBrowser.Print() дождитесь завершения. .СЕТЬ

Я использую элемент управления WebBrowser в VB.NET и вызываю метод Print(). Я распечатываю с помощью PDF-принтера, и когда вызывается Print(), он не запускается сразу (он ждет, пока не завершит выполнение кода для всего Sub или блока.

Мне нужно убедиться, что файл, который я печатаю, также завершен, и продолжить процесс с этим файлом, поэтому я хотел бы печатать по требованию и получать некоторый статус, когда операция завершена. Я пробовал использовать printDocument и обрабатывать без везения.

У кого-нибудь есть идеи?


person Matt    schedule 18.03.2010    source источник


Ответы (2)


Проверьте событие PrintTemplateTeardown базового неуправляемого объекта WebBrowser. Иногда это событие запускается несколько раз, но, надеюсь, это укажет вам правильное направление. Вам нужно добавить ссылку на Microsoft Internet Controls.

Private Sub Print()
    AddHandler DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser).PrintTemplateTeardown, AddressOf PrintDone
    WebBrowser1.Print()
End Sub
Private Sub PrintDone(ByVal obj As Object)
    Trace.WriteLine("printed")
    RemoveHandler DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser).PrintTemplateTeardown, AddressOf PrintDone
End Sub
person Chris Haas    schedule 18.03.2010

Лучше всего получить дескриптор вашей «коллекции заданий печати» для вашего принтера по умолчанию и убедиться, что количество заданий = 0

вот так в vb.net:

    Dim intprint As Integer = Nothing

    retry2:
    intprint = GetPrintJobsCollection(printerinuse)
    If Not intprint = 0 Then
        System.Threading.Thread.Sleep(1000)
        GoTo retry2
    End If
    'do what you want to do after print completes here
person jasondemon    schedule 24.04.2011