Функция задания очереди печати принтера Windows не работает для Windows-7? - PullRequest
6 голосов
/ 30 мая 2011

Я обновляю наше приложение «Мониторинг принтера». Ранее это приложение успешно работало на сервере Windows 2000. Теперь мы перешли на сервер Windows 7. На Windows 7 происходит сбой нашего приложения «Монитор печати». При отладке я обнаружил, что наша функция SetJob выдает следующее исключение:

Неверный параметр.

Кто-нибудь знает что-нибудь об этом?

Вызов функции:

SetJob(
    mhPrinter,
    midJob,
    0,
    IntPtr.Zero,
    PrintJobControlCommands.JOB_CONTROL_PAUSE) 'Here exception is thrown

Spooler API, который мы используем:

<DllImport("winspool.drv", EntryPoint:="SetJob", _

SetLastError:=True, CharSet:=CharSet.Ansi, _

ExactSpelling:=False, _

CallingConvention:=CallingConvention.StdCall)> _

Public Function SetJob _

(<InAttribute()> ByVal hPrinter As IntPtr, _

<InAttribute()> ByVal dwJobId As Int32, _

<InAttribute()> ByVal Level As Int32, _

<InAttribute()> ByVal lpJob As IntPtr, _

<InAttribute(), MarshalAs(UnmanagedType.U4)> ByVal dwCommand As PrintJobControlCommands _

) As Boolean

1 Ответ

0 голосов
/ 30 декабря 2015

Пожалуйста, запустите цикл, как должна быть построена функция и как называются парсметры:

http://www.pinvoke.net/default.aspx/winspool.setjob

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

...