Как обработать заблокированный буфер обмена и другие причуды

Если у вас установлено Adobe Reader, вы можете просто установить его в качестве принтера по умолчанию. И ВОЙЛА! Вы можете распечатать в PDF!

printDocument1.PrinterSettings.PrinterName = "Adobe PDF";
printDocument1.Print();

Так же просто, как это!

50
задан Peter Mortensen 17 March 2019 в 09:08
поделиться

1 ответ

Поскольку буфер обмена используется всеми приложениями пользовательского интерфейса, время от времени вы будете сталкиваться с этим. Очевидно, вы не хотите, чтобы ваше приложение вылетало из строя, если ему не удалось выполнить запись в буфер обмена, поэтому разумно изящная обработка ExternalException. Я бы посоветовал сообщить пользователю об ошибке, если вызов SetObjectData для записи в буфер обмена завершился неудачно.

Было бы предложено использовать (через P / Invoke ) user32! GetOpenClipboardWindow , чтобы узнать, открыт ли буфер обмена в другом приложении. Он вернет HWND окна, в котором открыт буфер обмена, или IntPtr.Zero , если ни одно приложение не открыло его. Вы можете вращать значение до его IntPtr.Zero в течение определенного периода времени.

28
ответ дан 7 November 2019 в 10:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: