Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Настройки принтера и DEVMODE. / 15 сообщений из 15, страница 1 из 1
06.10.2006, 17:08
    #34038550
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Коллеги, спасайте!

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

Заранее благодарен!
...
Рейтинг: 0 / 0
06.10.2006, 17:29
    #34038613
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Забыл уточнить, что используется PB 10.5
...
Рейтинг: 0 / 0
07.10.2006, 17:03
    #34039576
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
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
07.10.2006, 17:05
    #34039578
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Можно также из win.ini попробовать
...
Рейтинг: 0 / 0
09.10.2006, 11:29
    #34041014
savosin_sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Вот пример на Си:
Код: 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
09.10.2006, 11:47
    #34041090
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Спасибо, savosin_sergey!
Всё было бы отлично, если бы не запрет на использование внешних несистемных библиотек! Необходимо получить все данные о принтере, используя только РВ.
И это - не олимпиада какая-нибудь.Так желает заказчик.

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

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

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

то нужен winapi, то не нужен.. DEVMODE только в winapi. вас не поймёшь
...
Рейтинг: 0 / 0
09.10.2006, 12:48
    #34041339
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Я,возможно, не совсем корректно высказался. Уточняю, что необходимо получить характеристики принтера, используя РВ. Применять же Local External Functions не запрещено, но есть ограничение на использование самописных или сторонних dll, можно вызывать только функции Windows.
...
Рейтинг: 0 / 0
10.10.2006, 12:37
    #34043980
savosin_sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
в моём примере все функции стандартные, а поиск по этому форуму по слову DEVMODE поможет найти объявления хотя бы некоторых из них
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
15.03.2010, 13:32
    #36520754
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Как изменить настройки принтера: отступ слева, справа, сверху, снизу?
В интернете куча всего, но ничего похожего на Left/Right/Top/Bottom не нашел.
...
Рейтинг: 0 / 0
15.03.2010, 14:08
    #36520927
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Для датавинды все просто - делаешь через 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
16.03.2010, 08:48
    #36522308
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
spas2001,
Мне нужно изменить настройки принтера. К DW это не имеет отношения (я не DW собираюсь распечатывать).
...
Рейтинг: 0 / 0
16.03.2010, 18:43
    #36524590
armblg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
Поковыряйся тут, мож чего найдешь. Импортировать, имхо, не выйдет - т.к. возможны завязки на другие объекты - просто смотри как текст. Если нет опыта работы с API, то трудновато будет. Удачи.
...
Рейтинг: 0 / 0
16.03.2010, 18:48
    #36524603
armblg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки принтера и DEVMODE.
чета файл не прицепляеццо
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Настройки принтера и DEVMODE. / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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