Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заменить Default Printer в WinXP 
V
    Опции темы
ProfessorBraz
  Дата 29.1.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.7.2007

Репутация: нет
Всего: нет



Колеги программисты! Сталкнулся с проблемой замены принтера по умолчанию в  WinXP. Короче говоря программа должна печатать на принтер, локальный или сетевой, но не обязательно на тот, который установлен в  WinXP по умолчанию. Никак в сети не найду, как это сделать.  smile Надо получить принтер по умолчанию, сохранить его всторонке, установить др. принтер как принтер по умолчанию, распечатать, и востановить предыдущий. Помогите, плиз. Очень срочно и очень надо, как всегда вчера :( . smile 
Зарание спасибо.
PM MAIL   Вверх
dumb
Дата 30.1.2008, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



если печать производится через TPrinter, и нужно сменить принтер внутри программы, то поиск по PrinterIndex, SetPrinter...
если же нужно менять дефолтный принтер системы, то:
SetDefaultPrinter
How to retrieve and set the default printer in Windows
PM MAIL   Вверх
ProfessorBraz
Дата 30.1.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.7.2007

Репутация: нет
Всего: нет



Первая часть вопроса решилась при помощи SetDefaultPrinter. Спасибо за совет. Но осталась не решенная часть задачи, а именно: На форме расположен объект TCppWebBrowser из которого и производится печать последством метода 
CppWebBrowserPrint->ControlInterface->ExecWB(Shdocvw_tlb::OLECMDID_PRINT, Shdocvw_tlb::OLECMDEXECOPT_DONTPROMPTUSER, &vIn, &vOut); Другая форма, не перегружая прилдожение изменяет принтер по умолчанию. Причем в окне принтеров это прослеживается. Но объект TCppWebBrowser производит печать по предыдущему принтеру. Если программу перегрузить, то все ок. Как добиться того, чтобы без перезагрузки программы объект TCppWebBrowser знал куда ему осуществлять печать. В Эксплорере это както реализовано, т.к. вызывая контекстное меню принтера по правой кнопки мыши в диалоговом окне автоматически подсвечивается дефолтный принтер. А в объекте TCppWebBrowser нет или ему надо както сообщить. КАК? smile 
    
PM MAIL   Вверх
dumb
Дата 30.1.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(ProfessorBraz @  30.1.2008,  19:24 Найти цитируемый пост)
или ему надо както сообщить. КАК? 

если б заглянул во вторую ссылку, то увидел бы решение:
Код
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"windows", SMTO_NORMAL, 1000, NULL);



PM MAIL   Вверх
ProfessorBraz
Дата 30.1.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.7.2007

Репутация: нет
Всего: нет



Это сообщение я посылаю но похоже TCppWebBrowser его не видит. smile 
PM MAIL   Вверх
ProfessorBraz
Дата 31.1.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.7.2007

Репутация: нет
Всего: нет



Помощь нужена, коллеги! 
Ни
SendMessageTimeout(this->Handle, WM_SETTINGCHANGE, 0, (LPARAM)"windows", SMTO_NORMAL, 1000, NULL);
ни
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"windows", SMTO_NORMAL, 1000, NULL);
не помогают. smile 
PM MAIL   Вверх
dumb
Дата 2.2.2008, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



между прочим, IE при использовании тулбар-кнопки с изображением принтера(ну то бишь то же, что и у тебя - без диалога) также не учитывает факт смены дефолтного принтера. так что, видимо, нужно искать другие пути решения.
PM MAIL   Вверх
ProfessorBraz
Дата 7.2.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.7.2007

Репутация: нет
Всего: нет



Ну раз сам ИЕ не замечает смены принтера, тогда отбой. Спасибо за участие! Аватарка у тебя прикольнаяsmile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.