VBにより、自動で用紙サイズを変更するプログラムを作成しています。
処理は、GetPrinter関数より、詳細のプリンタ情報を取得します。
そして、用紙サイズを変更し、SetPrinter関数により、プリンタ情報を
書き換えております。
ここで問題なのが、OSにより処理がうまくいかないことがあります。
具体的にいいますと、Windows 2000ではうまくいき、Windows NTでは
動きません。
Windows NT上で正しく動作する方法をご存知の方がおりましたら
ご教授お願い致します。
まずお聞きしたいことが・・・
Win2000 は、HomeEdition? ProfessionalEdition?
WinNT は、Workstation? Server?
また、Win2000と、WinNTは、ドメインに参加している
のか、していないのか?
何故かと言いますと、結局はセキュリティーやユーザー権限(特権)
に関わっているからです。
MSDNでgetPrinterやSetPrinterを検索して頂きますと、
GetPrinter セキュリティ記述子へのポインタを取得
SetPrinter セキュリティ記述子へのポインタを設定
と書かれた部分があります。
と言うことは、それを読み書きしようとしているユーザーがそれら
権限を持ち合わしていない為だと思います。
よって、動作に差が発生してしまっているのではと思います。
ご確認下さい。
以上。
岡田 之仁さんありがとうございます。
Win2000はProfessionalEdition、WinNTはWorkstationです。
MSDNを参照し、自分なりに調べてみます。
OSの部分は解りました。
後は、ユーザー権限です。その各々のマシンは、ドメインに
加入していますか?それともワークグループ?スタンドアロン?
NT側のマシンでログインしているユーザーは、Administrator
では無い他のユーザーですか?
もし、Administratorならば、まず問題は無いのですが・・・
因みに、該当のプリンターは、そのマシンに接続されている
ものですか? それともネットワークプリンター?
サーバー接続タイプで共有?
それらの接続された環境にも左右されますので、再度、環境
の詳しい内容を教えて下さい。
以上。
岡田 之仁さんありがとうございます。
マシンはワークグループ内にいます。
ログインしているユーザは、通常Administratorでは、ないのですが、
先程、Administratorでログインし、処理を行ってみましたが、用紙サイズは
変更されませんでした。
プリンターは、サーバー接続タイプです。
>それらの接続された環境にも左右されますので、再度、環境
>の詳しい内容を教えて下さい。
環境を一律にできない場合、環境によってプログラムが変わって
しまうということでしょうか??
ご教授お願いいたします。
もう解決したかもしれませんが・・
SetPrinterを使っているからなのでは?
そういえばNTでは16bitだからwin32はだめなんでしたっけ
win.iniかなんか書き換えて、
書き換えたことを各ウィンドウに通知する
らしいです
たけさん、Loreleyさんありがとうございます。
実は、まだ解決しておりません。
SetPrinterが使えないとなると、代わりに何を使用すれば
いいのでしょうか??
すみません。ご教授お願い致します。