わが社にもやっとWindows 10のPCが登場。OSをインストールし、アプリをセットアップして使い始めた。ある時、BIOS画面を表示しようとしたらどうにもこうにも出来ない。
今回のPCはPanasonicのLet's note CF-SZ6。マニュアルには電源投入後、Panasonicのロゴが表示されている間に[F2]を押下すると書いてあるが、何度やってもだめ。おっかしいなぁ、キーが壊れているのかと思ってしまった。サポートに電話すると、Windows 10の高速スタートアップが有効になっていると[F2]を押下しても駄目だそうで正しいやり方を教わった。
BIOSを表示する場合は、シャットダウンの操作が重要。シャットダウンする際に、[Shift]キーを押下しながら、シャットダウンボタンをクリックしてシャットダウン。このシャットダウンはいつものシャットダウンよりも時間がかかるのでじっと我慢の子。そして、電源が切れてから電源を投入すると通常の起動になるので、この時に[F2]を押下すればめでたくBIOS画面に再会できるという訳だ。
この[Shift]+シャットダウンで電源を切る方法は、Windows 10のPCであれば皆共通だと思う。
当部がコンピューターについて経験した中で有益と思われる情報を発信しています。誰か一人にでも有益と思ってもらえれば幸いです。かなりマニアックな情報もありますが by 間中 猛(MANAKA Takeshi)
関東農機株式会社のホームページ
2017年7月28日金曜日
2017年7月21日金曜日
http://g.ceipmsn.comに1秒間隔で接続している
いつもの様にネットワークのSYSLOGをチェックしていると、社内の1台のPCから
http://g.ceipmsn.com/8se/411?mi=12b00046cc3e4b66bfb4fb020e418c0a-0&lv=3.0.126.0&os=6.1.7601&ag=2415
に1秒間隔で接続している履歴が見つかった。
WHOISでceipmsn.comを調べるとマイクロソフト。また、マイクロソフトか。今度は何のサービスが悪さをしているんだ?ネットで検索するとWindowsのサービスでSeaPortというサービスがここに接続しているらしいことが判明。
このサービスの説明を見ると、
Enables the detection, download and installation of up-to-date configuration files for Microsoft Search Enhancement applications. Also provides server communication for the customer experience improvement program. If this service is disabled, search enhancement features such as search history may not work correctly.
ネットで日本語に翻訳すると、
Microsoft Search拡張アプリケーション用の最新の構成ファイルの検出、ダウンロード、およびインストールを有効にします。また、顧客体験向上プログラムのためのサーバー通信を提供します。このサービスを無効にすると、検索履歴などの検索機能が正しく機能しないことがあります。
との事。
因みに、私のPCには本サービスは入っていない。
それならば、このPCで本サービスを停止しても問題ないだろうと判断し、サービスを停止すると共にスタートアップの種類を無効にした。
結果は、接続しなくなった。無駄にリソースを消費するサービスを潰せた。
http://g.ceipmsn.com/8se/411?mi=12b00046cc3e4b66bfb4fb020e418c0a-0&lv=3.0.126.0&os=6.1.7601&ag=2415
に1秒間隔で接続している履歴が見つかった。
WHOISでceipmsn.comを調べるとマイクロソフト。また、マイクロソフトか。今度は何のサービスが悪さをしているんだ?ネットで検索するとWindowsのサービスでSeaPortというサービスがここに接続しているらしいことが判明。
このサービスの説明を見ると、
Enables the detection, download and installation of up-to-date configuration files for Microsoft Search Enhancement applications. Also provides server communication for the customer experience improvement program. If this service is disabled, search enhancement features such as search history may not work correctly.
ネットで日本語に翻訳すると、
Microsoft Search拡張アプリケーション用の最新の構成ファイルの検出、ダウンロード、およびインストールを有効にします。また、顧客体験向上プログラムのためのサーバー通信を提供します。このサービスを無効にすると、検索履歴などの検索機能が正しく機能しないことがあります。
との事。
因みに、私のPCには本サービスは入っていない。
それならば、このPCで本サービスを停止しても問題ないだろうと判断し、サービスを停止すると共にスタートアップの種類を無効にした。
結果は、接続しなくなった。無駄にリソースを消費するサービスを潰せた。
2017年6月13日火曜日
ROBOCOPYでアクセスが拒否されましたが表示される
最近、システムの入替作業を進める中で、業者からROBOCOPYなる使えるユーティリティがあることを教わった。使ってみるととても便利だ。今まではXCOPYでサーバー間のファイルコピーをしていたが、ROBOCOPYの方が元々そういった目的で開発されたユーティリティらしく機能も豊富だ。
使用しているうちに欲が出てきて、このROBOCOPYを使ってバックアップもしたくなった。パラメーターを指定してバックアップを実行すると、殆どのファイルのバックアップは正常に終了するのだが、一部のファイルに”エラー 5 (0x00000005) ファイルをコピーしています・・・アクセスが拒否されました。”なるエラーメッセージが表示されバックアップが出来ないものがある。
教えてくれた業者も詳しくはないらしく、周りにも詳しい人間が居ないのでネットで解決策を探した。殆どの問題は解決できたが、一部の問題については解決策が見つからない中、自分なりの方法で解決できたのでご紹介。
・環境
SV1:Windows Server 2012 R2
SV2:Windwos Server 2008 R2
SV3:TeraStation ※このTeraStationが曲者だった。
SV1上でROBOCOPYを起動し、SV2に保存されているデータをSV3へミラーリングコピーする。
・実行したコマンド
set logfile1=C:\HOGE.LOG
set src1=A:\HOGE1
set dest1=B:\HOGE2
robocopy %src1% %dest1% /b /s /purge /copy:DT /R:1 /W:30 /fft /log+:%logfile1%
※コピーが失敗したので変更した引数
copy:DT 最初にcopy:DATで実行したらエラーが発生。TeraStationにはファイルの属性をコピー出来ない様なのでcopy:DTに変更した。
・結果
殆どのファイル(350,803/350,806件)は正常にコピーが完了しているのに、一部のファイル(3/350,806件)でエラーが発生している。例えば、
2017/06/09 03:10:13 エラー 5 (0x00000005) ファイルをコピーしています A:\HOGE1\構成\2017.6.7構成リスト.xls
アクセスが拒否されました。
・調査
”アクセスが拒否されました。”って何?だって、ROBOCOPYを実行しているログインIDでファイルが開ける。開けるのにアクセスが拒否されましたとはどういうこと????
UACも無効にしてあるのに。※UACを無効にしている理由はネット上に沢山書き込んであるので割愛。因みに、UACを無効にしていないと以下の手順を実施してもダメな可能性がある。私は試していないので分からないが。
試しに、複写先をNTFSでフォーマットされたHDDに変更してみると正常にコピーが完了する。どうやらTeraStaionがらみの様だ。
ファイルのプロパティでセキュリティ情報を表示しても問題なし。しかし、ここで全般情報を表示するとこんなメッセージが。
そのコマンドはStreams。これもネットで入手可能。私が使用したstreamsはバージョン1.60
コマンドプロンプトを開いて、A:\HOGE1に移動し、実行したコマンドがこれ。
streams -d -s *
引数の意味
-d メイン・データ・ストリーム以外のストリームを削除。
-s サブフォルダも再帰的にスキャンする。
このコマンドを実行後、再度ROBOCOPYコマンドを実行したらエラーは発生しなかった。
ROBOCOPYを起動するバッチの先頭にこのStreamsコマンドを追加し、コピー前にはADSを削除する様にして解決。
因みに、当社のサーバーでstreamsを実行してみたら、ADSとして、:Zone.Identifier、:OECustomProperty(拡張子が.eml)、:encryptable(ファイル名がThumbs.db)が存在していた。
2017/07/07 追記
無限ループに陥らないように、コマンドに一つオプションを追加
robocopy %src1% %dest1% /b /s /purge /copy:DT /R:1 /W:30 /fft /log+:%logfile1% /xj
使用しているうちに欲が出てきて、このROBOCOPYを使ってバックアップもしたくなった。パラメーターを指定してバックアップを実行すると、殆どのファイルのバックアップは正常に終了するのだが、一部のファイルに”エラー 5 (0x00000005) ファイルをコピーしています・・・アクセスが拒否されました。”なるエラーメッセージが表示されバックアップが出来ないものがある。
教えてくれた業者も詳しくはないらしく、周りにも詳しい人間が居ないのでネットで解決策を探した。殆どの問題は解決できたが、一部の問題については解決策が見つからない中、自分なりの方法で解決できたのでご紹介。
・環境
SV1:Windows Server 2012 R2
SV2:Windwos Server 2008 R2
SV3:TeraStation ※このTeraStationが曲者だった。
SV1上でROBOCOPYを起動し、SV2に保存されているデータをSV3へミラーリングコピーする。
・実行したコマンド
set logfile1=C:\HOGE.LOG
set src1=A:\HOGE1
set dest1=B:\HOGE2
robocopy %src1% %dest1% /b /s /purge /copy:DT /R:1 /W:30 /fft /log+:%logfile1%
※コピーが失敗したので変更した引数
copy:DT 最初にcopy:DATで実行したらエラーが発生。TeraStationにはファイルの属性をコピー出来ない様なのでcopy:DTに変更した。
・結果
殆どのファイル(350,803/350,806件)は正常にコピーが完了しているのに、一部のファイル(3/350,806件)でエラーが発生している。例えば、
2017/06/09 03:10:13 エラー 5 (0x00000005) ファイルをコピーしています A:\HOGE1\構成\2017.6.7構成リスト.xls
アクセスが拒否されました。
・調査
”アクセスが拒否されました。”って何?だって、ROBOCOPYを実行しているログインIDでファイルが開ける。開けるのにアクセスが拒否されましたとはどういうこと????
UACも無効にしてあるのに。※UACを無効にしている理由はネット上に沢山書き込んであるので割愛。因みに、UACを無効にしていないと以下の手順を実施してもダメな可能性がある。私は試していないので分からないが。
試しに、複写先をNTFSでフォーマットされたHDDに変更してみると正常にコピーが完了する。どうやらTeraStaionがらみの様だ。
ファイルのプロパティでセキュリティ情報を表示しても問題なし。しかし、ここで全般情報を表示するとこんなメッセージが。
セキュリティ:このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。
”ブロックされる可能性があります。”なんて書いてある。原因はこいつか?早速、「ブロックの解除」クリックして解除してみる。その後、ROBOCOPYコマンドを実行すると正常にコピー出来た。やはりこいつが原因かも。しかし、このセキュリティが表示されるファイルは沢山ある。沢山ある中のたった3つだけがエラーするとは流石は”可能性がある”と書いてあるだけの事はあるな。
・対処
このセキュリティの情報はNTFSの代替データ・ストリーム(ADS)と呼ぶそうだ。ADSについてはネットで調べてもらうとして、今回のコピーが失敗した原因はこのADSをTeraStaionにコピー出来ないことが原因の様な気がする。だってTeraStaionのフォーマット形式はXFSでありNTFSではないから。ならばこのADSを削除してやればコピーは上手くいくかもしれない。そんなときに便利な、ADSを一気に削除するコマンドが存在する。
そのコマンドはStreams。これもネットで入手可能。私が使用したstreamsはバージョン1.60
コマンドプロンプトを開いて、A:\HOGE1に移動し、実行したコマンドがこれ。
streams -d -s *
引数の意味
-d メイン・データ・ストリーム以外のストリームを削除。
-s サブフォルダも再帰的にスキャンする。
このコマンドを実行後、再度ROBOCOPYコマンドを実行したらエラーは発生しなかった。
ROBOCOPYを起動するバッチの先頭にこのStreamsコマンドを追加し、コピー前にはADSを削除する様にして解決。
因みに、当社のサーバーでstreamsを実行してみたら、ADSとして、:Zone.Identifier、:OECustomProperty(拡張子が.eml)、:encryptable(ファイル名がThumbs.db)が存在していた。
2017/07/07 追記
無限ループに陥らないように、コマンドに一つオプションを追加
robocopy %src1% %dest1% /b /s /purge /copy:DT /R:1 /W:30 /fft /log+:%logfile1% /xj
2016年10月12日水曜日
クラウドサービスの基本特性
米国国立標準技術研究所(NIST)の定義によれば、クラウドサービスは以下の5つの基本特性によって構成される。
1. オンデマンドのセルフサービス
利用者自身が必要なときに必要なだけ、サーバーやストレージなどのリソース(資源)を自由に利用できる。サービスの提供者側の人手を介することなくリソースを増減できるかどうかが重要であり、サービス提供者に電話して「2営業日後には何とか」と言われるようなサービスはこの定義に該当しない。
2. 幅広いネットワークアクセス
ネットワークを介して世界中のどこからでもアクセスが可能で、ラップトップや携帯電話、PDAなど、様々なクライアント環境から利用できる。
3. リソースの共有
サーバーやストレージは共有資源として提供され、複数の利用者の要望に応じて割当や解放を行うことが出来る。また利用者は、それらサーバーやストレージがどこにあるかを意識しない。クラウドのリソースはマルチテナントモデルで提供され、一般的にはサーバーやストレージがどこにあるか分からない。実際にはアジアや北米にあったとしても、利用者はその設置場所を意識することは無い。
4. スピーディーに対応できる弾力性
利用した分だけ使用料を払う従量課金であり、必要に応じた処理能力のスケールアウト/スケールインを素早く行うことが出来る。
5. 計測可能なサービス
サーバーやストレージなどの使用料は、自動的に計測・最適化され、サービスの透明性が担保されている。実際のサーバー稼働台数を把握できないなどは論外で、透明性の高い価格形成がなされていなければならない。
2016年9月19日月曜日
Hyper-V上へWindows 10をゲストオペレーティングシステムとしてインストール
Windows Server 2008 R2上で動作するHyper-V上にWindows 10をゲストオペレーティングシステムとしてインストールしようとしたがエラーが発生してインストール出来なかった。
原因は、Windows 10は、Windows 8.1とWindows Server 2012 R2 Hyper-Vホスト上でゲストオペレーティングシステムとして実行出来るとから。
知らなかったぜ。
原因は、Windows 10は、Windows 8.1とWindows Server 2012 R2 Hyper-Vホスト上でゲストオペレーティングシステムとして実行出来るとから。
知らなかったぜ。
2016年8月31日水曜日
RTX1200のGUIが表示されない。原因はハングアウトだった。
ある日、気付いたらRTX1200のGUIが表示されなくなっていた。Chromeで見ようとしたら「192.168.0.1 からの応答時間が長すぎます。」と表示されてしまう。つい、先日までは普通に使えていたのに。
最後に設定したのはDHCP予約アドレスの設定だ。それが悪かったのかな思い、その設定を削除してみたが駄目。追加したNASが悪さをしているのかと思い、それをLANから外しても駄目。
RTX1200の電源を切断し再投入するとGUIで繋がるのだが、数秒経過するとまた応答無しになってしまう。しかし、telnetでは接続が可能で問題なく設定が出来る。その他、思いつくことは色々とやってみたが復旧せず。
困ってヤマハのサポートに電話連絡し、電話とメールのやり取りを何度か繰り返してどうやらRTX1200には問題が無く、原因はその他にあるとの事になった。そこから先は自力で原因を調査することになる。
弊社に於はRTX1200はデフォルトゲートウェイでもあり、ファイアーウォールでもあり、DHCPサーバーでもある。ネットワークの要衝である。GUIが表示されなくてもそんなに運用上影響はないが、原因が判明しない事には気持ちが悪い。ひょっとするとウィルスが社内LANに潜んでいて悪さをしている可能性もゼロではない。
RTX1200の配下には数十台のOA機器が複数台のL2 SW経由で接続されている。それらのOA機器の電源を全て切断し、ブロック毎に電源を投入して原因の絞り込みをする事にした。すると、思いも寄らぬ事が判明した。事務所ブロックのOA機器の電源を投入しても再現せず、工場側ブロックで電源を投入すると障害が再現した。てっきり、事務所のOA機器が怪しいと踏んでいたのに意外な結果だった。納得がいかない結果ではあったが現実にそうなのだから受け入れざるを得ない。
今度は工場側のOA機器を1台毎にLANに接続して再現するかを確認した。そして発見した原因と思われる1台目はWindows7のPCだった。フリーソフトのPortViewerでポートの状態を確認してみた。すると、プロセス名称がchromeで、相手のアドレスは192.168.0.1、相手のポートは80、ポートの状態はCLOSE_WAITというのが表示された。何故、chromeが192.168.0.1のポート80に接続するんだ?そもそも、chromeのウインドウは表示されていないのに。タスクバーの通知領域を見るとハングアウトがログオフの状態になっていた。
このPCは現場の共有PCで特定の個人が利用している訳ではないので、ChromeはインストールしてあるがGoogleにログオンはしていない。また、現場のPCに対しては、RTX1200のURLフィルターを設定して、業務に関係あるサイトのみを閲覧可(ホワイトリスト)としている。Googleは閲覧不可だ。
ここで思いついた。ひょっとしてハングアウトのログオンとログオフ、それからRTX1200のURLフィルターの組み合わせで障害が発生しているとすると納得がいく。事務所ブロックは全員がハングアウトにログオンしているし、インターネットへの接続には制限をかけていない。逆に、現場のPCは先程記述した通りだ。
その後、ハングアウトのログオンとログオフ、またRTX1200のURLフィルターの有無の組み合わせで障害の再現を確認すると、以下のことが判明した。
ハングアウトがログオフ状態でインターネットの216.58.197.195:80と216.58.200.174:80への接続に制限がかかっていると192.168.0.1:80に対してchromeが接続を要求する。関係しているipアドレスはこの2つだけではないと思うけど。因みに、このipアドレスのドメイン名は1e100.net。Google所有!
これは私の想像でしかないけれど、ハングアウトはログオフ状態の時にこの1e100.netへ接続に行く。RTX1200はURLフィルターでブロックした場合は「YAMAHA RTX1200 によってこのページはブロックされました。」を返信する。それが何かしらの影響をPCまたはRTX1200に与え、GUIが表示されないのだと思う。
対策は色々と考えたが、私はRTX1200のHTTPサーバー機能のlistenポートの設定でポート番号を別なポート番号に変更した。他の対策を講じてもまた同様の障害が発生しないとも限らないから。これにより、GUIは正常に表示されるようになった。また、現場のPCをPortViewerで確認したときに192.168.0.1:80は表示されなくなった。
原因がウィルスではなくて本当に良かった。これを解決するまでに5日間かかった。
最後に設定したのはDHCP予約アドレスの設定だ。それが悪かったのかな思い、その設定を削除してみたが駄目。追加したNASが悪さをしているのかと思い、それをLANから外しても駄目。
RTX1200の電源を切断し再投入するとGUIで繋がるのだが、数秒経過するとまた応答無しになってしまう。しかし、telnetでは接続が可能で問題なく設定が出来る。その他、思いつくことは色々とやってみたが復旧せず。
困ってヤマハのサポートに電話連絡し、電話とメールのやり取りを何度か繰り返してどうやらRTX1200には問題が無く、原因はその他にあるとの事になった。そこから先は自力で原因を調査することになる。
弊社に於はRTX1200はデフォルトゲートウェイでもあり、ファイアーウォールでもあり、DHCPサーバーでもある。ネットワークの要衝である。GUIが表示されなくてもそんなに運用上影響はないが、原因が判明しない事には気持ちが悪い。ひょっとするとウィルスが社内LANに潜んでいて悪さをしている可能性もゼロではない。
RTX1200の配下には数十台のOA機器が複数台のL2 SW経由で接続されている。それらのOA機器の電源を全て切断し、ブロック毎に電源を投入して原因の絞り込みをする事にした。すると、思いも寄らぬ事が判明した。事務所ブロックのOA機器の電源を投入しても再現せず、工場側ブロックで電源を投入すると障害が再現した。てっきり、事務所のOA機器が怪しいと踏んでいたのに意外な結果だった。納得がいかない結果ではあったが現実にそうなのだから受け入れざるを得ない。
今度は工場側のOA機器を1台毎にLANに接続して再現するかを確認した。そして発見した原因と思われる1台目はWindows7のPCだった。フリーソフトのPortViewerでポートの状態を確認してみた。すると、プロセス名称がchromeで、相手のアドレスは192.168.0.1、相手のポートは80、ポートの状態はCLOSE_WAITというのが表示された。何故、chromeが192.168.0.1のポート80に接続するんだ?そもそも、chromeのウインドウは表示されていないのに。タスクバーの通知領域を見るとハングアウトがログオフの状態になっていた。
このPCは現場の共有PCで特定の個人が利用している訳ではないので、ChromeはインストールしてあるがGoogleにログオンはしていない。また、現場のPCに対しては、RTX1200のURLフィルターを設定して、業務に関係あるサイトのみを閲覧可(ホワイトリスト)としている。Googleは閲覧不可だ。
ここで思いついた。ひょっとしてハングアウトのログオンとログオフ、それからRTX1200のURLフィルターの組み合わせで障害が発生しているとすると納得がいく。事務所ブロックは全員がハングアウトにログオンしているし、インターネットへの接続には制限をかけていない。逆に、現場のPCは先程記述した通りだ。
その後、ハングアウトのログオンとログオフ、またRTX1200のURLフィルターの有無の組み合わせで障害の再現を確認すると、以下のことが判明した。
ハングアウトがログオフ状態でインターネットの216.58.197.195:80と216.58.200.174:80への接続に制限がかかっていると192.168.0.1:80に対してchromeが接続を要求する。関係しているipアドレスはこの2つだけではないと思うけど。因みに、このipアドレスのドメイン名は1e100.net。Google所有!
これは私の想像でしかないけれど、ハングアウトはログオフ状態の時にこの1e100.netへ接続に行く。RTX1200はURLフィルターでブロックした場合は「YAMAHA RTX1200 によってこのページはブロックされました。」を返信する。それが何かしらの影響をPCまたはRTX1200に与え、GUIが表示されないのだと思う。
対策は色々と考えたが、私はRTX1200のHTTPサーバー機能のlistenポートの設定でポート番号を別なポート番号に変更した。他の対策を講じてもまた同様の障害が発生しないとも限らないから。これにより、GUIは正常に表示されるようになった。また、現場のPCをPortViewerで確認したときに192.168.0.1:80は表示されなくなった。
原因がウィルスではなくて本当に良かった。これを解決するまでに5日間かかった。
2016年1月22日金曜日
VB.NET 印刷プレビュー後に印刷するとプリンターから白紙が出力されてしまう
VB.NETのブログラムで印刷プレビューをしてからプリンターボタンをクリックして印刷を開始すると、プリンターから白紙が出力されてしまう。印刷プレビューには正しく表示されるのに、何故なのか悩んでしまった。

ネットで検索すると、力業的な解決方法をしている人も見受けられた。しかし、もっとスマートな解決方法をと思って検索していると、そもそも印刷プレビューと印刷の関係を知らないことに気付かされた。
そこでイベントの発生順序を確認するため、Visual Studioでデバッグすると、
先ず、印刷プレビューを実行すると、PrintDocument1.PrintPageイベントハンドラーが実行される。
続いて、印刷ボタンをクリックすると、何と再びPrintDocument1.PrintPageイベントハンドラーが実行されていた。
そうか。2回PrintDocument1.PrintPageイベントハンドラーが実行されるので、2回目の印刷の際は該当データが無くて空白が印刷されるのか。
原因が分かってしまえば対処は簡単。
単一ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内の最後に静的変数の値を最初の値に戻してあげれば良い。
複数ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内でe.HasMorePages = Trueを代入して、PrintDocument1.PrintPageイベントハンドラーの再帰をするが、最後のページを印刷した後は、e.HasMorePages = Trueを代入しない。そのタイミングで静的変数の値を最初の値に戻してあげれば良い。
ネット上にはこの事が分からずに、白紙が出力されるのでプリンターボタンをクリックしても印刷できなくしたいという質問があった。それではあまりにもユーザーが可哀相だ。
ネットで検索すると、力業的な解決方法をしている人も見受けられた。しかし、もっとスマートな解決方法をと思って検索していると、そもそも印刷プレビューと印刷の関係を知らないことに気付かされた。
そこでイベントの発生順序を確認するため、Visual Studioでデバッグすると、
先ず、印刷プレビューを実行すると、PrintDocument1.PrintPageイベントハンドラーが実行される。
続いて、印刷ボタンをクリックすると、何と再びPrintDocument1.PrintPageイベントハンドラーが実行されていた。
そうか。2回PrintDocument1.PrintPageイベントハンドラーが実行されるので、2回目の印刷の際は該当データが無くて空白が印刷されるのか。
原因が分かってしまえば対処は簡単。
単一ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内の最後に静的変数の値を最初の値に戻してあげれば良い。
複数ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内でe.HasMorePages = Trueを代入して、PrintDocument1.PrintPageイベントハンドラーの再帰をするが、最後のページを印刷した後は、e.HasMorePages = Trueを代入しない。そのタイミングで静的変数の値を最初の値に戻してあげれば良い。
ネット上にはこの事が分からずに、白紙が出力されるのでプリンターボタンをクリックしても印刷できなくしたいという質問があった。それではあまりにもユーザーが可哀相だ。
登録:
投稿 (Atom)