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

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

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

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

Никто не знает, как бороть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.