アプリの実行中に OS のプリンターを変更すると現行のプリンターが変更される

バグ情報

PowerBuilder アプリケーションの実行中に OS の既定のプリンターを変更すると、アプリケーションで設定中の「現行のプリンター」が変更されてしまう事象が確認されています。

Bug ID 6948
Product PowerBuilder JP
ステータス Build 2272 用に修正モジュールが提供されています
発生バージョン EN 12.6以前 2017 (R2) 2017 (R3) 2019
JP 12.6以前 2017 (R2) 2017 (R3) 2019

:発生バージョン    :解決済み、未発生    :未確認

(2017 以外のバージョンについてはリリースされている最新リビジョンでの状況です)

詳細

PowerBuilder アプリケーションが印刷に使用する「現行のプリンター」は起動時の OS のデフォルトプリンターが適用され、アプリケーションから PrintSetPrinter 関数や PrintSetup 関数で変更されない限り、その設定が維持されます。 その後は OS のデフォルトプリンターが変更されてもアプリケーションには影響がない仕様となっていますが、この問題により外部から OS のデフォルトプリンターが変更されるとアプリケーションの現行のプリンターも変更されてしまいます。

本事象は Bug ID: 6919 と同様に、PrintGetPrinter 関数や PrintSetup 関数を呼び出すことにより現行のプリンターが OS のデフォルトプリンターに変更されてしまうことが原因です。 実際には OS のデフォルトプリンターを変更しても内部的に保持されているアプリケーションの現行のプリンターは変更されず、PrintGetPrinter 関数や PrintSetup 関数を呼び出すことで変更後の OS のデフォルトプリンターが現行のプリンターに設定されてしまいます。

回避策

この問題に対する回避策はありません。 なお、この問題は PrintSetPrinter 関数で現行のプリンターが変更できない不具合と関連しています。 この記事の公開時点では PrintSetPrinter でプリンターを変更できないのでご注意ください。

OS のデフォルトプリンターを変更することによる問題はありません。関連するPrintSetPrinter 関数で現行のプリンターが変更できない不具合もご確認ください。

バグ情報 一覧を見る
PowerBuilder マイグレーション
PowerBuilder学習、動画で始めちゃう?