powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Настройки принтера и DEVMODE.
15 сообщений из 15, страница 1 из 1
Настройки принтера и DEVMODE.
    #34038550
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, спасайте!

Никак не могу понять, как вытащить из принтера его настройки - размер и ориентация бумаги, кол-во копий и т.д. С Win32 API знаком очнь плохо. Может, кто по доброте выложит кусок текста с примером заполнения этой самой структуры DEVMODE.
Вот что знаю на данный момент:
1.Получить имя принтера
2.Получить его handle

Заранее благодарен!
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34038613
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл уточнить, что используется PB 10.5
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34039576
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
string printers[]
int rtn, i, nbPrinters
rtn = RegistryKeys &
("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers", &
printers)
nbPrinters = UpperBound(printers)
FOR i = 1 TO nbPrinters
lb_1.addItem(printers )
NEXT
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34039578
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно также из win.ini попробовать
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34041014
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример на Си:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
char cPrinter[MAXBUFFERSIZE]; //--название принтера, это у тебя есть
DOCINFO di;
DEVMODE * pDevMode;
HANDLE hPrinter; //--handle принтера, это у тебя есть
int nSize, i, iLen;
//--HWND hWnd; <-- handle приложения, можно =0

...
	if (!OpenPrinter(cPrinter, &hPrinter, NULL))
		return FALSE;

	//--получение заполненной структуры DEVMODE
	nSize=DocumentProperties(hWnd, hPrinter, cPrinter, NULL, NULL,  0 );
	if(nSize< 0 ) return TRUE;
	pDevMode = (DEVMODE*)new char[nSize];
	if (pDevMode==NULL) return FALSE;
	nSize=DocumentProperties(NULL, hPrinter, cPrinter, pDevMode, NULL, DM_OUT_BUFFER);
	if(nSize< 0 ) return TRUE;

	//-- теперь из DEVMODE можно считать кол-во копий (dmCopies), ориентацию бумаги (dmOrientation), размер бумаги (dmPaperSize)
	//--задание параметров: выбор лотка
	if (bPaperSource){
		pDevMode->dmFields = DM_DEFAULTSOURCE;
		pDevMode->dmDefaultSource=nPaperSource;
	}

	//--задание параметров: установка ориентации листа (вызов функции установки чуть позже)
	if (nOrienttn!=pDevMode->dmOrientation){
		pDevMode->dmFields|= DM_ORIENTATION;
		pDevMode->dmOrientation=nOrienttn;
	}
	ResetDC(hDcPrn, pDevMode) //--передача DEVMODE на принтер
	ClosePrinter(hPrinter);
	delete [] pDevMode;

...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34041090
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, savosin_sergey!
Всё было бы отлично, если бы не запрет на использование внешних несистемных библиотек! Необходимо получить все данные о принтере, используя только РВ.
И это - не олимпиада какая-нибудь.Так желает заказчик.

У меня, кстати, после того, как я вставил вызовы функций win api, постоянно начала вылетать среда разработки, всякий раз при закрытии приложения. Что это, баг или фича такая?
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34041119
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasУ меня, кстати, после того, как я вставил вызовы функций win api, постоянно начала вылетать среда разработки, всякий раз при закрытии приложения. Что это, баг или фича такая?
Это скорее всего кто-то не так описал функции или не корректно выделяет/освобождает память под структуры для них.
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34041268
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas

С Win32 API знаком очнь плохо. Может, кто по доброте выложит кусок текста с примером заполнения этой самой структуры DEVMODE.

Всё было бы отлично, если бы не запрет на использование внешних несистемных библиотек! Необходимо получить все данные о принтере, используя только РВ.

то нужен winapi, то не нужен.. DEVMODE только в winapi. вас не поймёшь
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34041339
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я,возможно, не совсем корректно высказался. Уточняю, что необходимо получить характеристики принтера, используя РВ. Применять же Local External Functions не запрещено, но есть ограничение на использование самописных или сторонних dll, можно вызывать только функции Windows.
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #34043980
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в моём примере все функции стандартные, а поиск по этому форуму по слову DEVMODE поможет найти объявления хотя бы некоторых из них
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Настройки принтера и DEVMODE.
    #36520754
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как изменить настройки принтера: отступ слева, справа, сверху, снизу?
В интернете куча всего, но ничего похожего на Left/Right/Top/Bottom не нашел.
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #36520927
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для датавинды все просто - делаешь через Modify
Код: plaintext
1.
2.
ls_modify = "DataWindow.Print.Margin.Top='"+em_top.text+"' DataWindow.Print.Margin.Bottom='"+em_bottom.text+"' DataWindow.Print.Margin.Left='"+em_left.text+"' DataWindow.Print.Margin.Right='"+em_right.text+"'"
idw_action.modify( ls_modify)
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #36522308
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001,
Мне нужно изменить настройки принтера. К DW это не имеет отношения (я не DW собираюсь распечатывать).
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #36524590
armblg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поковыряйся тут, мож чего найдешь. Импортировать, имхо, не выйдет - т.к. возможны завязки на другие объекты - просто смотри как текст. Если нет опыта работы с API, то трудновато будет. Удачи.
...
Рейтинг: 0 / 0
Настройки принтера и DEVMODE.
    #36524603
armblg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чета файл не прицепляеццо
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Настройки принтера и DEVMODE.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]