|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
|
|
Выяснить сколько доступных для печати принтеров и их марку14.09.2012, 16:54. Показов 9666. Ответов 19
Метки нет (Все метки)
0
|
|
| 14.09.2012, 16:54 | |
|
Ответы с готовыми решениями:
19
Список доступных принтеров Получить список доступных принтеров Правильная настройка устаревших принтеров для печати из Windows Server 2008 terminal Server |
|
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
|
|
| 14.09.2012, 22:06 | |
|
0
|
|
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
|
||||||
| 14.09.2012, 23:23 [ТС] | ||||||
|
спасибо, смотрю, порылся у себя в записях, нашёл
ActivePrinter = "\\NAME\Printer" Имя принтера нужно указывать вместе с путём и с точностью до символа. В результате выполнения этой команды принтер по умолчанию будет переназначен Что написал сам не знаю, никто не знает, что имелось ввиду? Добавлено через 11 минут ну нет, у меня формы пока так пробую
ошибка 13 Tipe mismatch ??
0
|
||||||
|
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
|
||||||
| 15.09.2012, 07:26 | ||||||
Сообщение было отмечено как решение
Решение
Ципихович Эндрю, пора бы узнать, как выводятся массивы!
3
|
||||||
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
|
||
| 15.09.2012, 09:18 [ТС] | ||
|
но тут ещё надо оставить в списке только те, которые "Готов" в панели управления, можно? как?
0
|
||
|
|
|||||||||||
| 17.09.2012, 00:38 | |||||||||||
Сообщение было отмечено как решение
Решение
Ципихович Эндрю, Вы хотели спросить - включен или нет?
(в Win7 и др. версиях терминология немного отличается (у меня пишет "Свободен", при чем даже когда отключен. Этот статус напрямую связан с состоянием печати). Вот описание WMI-класса на MSDN http://msdn.microsoft.com/en-u... s.85).aspx (как то через API мне это написать сложновато). Подлатал. Итого: 1) Коротко самые основные параметры:
Также интересен "Attributes", если его распарсить согласно числовым константам. А вот сравнительный анализ атрибутов "Реального" и "Виртуального" принтера (3 раза клацните, чтобы увидеть в нормальном качестве). Делайте выводы.
3
|
|||||||||||
|
призрак
|
||||||||||||||||
| 22.09.2012, 12:00 | ||||||||||||||||
Сообщение было отмечено как решение
Решение
у кого много-много принтеров,
![]() потестируйте?
пс. считаю, что надо бы дать ссылку на сайт автора, но, емнип,
3
|
||||||||||||||||
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
|
||||||||||||||||
| 22.09.2012, 14:18 [ТС] | ||||||||||||||||
|
спасибо!!!, выглядит хоть не страшно, про товарища
445 Object doesn't support this action Эта команда не поддерживается указанным объектом ???
0
|
||||||||||||||||
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
|
|
| 22.09.2012, 15:46 [ТС] | |
|
0
|
|
|
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
|
|
| 22.09.2012, 16:36 [ТС] | |
|
0
|
|
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|
| 15.03.2013, 22:06 | |
|
Существуют несколько видов портов.
С помощью библиотеки "winmgmts" я получил порт принтера: "XPSPort:". А программа "Excel" выдаёт вот такое: "Microsoft XPS Document Writer (Ne00:)". Т.е. получается средствами библиотеки "winmgmts" нельзя получить нужное название порта для того, чтобы печатать через "Excel"?
0
|
|
|
|
|
| 15.03.2013, 22:28 | |
|
У меня Excel выдает именно порт "XPSPort:"
P.S. "winmgmts" - это служба или в данном случае моникер WMI в составе запроса (через него мы получаем доступ к инструментарию). Порт вида Ne00: нужен для печати по сети.
0
|
|
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
||||||
| 15.03.2013, 22:34 | ||||||
|
Dragokas, вот так я получил порт из "Excel":
Но хотелось бы всё-так получить простое решение, чтобы менять активный принтер в программе "Excel". Это нужно для того, чтобы после выбора принтера, перед печатью проверить: не изменились ли разрывы страниц в Excel-книге, т.к. Excel-книга подстраивается под принтер по умолчанию или под принтер, на который печатали последний раз. Для одного принтера разрывы страниц будут находиться в одном месте, а для другого - в другом (такое редко бывает, но бывает).
0
|
||||||
|
|
||||||
| 16.03.2013, 02:14 | ||||||
Сообщение было отмечено как решение
Решение
Скрипт, в нужном Вам виде информацию возвращает API-функция EnumPrinters.
Готовая реализация находится в теме Изменение настроек выбранного принтера Excel из VBA Модуль называется PrinterFind_EnumPrinters. Тестовый запуск - через Private Sub Test() Добавлено через 34 минуты Да, так и есть PrintOut может работать без указания порта.
Возможно, при переразметке страницы имеет смысл установить свойство Preview (предварительный просмотр) в true. В любом случае порядок нумерации сетевых портов идет в том же порядке, как и получение списка принтеров через WMI. Т.е. Вы можете смело завести самостоятельно счетчик с 0, например, в моем коде (пост № 6) строки №№ 27,28,36,37 закомментировать и получите тоже самое значение, добавив префикс Ne. application.activeprinter в роле Write-свойства наоборот может принимать только имя принтера с портом вида NeXX:
0
|
||||||
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|||||||||||||||||||
| 16.03.2013, 15:14 | |||||||||||||||||||
|
Пункт 1
Кликните здесь для просмотра всего текста
API-функция "EnumPrinters" возвращает данные в виде числа (или чисел). Поэтому при использовании API-функции "EnumPrinters", нужно применить ещё две API-функции, чтобы расшифровать эти числа. Кроме того, функция "EnumPrinters" возвращает имя порта в таком же виде, как и библиотека "WinMgmts". Т.е. для моей задачи API-функция "EnumPrinters" не подходит.
В этом примере: Изменение настроек выбранного принтера Excel из VBA - автор темы показывает только как получить список имён принтеров с помощью API-функции "EnumPrinters" и не показывает, как получить список портов принтеров. Имя порта в нужном виде для программы "Excel" можно получить с помощью API-функции "GetProfileString". Может быть это единственный вариант получения имя порта принтера в нужном для программы "Excel" виде. Только "GetProfileString" является старой и осталась в "Windows" для совместимости с 16-разрядными версиями "Windows". Я прихожу к выводу, что VBA-Excel-команда "Activeprinter" использует старый способ доступа к операционной системе "Windows". VBA-Excel-команда "Activeprinter" берёт данные из "Windows" с помощью файла инициализации "WIN.INI" (не знаю, что это такое). Но в новых версиях "Windows" уже не используется файл инициализации "WIN.INI". Вместо файла инициализации "WIN.INI" используется Windows-реестр. Пункт 2 Кликните здесь для просмотра всего текста
опишите более подробно, как можно использовать то, что вы предлагаете, в данной задаче?
Напомню задачу: после смены активного принтера, нужно проверить: не изменилось ли расположение разрывов страниц. Ещё раз напомню, что положение разрывов страниц привязано к активному принтеру. Пункт 3 Кликните здесь для просмотра всего текста
Вот получаю имя и порт принтера:
![]() Как мне, используя ваше предложение, заменить имя порта "DOP7:" на имя порта со словом "Ne"? Пункт 4 Алгоритм установки активного принтера в программе "Excel" без использования API-функций и не указывая имя порта. Кликните здесь для просмотра всего текста
Может быть по такому алгоритму попробовать менять в программе "Excel" активный принтер без использования API-функций и не указывая имя порта принтера (имя порта принтера в программе "Excel" отличается от имени порта, который можно увидеть где-нибудь в другом месте).
0
|
|||||||||||||||||||
|
|
||||||||||||||||
| 21.03.2013, 03:13 | ||||||||||||||||
|
1) Да, верно. Нужен GetProfileString. Исходник Bagir-а сбил с толку. Там Sub Test был привязан к другому модулю - "PrinterFind_GetProfileString", в котором и написан пример с этой API для получения портов.
WIN.INI - это файл в c:\windows. В новых системах все еще присутствует для совместимости. 2) Свойство Preview. Код выше. Либо установить свойство:
3) Был неправ. Там специфические правила назначений портов. Через счетчик не получится. 4) Можно. Требуется эксперимент. Как Вы думаете, переразметка произойдет автоматически? Ведь этот код идет в противовес Вашему желанию все проверить перед началом печати. Пункт 5. Честно, никогда еще не сталкивался с явлением, когда разметка меняется при печати на разных принтерах. Думаю, следует поставить эксперимент, когда это происходит и какие условия нужно соблюсти: 1) войти в режим разметки при установленном новом активном принтере достаточно ли? 2) а если установлена пользовательская разметка для некоторых листов? 3) если выставлен не 100% масштаб...
0
|
||||||||||||||||
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|||
| 21.03.2013, 07:37 | |||
|
По пункту 2
Такой алгоритм я и придумал: сохраняю данные о разрывах страниц в массивах, если пользователь изменяет принтер, то собираю новые данные о разрывах страниц. Затем сравниваю два массива. По пункту 4 Кликните здесь для просмотра всего текста
если свойства принтеров сильно отличаются (например, большая разница между виртуальными и реальными принтерами), то переразметка может произойти. Этот код не идёт в противовес. Ведь при распечатки пустого листа ничего не произойдёт. Просто закрываем новую книгу и делаем то, что нужно. Только вдруг что-то не так пойдёт и макрос будет печатать не на тот принтер - в этом риск.
По пункту 5
Кликните здесь для просмотра всего текста
Чтобы столкнуться с этим явлением, нужно:
Переразметка происходит автоматически при выборе принтера, а не при изменении настроек программы "Excel". Так запрограммировано программистами из организации "Microsoft", что книги-Excel подстариваются под принтер по умолчанию. Поэтому у пользователя выбора нет: хочет пользователь или нет, книга-Excel будет подстраиваться под принтер по умолчанию, даже если пользователь ничего и никогда не печатает. Может быть есть ещё и другие настройки, которые влияют на разметку Excel-книг.
0
|
|||
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|
| 21.03.2013, 07:51 | |
|
Я выложил книгу, с помощью которой можно посмотреть, что разметка Excel-книги меняется при смене принтера.
Для тестирования нужны два виртуальных принтера (они бесплатные): "doPDF v7" и "Microsoft XPS Document Viewer". Если вы откроете книгу, что я выложил, и будете изменять принтер (в "Excel 2010" принтер можно так изменить: вкладка Главная - Печать - Принтер - выберие принтер - вкладка Главная), то количество страниц, которое должно распечаться, будет меняться (в режиме "Страничный" синие линии будут меняться).
1
|
|
| 21.03.2013, 07:51 | |
|
Помогаю со студенческими работами здесь
20
Обеспечение печати 2 принтеров Как получить список принтеров и очистить очередь печати выбранного принтера? Выяснить сколько литров молока в месяц необходимо для зверофермы Для двух заданных чисел выяснить, какое из них больше и на сколько Для каждого из чисел, входящих в последовательность, выяснить, сколько раз оно в нее входит Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|