- このトピックは空です。
-
投稿者投稿
-
2021年6月30日 3:45 PM #1679
ユーザ・タック
ゲスト従来のAPIを使用して、15X4.5インチの伝票を発行するアプリケーションを作成しています
使用するプリンタに指定サイズの用紙がないので、ユーザ定義サイズを使用して、用紙の幅、長さを指定して印刷させようとしていますWRPSetPaperSize(Handle,WR_PAPER_USER)
WRPSetPaperWidth(Handle,370.1)
WRPSetPaperLength(Handle,114.3)WRPUpdateInfo(Handle)
と指定していますが
WRPSetPaperWidthで「プリンターは指定されたプリンター情報をサポートしていない」と表示されてしまいます
回避方法として、プリンターのプロパティで、用紙サイズをユーザ定義サイズに変更しておくとエラーは発生しません
できれば、問題点をアプリケーションで解決させたいのですが、何か方法があれば、教えて頂きたいのですが。宜しくお願い致します開発環境
OS WIN98SE
言語 VB6SP5
テストしたプリンタ IBM 5577-K02またはNEC PC-700JH2021年6月30日 3:45 PM #1680松嶋@ソフトウィング
ゲストお世話になっております。
お知らせ頂いた内容から、プリンタードライバーからの取得し
た情報により、サポートしていないと判断している様です。以下の方法でプリンター情報を取得し、変更を行いたい項目を
設定した後に再びプリンター情報を設定してテストをお願い致
します。取得
WRPGetPrinterInfoSize
WRPGetPrinterInfo設定
WRPSetPrinterInfo以上です。宜しくお願い致します。
2021年6月30日 3:45 PM #1681ユーザ・タック
ゲスト早速の回答ありがとうございます
教えて頂いた方法で、確認したところうまくいぎませんでした
手順として、
1 プリンター情報のサイズの取得
WRPGetPrinterInfoSize(Handle, lngLen)
2 バッファを確保
ReDim bytDEV(lngLen) As Byte
3 プリンタードライバー初期化用情報の取得
WRPGetPrinterInfo(.hPrinter, bytDEV(0), lngLen)
4 プリンタ構造体へのコピー
MoveMemory wDevMode, bytDEV(0), Len(wDevMode)
5 プリンタ構造体の変更
wDevMode.dmPaperSize = WR_PAPER_USER
6 MoveMemory bytDEV(0), wDevMode, Len(wDevMode)7 プリンタードライバー初期化用情報の設定
WRPSetPrinterInfo(.hPrinter, bytDEV(0))テストしましたが思っている結果になりませんでした
なにか、違っているのか、もう少し具体的に、教えて頂けませんでしょうか。宜しくお願いします。
2021年6月30日 3:46 PM #1682松嶋@ソフトウィング
ゲストお世話になっております。
大変申し訳ありませんでした。最後のUpdateInfoメソッドの呼
び出しを記述していませんでした。
処理の最後にUpdateInfoメソッドを呼び出してください。以上です。宜しくお願い致します。
2021年6月30日 3:46 PM #1683ユーザ・タック
ゲスト早速の回答ありがとうございます
UpdateInfoメソッドを呼び出してもうまくいぎません
プリンタードライバー初期化用情報の取得
WRPGetPrinterInfo(.hPrinter, bytDEV(0), lngLen)プリンタ構造体へのコピー
MoveMemory wDevMode, bytDEV(0), Len(wDevMode)プリンタ構造体の内容を確認しても、正しい内容がセットされません
プリンタ構造体へのコピーが正しくできていないと思われます
プリンタ構造体へのコピーの仕方をもう少し具体的に、教えて頂けませんでしょうか。宜しくお願いします
2021年6月30日 3:46 PM #1684松嶋@ソフトウィング
ゲストお世話になります。
>プリンタ構造体へのコピー
>MoveMemory wDevMode, bytDEV(0), Len(wDevMode)
取得したデータをコピーしてる先はVBのユーザー定義型変数で
すか?ユーザー定義型変数と仮定すると問題があります。プリ
ンター情報はプリンタードライバーによりサイズが異なります
ので固定的な変数へVBの関数(ステートメント等)以外を使用
した場合、アプリケーションが異常終了する場合があります。
もし、VBで全ての処理を行うのであれば最初に取得したByte型
の配列を直接変更する方法をおすすめ致します。以上です。宜しくお願い致します。
-
投稿者投稿
- フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。