喫茶XRAYトップページ


[7759] 保存したプリンター情報のロードについて返信 削除
2014/7/14 (月) 15:21:50 Sara
マスター、皆様、こんにちは。


プリンターの設定情報をファイル等に保存しておき、次回起動時に読み込んで
利用するプログラムがあるとします。

この時、保存した時のプリンターが無ければ、単純に保存した情報から
プリンター名で比較して処理すれば問題は無いと思いますが・・・

OSを32Bitから64Bitに入れ替えた場合、プリンター名は同じでもプリンター
ドライバー自体は別物になっています。

この時、保存したプリンター情報をロードすると、当然正常に動作しない
わけですが、保存したプリンター情報が現状で利用可能かどうか調べる
方法はありますでしょうか?

Try Exceptで処理するしかないですかね・・・

お知恵を拝借できれば幸いです。


[7760] Re:保存したプリンター情報のロードについて返信 削除
2014/7/14 (月) 22:51:07 Mr.XRAY
▼ Saraさん,どもです.

> OSを32Bitから64Bitに入れ替えた場合、プリンター名は同じでもプリンター
> ドライバー自体は別物になっています。


ですよね.

> Try Exceptで処理するしかないですかね・・・

これできればですが,どうなんでしょう.
私も知りたい.分かったら,記事にしたいです.
何か違いが検出できるのかな ?
現在のところ,情報なしです.


[7761] Re2:保存したプリンター情報のロードについて返信 削除
2014/7/14 (月) 22:54:14 Mr.XRAY
> 現在のところ,情報なしです.

今「32 ビット 64 ビットドライバ 違い」でグクッてすぐ,思ったのですが,
ドライバ(ファイル)そのものは,32 ピットと 64 ビットであるかの判定は
可能ですね.
でも,これじゃ,実際のコーディングには役に立たないか ?

検索語句が「32 ビット 64 ビットドライバ 違い」では,情報取得に
無理がありますので.念のため.
どんな語句で検索すればいいのも,現在のところ不明です (^^;

「プリンタ DEVMODE 64 ビット」当たりかな ?


[7763] Re3:保存したプリンター情報のロードについて返信 削除
2014/7/15 (火) 08:29:03 Sara
▼ Mr.XRAYさん こんにちは

今、ふと思ったのですが、現在のプリンター情報を取得して、保存した内容と
比較するといけるかも(@_@)

単純なバージョン違いでも、引っかかるかもだけどね・・・(⌒-⌒; )



[7764] Re4:保存したプリンター情報のロードについて返信 削除
2014/7/15 (火) 10:02:59 Sara
▼ Mr.XRAYさん こんにちは

あぁ、だめですね・・・
設定値が違うだけで引っかかるか・・・( ̄▽ ̄)

何か無いかな・・・

[7770] Re5:保存したプリンター情報のロードについて返信 削除
2014/7/15 (火) 17:51:00 Sara
▼ Mr.XRAYさん こんにちは

ちょっと、考え方を変えて・・・

プリンター情報の保存時にTOSVersion.Architectureを一緒に保存しておいて、

それを比較すれば・・・どうでしょうか・・・



[7771] Re6:保存したプリンター情報のロードについて返信 削除
2014/7/15 (火) 18:27:52 Mr.XRAY
▼ Saraさん

> プリンター情報の保存時にTOSVersion.Architectureを一緒に保存しておいて、
>
> それを比較すれば・・・どうでしょうか・・・


そうですねぇ.今のところ,これがいいのではないかと思われますね.
何か情報がありましたら,また...


[7838] Re7:保存したプリンター情報のロードについて返信 削除
2014/8/26 (火) 11:15:33 Sara
▼ Mr.XRAYさん

このスレの開始に、
>OSを32Bitから64Bitに入れ替えた場合、プリンター名は同じでもプリンター
> ドライバー自体は別物になっています。
>
>この時、保存したプリンター情報をロードすると、当然正常に動作しない
> わけですが、保存したプリンター情報が現状で利用可能かどうか調べる
>方法はありますでしょうか?


と、書いて始めたスレなわけですが・・・

実際に、64Bit、32Bitの両OSでプリンター情報を保存して見たところ・・・

若干の違いしか無さそうな・・・(^^;

で、会社のDocuCenter C3370の情報をWindows8 64Bitで保存して、
Windows7 32Bitに読み込ませてみた・・・

特にエラーが起きない・・・


さらに、Windows7 32Bitで保存したMG6230の情報をWindows8 64Bitでロード
してみたところ・・・問題なく設定が反映されました・・・
あれ? 用紙サイズだけ反映されていない・・・

この時、設定したのは以下の内容


用紙の種類:写真用紙 光沢ゴールド
出力用紙サイズ:L版
印刷品質:きれい
給紙方法:後ろトレイ
ページレイアウト:フチなし全面
はみ出し量:左から2番目


ここで、反映されなかったのは、出力用紙サイズ・・・L版がA4になった。

逆に上記と同じ内容をWindows8 64Bitで行って、Windows7 32Bitで確認してみた。
すると、やはり、出力用紙サイズだけA4になった・・・

出力される情報としては、ほぼ同一の内容だが、若干の違いがあるだけで
エラーにはならないようだ・・・

さらに、2種類のプリンターに対して保存とロードをしてみたが、
完全に反映されるものと、一部のみ反映されるものがあったが異常終了はしなかった。

と、言うわけで、保存した情報のプリンター名をもとに検索して、同一名の
プリンターが無ければ、ロードしないとすれば、問題ないと思われます。(^^;



[7840] Re8:保存したプリンター情報のロードについて返信 削除
2014/8/26 (火) 19:43:08 Mr.XRAY
お疲れ様です.

>と、言うわけで、保存した情報のプリンター名をもとに検索して、同一名の
>プリンターが無ければ、ロードしないとすれば、問題ないと思われます。(^^;


それがベターではないかと... (^^;
DEVMODE 構造体の値が,特にプリンタドライバ固有の領域は,
ドライバによって異なります.
したがって,保存した情報を読み出す際,その読み出すシステムの
通常使用するプリンタの DEVMODE 構造体が同じでないと,再現は困難
なのではないかと思います.


[7842] Re9:保存したプリンター情報のロードについて返信 削除
2014/8/26 (火) 19:49:58 Mr.XRAY
> したがって,保存した情報を読み出す際,その読み出すシステムの
> 通常使用するプリンタの DEVMODE 構造体が同じでないと,再現は困難
> なのではないかと思います.


DEVMODE 構造体の,ドライバ特有の領域を除いて保存して,
その部分だけの再現は可能だと思います.

ただし,以下のサンプルのコードで取得可能な値だけとなります.

http://mrxray.on.coocan.jp/Delphi/plSamples/011_DEVMODE_Structure.htm

実は,これも問題があります.
別のドライバでも,同じドライバの情報を,保存したデータから読み出す時,
メモリ領域の確保と,読み出した情報を,そのメモリ領域の指定部分に,
どのように格納するかという問題です.


INCM/CMT
Cyclamen v3.82