Можно ли как-то понять, что возвращает API запущенная через rundll32.exe? - VB

Узнай цену своей работы

Формулировка задачи:

Задача - печать файла (пусть будет картинка "C:\path\mypict.tif") на заданный принтер "MyPrinterName".
Решение #1. Метод "printto". Реализация:

Метод имеет недостатки. В реестре может не оказаться ключа
HKEY_CLASSES_ROOT\TIFImage.Document\shell\printto\command

И на 8-ке/8.1 в 99 случаев из 100 печать не сработает.
Но shimgvw.dll есть везде и всегда, поэтому правильнее
Print an image using ShellExecute (CSShellPrintImageWithShellExecute)

Решение #2. использовать shimgvw.dll в лоб

:

Проблема. ret всегда больше 32, даже если печать не удалась.
А мне надо знать результат НАПЕЧАТАЛИ УСПЕШНО либо ОШИБКА. Как узнать?


Косвенно: делаю проверку на GDI-совместимость.
Но иконки (ico) например на GDI проходят, а на XP ImageView_PrintTo их не печатает. Т.е. такая проверка замороченная и не точная.
Пытался вызывать ImageView_PrintTo декларируя ее как обычную API -должна же она что-то возвращать - ничего не получается-не работает, только через rundll32.exe.
Т.е. printto не надежен в плане гарантии печати (но ошибку в случае не печати ShellExecute возвращает четко).
А здесь печатает четко (то что должен печатать), но не возвращает результат (где гарантия что в ф-цию не подсунут текстовуху переименованную в jpg).
Как выкручиваться?

Решение задачи: «Можно ли как-то понять, что возвращает API запущенная через rundll32.exe?»

textual
Листинг программы
Public Declare Function ImageView_PrintTo Lib "shimgvw.dll" Alias "ImageView_PrintToA" _
 (ByVal hwnd As Long, ByVal hinst As Long, ByVal lpszCmdLine As String, ByVal nCmdShow As Long) As Long

  ImageView_PrintTo  0, 0, "/pt " & Chr(34) & "C:\path\mypict.tif" & Chr(34) & " " & Chr(34) & "MyPrinterName" & Chr(34), 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы