vba ShellExecute печать изображения без диалога печати - PullRequest
0 голосов
/ 07 марта 2019

Я использую ShellExecute для печати своего изображения.

Declare PtrSafe Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long

Public Sub PrintFile(ByVal strPathAndFilename As String)

    Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, vbNullString, 0)

End Sub

Sub PrintImg()
    PrintFile "C:\Users\Administrator\Desktop\Test.png"
End Sub

Но откроется диалоговое окно, как показано ниже

enter image description here

Можно ли напечатать изображение без этого диалога?

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

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 07 марта 2019

Это невозможно (поскольку вы полагаетесь на внешнее приложение, которое просто видит «печать» как глагол, то, что оно будет делать, зависит от этого приложения), но печать в Windows похожа на запись в контекст устройства.

Подход к изменению обработчика по умолчанию также совершенно неправильный, поскольку вы никогда не можете быть уверены, что стороннее приложение будет делать в будущем, если оно не имеет документированного поведения (обычно использование стороннего приложения требует некоторого хорошо документированного автоматизация которой у краски нет).

Вы можете начать с здесь , чтобы посмотреть, и пример MS в здесь - более быстрый пример использования GDI +. Здесь - это образец Visual Basic.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...