On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.09.05 08:39. Заголовок: Когда не включен сетевой принтер


Программа перед формированием отчета опрашивает параметры принтера,
и, если компьютер, к которому он подключен, еще не включен, возникает gpf
Какой функцией (может из winapi) определить, что в системе нет установленных
принтеров ?
Даже PrnGetName() дает gpf
Клиент такого не понимает и не любит, программа не работает и все тут !


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


постоянный участник


Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.09.05 11:20. Заголовок: Re:


Pasha, можете мне выслать исходный код функции PrnGetName(), я посмотрю его?
У меня лишь FW 2.1c, а вы, как я понимаю, работаете с более поздней версией.

vlad.moscow@mail.ru


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.09.05 14:03. Заголовок: Re:


Я посмотрел сырцы - там с 2.1 ничего не менялось
Вот текст:

CLIPPER PRNGETNAME( PARAMS ) // () --> cPrinter
{
LPDEVNAMES lpDevNames;

PrinterInit();

lpDevNames = (LPDEVNAMES) GlobalLock( pd.hDevNames );

_retc( ( LPSTR ) lpDevNames + lpDevNames->wDeviceOffset );

GlobalUnlock( pd.hDevNames );
}

и PrinterInit:

static void PrinterInit( void )
{
if( ! bInit )
{
bInit = TRUE;
_bset( ( char * ) &pd, 0, sizeof( PRINTDLG ) );
pd.lStructSize = sizeof( PRINTDLG );
pd.hwndOwner = GetActiveWindow();
pd.Flags = PD_RETURNDEFAULT ;
pd.nMinPage = 1;
pd.nMaxPage = 65535;
PrintDlg( &pd );
}
}

а pd - это static - структура

static far PRINTDLG pd;
static far BOOL bInit = FALSE;

Я уже нашел функцию: GetPrintDefault(), которая, если принтер выключен,
возвращает 0. Это и буду анализировать

Отбой, всем спасибо


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.09.05 18:14. Заголовок: Re:


2 Pasha: если припрёт, то могу показать код, "добывающий" название установленного принтера -- в win9x и в winnt/2k/xp необходимо пользоваться разными функциями.. оно у меня работает в "печаталке" rec3p.exe

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 332
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.09.07 21:42. Заголовок: Re:


_sergey пишет:

 цитата:
если припрёт, то могу показать код, "добывающий" название установленного принтера -- в win9x и в winnt/2k/xp необходимо пользоваться разными функциями.. оно у меня работает в "печаталке"



А как это реализовать на чистом хХарборе ???
Приперло !!! Дайте пожалуйста этот код ....
И подскажите как получить список всех принтеров установленных на компе.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 28
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.09.07 21:54. Заголовок: Re:


Andrey пишет:

 цитата:
А как это реализовать на чистом хХарборе ???
И подскажите как получить список всех принтеров установленных на компе.



GetDefaultPrinter() Retrieves the name of a computer's default printer.
GetPrinters() Retrieves information about available printers.
PrinterExists() Checks if a particular printer is installed.
PrinterPortToName() Retrieves the name of the printer connected to a printer port.
PrintFileRaw() Prints a file to a Windows printer in RAW mode.

Сам я использовал первые две правда... Работают. :)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 29
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.09.07 21:56. Заголовок: Re:


ЗЫ: мы, кажись, не в тему. Базар про ФайвВин.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7327
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.04.21 15:34. Заголовок: Pasha пишет: Програ..


Pasha пишет:

 цитата:
Программа перед формированием отчета опрашивает параметры принтера,
и, если компьютер, к которому он подключен, еще не включен, возникает gpf


Паша как решил вопрос ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4016
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.04.21 14:20. Заголовок: Это же было 16 лет н..


Это же было 16 лет назад. Сейчас посмотрел код - да, анализирую getprintdefault, и если там 0 - отрубаю средства печати

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7328
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.04.21 19:39. Заголовок: Pasha Я так понял п..


Pasha
Я так понял просто её в Harbour не портировать.....
Пока обошелся WIN_PRINTERSTATUS на сетевом принтере если сеть не доступна
или сам принтер , то выдает 33554432
А вот на локальном всегда НОЛЬ даже если он выключен :)
Печаль

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 4017
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.04.21 08:05. Заголовок: Можно сделать такой ..


Можно сделать такой аналог:

#include "hbapi.h" 
#include <Windows.h>

HB_FUNC( PRNDEFAULTNAME )
{
PRINTDLG pd;

LPDEVNAMES lpDevNames;
LPDEVMODE lpDevMode;

memset( ( char * ) &pd, 0, sizeof( PRINTDLG ) );
pd.lStructSize = sizeof( PRINTDLG );
pd.hwndOwner = GetActiveWindow();
pd.Flags = PD_RETURNDEFAULT ;
pd.nMinPage = 1;
pd.nMaxPage = 65535;
PrintDlg( &pd );

if( pd.hDevNames )
{
lpDevNames = (LPDEVNAMES) GlobalLock( pd.hDevNames );

hb_retc( ( LPSTR ) lpDevNames + lpDevNames->wDeviceOffset );

GlobalUnlock( pd.hDevNames );
}
else
hb_retc( "" );
}


Правда выключенный локальный принтер так тоже не ловится. Но задача меня была другая - ловить ситуацию, когда принтера по умолчанию нет. А если принтер выключен, но его параметры опрашиваются и задание на печать формируется - то все ok

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7331
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.04.21 11:54. Заголовок: Pasha Попробую спас..


Pasha
Попробую спасибо

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1659
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.04.21 19:39. Заголовок: Dima пишет: Я так п..


Dima пишет:

 цитата:
Я так понял просто её в Harbour не портировать.....



А win_PrinterGetDefault() из hbwin не подходит?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7332
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.04.21 19:51. Заголовок: Петр пишет: А win_P..


Петр пишет:

 цитата:
А win_PrinterGetDefault() из hbwin не подходит?


Подходит , в качестве определения дефолтного принтера. Паша выложил
в принципе тоже самое.
Речь шла о готовности принтера.......

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 335
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет