Смена принтера по умолчанию и Wordpad
От: Аноним  
Дата: 29.04.14 07:45
Оценка:
Спинным мозгом чувствую, что пишу не туда, но все же...

Есть программа на C++/MFC, она время от времени хочет что-то печатать на принтере. Печатает она хитро: формирует RTF и дальше через shell дает команду операционной системе на печать этого документа. Операционная система запускает ту программу, кот. ассоциирована с расширением .RTF, и дает ей команду на печать, которую та с удовольствием выполняет. Если же печатать надо НЕ на принтере по умолчанию, я в программе сначала переключаю принтер по умолчанию на нужный, потом отдаю команду на печать, дожидаюсь окончания процесса и потом опять переключаю принтер по умолчанию взад. У 99% пользователей все работает.

Проблема возникает в экзотическом случае: если печатать надо не на принтере по умолчанию, и если обработчиком RTF в системе назначена "странная" программа, например, WordPad. В этом случае WordPad не видит переключения принтера по умолчанию и печатает на тот принтер, который был принтером по умолчанию до переключения.

Переключение принтера по умолчанию в системе происходит (я проверял), с MSWord и OpenOffice вся эта схема работает без проблем, а вот Wordpad (и еще несколько программ) сбоит таким вот странным образом Пробовал ставить задержу на 10 секунд после переключения принтера — не лечит; если же прогонять эту процедуру под отладчиком, то принтер переключается нормально и WordPad после этого печатает туда, куда надо. Если в этой сессии операционной системы Wordpad хоть раз переключился нормально, то дальше он печатает документы на правильном (на том, на котором надо) принтере без проблем; после перезагрузки компьютера и принтера все возвращается на круги своя.

Никто не знает, как бороть?
Re: Смена принтера по умолчанию и Wordpad
От: Carc Россия https://vk.com/gosha_mazov
Дата: 29.04.14 07:59
Оценка:
А>Никто не знает, как бороть?
Разослать WM_SETTINGCHANGE не оно?

SendNotifyMessage(HWND_BROADCAST,WM_SETTINGCHANGE,...)
Aml Pages Home
Re[2]: Смена принтера по умолчанию и Wordpad
От: Аноним  
Дата: 29.04.14 11:51
Оценка:
Здравствуйте, Carc, Вы писали:

А>>Никто не знает, как бороть?

C>Разослать WM_SETTINGCHANGE не оно?

Гм... Спасибо, попробую, но, мне кажется, не оно: Вордпад на момент смены принтера по умолчанию не запущен. То есть он этого мессажа просто не получит
Re: Смена принтера по умолчанию и Wordpad
От: ononim  
Дата: 29.04.14 19:20
Оценка:
Чем переключаете дефолтовый принтер?
Гдето на третьем уровне медитации моя задница почуствовала вероятность того, что проблема вызвана wow64 редирекшеном реестра (если винда — 64битная то ваша софтина наверное 32хбитная, а вордпад — явно 64хбитный). Проверьте на всякий случай этот вариант. Моя задница иногда не ошибается.
Как много веселых ребят, и все делают велосипед...
Re[2]: Смена принтера по умолчанию и Wordpad
От: Аноним  
Дата: 30.04.14 12:30
Оценка: 1 (1) :)
Здравствуйте, ononim, Вы писали:

O>Чем переключаете дефолтовый принтер?

O>Гдето на третьем уровне медитации моя задница почуствовала вероятность того, что проблема вызвана wow64 редирекшеном реестра (если винда — 64битная то ваша софтина наверное 32хбитная, а вордпад — явно 64хбитный). Проверьте на всякий случай этот вариант. Моя задница иногда не ошибается.

Кстати — да, спасибо, о том, что это может быть вызвано 64-битностью я не подумал... Передайте. пожалуйста, мои уверения в почтении Вашей заднице
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.