アプリの実行中に 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 でプリンターを変更できないのでご注意ください。
- 修正パッチを適用する
- この問題に対する修正パッチが提供されています。 PowerBuilder 2019 R3 (Build 2722) 日本語版 GA リリース記事の 2021/7/26 追記の記載を参照してダウンロード、適用してください。
OS のデフォルトプリンターを変更することによる問題はありません。関連するPrintSetPrinter 関数で現行のプリンターが変更できない不具合もご確認ください。