用紙サイズを変更するには?


たかし  2003-05-21 22:15:16  No: 77988

VBにより、自動で用紙サイズを変更するプログラムを作成しています。
処理は、GetPrinter関数より、詳細のプリンタ情報を取得します。
そして、用紙サイズを変更し、SetPrinter関数により、プリンタ情報を
書き換えております。
ここで問題なのが、OSにより処理がうまくいかないことがあります。
具体的にいいますと、Windows 2000ではうまくいき、Windows NTでは
動きません。
Windows NT上で正しく動作する方法をご存知の方がおりましたら
ご教授お願い致します。


岡田 之仁  2003-05-22 18:48:28  No: 77989

まずお聞きしたいことが・・・

Win2000 は、HomeEdition? ProfessionalEdition?
WinNT は、Workstation? Server?
また、Win2000と、WinNTは、ドメインに参加している
のか、していないのか?

何故かと言いますと、結局はセキュリティーやユーザー権限(特権)
に関わっているからです。

MSDNでgetPrinterやSetPrinterを検索して頂きますと、
GetPrinter セキュリティ記述子へのポインタを取得
SetPrinter セキュリティ記述子へのポインタを設定
と書かれた部分があります。

と言うことは、それを読み書きしようとしているユーザーがそれら
権限を持ち合わしていない為だと思います。
よって、動作に差が発生してしまっているのではと思います。

ご確認下さい。

以上。


たかし  2003-05-23 04:46:41  No: 77990

岡田 之仁さんありがとうございます。
Win2000はProfessionalEdition、WinNTはWorkstationです。

MSDNを参照し、自分なりに調べてみます。


岡田 之仁  2003-05-23 08:11:56  No: 77991

OSの部分は解りました。
後は、ユーザー権限です。その各々のマシンは、ドメインに
加入していますか?それともワークグループ?スタンドアロン?
NT側のマシンでログインしているユーザーは、Administrator
では無い他のユーザーですか?
もし、Administratorならば、まず問題は無いのですが・・・

因みに、該当のプリンターは、そのマシンに接続されている
ものですか?  それともネットワークプリンター?
サーバー接続タイプで共有?
それらの接続された環境にも左右されますので、再度、環境
の詳しい内容を教えて下さい。

以上。


たかし  2003-05-23 22:49:13  No: 77992

岡田 之仁さんありがとうございます。
マシンはワークグループ内にいます。
ログインしているユーザは、通常Administratorでは、ないのですが、
先程、Administratorでログインし、処理を行ってみましたが、用紙サイズは
変更されませんでした。
プリンターは、サーバー接続タイプです。

>それらの接続された環境にも左右されますので、再度、環境
>の詳しい内容を教えて下さい。

環境を一律にできない場合、環境によってプログラムが変わって
しまうということでしょうか??

ご教授お願いいたします。


たけ  2003-06-16 06:29:25  No: 77993

もう解決したかもしれませんが・・

SetPrinterを使っているからなのでは?


Loreley  2003-06-16 07:40:16  No: 77994

そういえばNTでは16bitだからwin32はだめなんでしたっけ

win.iniかなんか書き換えて、
書き換えたことを各ウィンドウに通知する
らしいです


たかし  2003-06-23 20:29:05  No: 77995

たけさん、Loreleyさんありがとうございます。
実は、まだ解決しておりません。
SetPrinterが使えないとなると、代わりに何を使用すれば
いいのでしょうか??
すみません。ご教授お願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加