Почему DOS-программа на 16 битов не печатает к сетевому ресурсу

У меня есть приложение DOS (работающий на Службах удаленных рабочих столов, Стандарт Сервера Победы 2008 года 6,06002 SP2). Я должен распечатать к своему общему принтеру на моем компьютере. net use lpt2: \\mycomputer\myprn. Когда я "копирую file.txt lpt2", он работает безупречно. Когда мое приложение печатает, оно показывает, что принтер не найден. Приложение DOS указывает на lpt2 и использующий hppcl. Я смог распечатать к своему собственному принтеру, когда приложение DOS находилось на моей машине (Win7x32). Какие-либо подсказки?

5
задан 26 December 2014 в 19:16
4 ответа

Чувак, мне очень жаль. Был там, сделал это.

Отображается ли принтер, когда вы используете net use ?

Мне удалось получить ужасную 16-битную программу DOS в студенческой лаборатории для печати с net use lpt2 \\ servername \ printer . Я также получил ужасную программу, которая не принимала порты принтера Jetdirect / TCPIP, но действительно принимала сетевые ресурсы для печати, разделяя принтер как \\ 127.0.0.1 \ printername $ и печать к этому. Другими словами: убедитесь, что принтер действительно отображается с net use , убедитесь, что локальный принтер является общим (только для вашего локального пользователя, если вы действительно не хотите его использовать. выходит за рамки вашей ужасной 16-битной программы, и если вы назовете ее с помощью $, она будет скрыта), и используйте \\ 127.0.0.1 в качестве сервера, если вам нужно.

Удачи!

4
ответ дан 3 December 2019 в 01:06

Слишком много людей путают "символьное" или "консольное" приложение с "DOS". Если у вас есть приложение "DOS", работающее на Server 2008R2, то, вероятно, у вас есть 32-битное символьное приложение.

Если бы это было 16-битное приложение DOS, вы не смогли бы запустить его на Server2008R2, который является 64-битным, и единственное, что он знает, что делать с 16-битными приложениями, - это выдать ошибку.

Теперь, если это приложение пытается использовать 16-битные процедуры печати, плохая новость в том, что это не сработает, по крайней мере, пока приложение работает на Server 2008R2.

4
ответ дан 3 December 2019 в 01:06

У меня действительно аналогичная установка из-за определенного производственного программного обеспечения ...

Обычно виновником является то, что приложения ожидают, что принтер будет в списке локального компьютера.Другая причина заключается в том, что приложение ожидает, что принтер будет иметь очень конкретное имя, иначе оно не найдет его. Не зная программного обеспечения, трудно точно сказать, в чем проблема, но я бы начал с добавления общего принтера к вашему серверу TS и назвал его точно , как он находится на вашем локальном компьютере - затем попробуйте распечатать, используя Настройка порта lpt.

3
ответ дан 3 December 2019 в 01:06

Я могу предложить альтернативу, которую мы используем для печати из широко используемой 16-битной программы DOS в моей компании: A.N.D. Бесплатное приложение DOSPrint от технологий отлично работало у нас последние десять лет. Несмотря на то, что исходный код закрыт, он составляет всего 63 КБ, работает как общесистемная служба или приложение для каждого пользователя, перенаправляет поток LPT из подсистемы DOS в любую очередь печати Windows, включая общие принтеры, и имеет либеральную лицензию («бесплатно для общего использования. без ограничений »). Проверьте их ссылку «Загрузки / Бесплатное программное обеспечение».

Другой вариант - если у вас есть опыт программирования - это написать свой собственный тривиальный перенаправитель с LPT на что угодно. В .NET вы будете использовать вызовы P / Invoke для QueryDosDevice и DefineDosDevice для перенаправления LPT из любого приложения DOS в файл или именованный канал:

<DllImport("kernel.dll", CharSet:=CharSet.Unicode, entrypoint:="DefineDosDeviceW")>
Public Shared Function DefineDosDevice(ByVal dwFlags As UInt32, ByVal lpDeviceName As String, ByVal lpTargetPath As String) As Boolean
End Function
0
ответ дан 3 December 2019 в 01:06

Теги

Похожие вопросы