掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Printerオブジェクトから用紙名の取得 (ID:108877)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
私も以前印刷ウィザードを自作した時に使用しました。 フォームにリストボックス(List1)をひとつ 用意してください。 Option Explicit Private Declare Function DeviceCapabilities Lib "winspool.drv" _ Alias "DeviceCapabilitiesA" (ByVal pDevice As String, _ ByVal pPort As String, ByVal fwCapability As Long, _ pOutput As Any, pDevMode As Any) As Long Private Const DC_PAPERNAMES = 16 Private Declare Sub MoveMemory Lib "kernel32.dll" _ Alias "RtlMoveMemory" (Destination As Any, _ Source As Any, ByVal Length As Long) Private Sub Form_Load() Dim myPrinter As String Dim myPort As String Dim myQes As Long Dim mBuf As Long Dim mPaper() As Byte Dim sPaperName As String * 64 Dim AllPaper As Long List1.Clear With Printer myPrinter = .DeviceName myPort = .Port End With MsgBox "プリンター名 : " + myPrinter + vbCrLf + " ポート名 : " + myPort _ + vbCrLf + "使用できる用紙名を列挙します。", vbOKOnly + vbInformation, "用紙列挙" ' 問い合わせる内容を指定 myQes = DC_PAPERNAMES ' バッファに必要なサイズを取得 mBuf = DeviceCapabilities(myPrinter, myPort, myQes, _ ByVal vbNullString, ByVal vbNullString) ' バッファ確保 ReDim mPaper(64 - 1, mBuf - 1) '用紙名を取得 DeviceCapabilities myPrinter, myPort, myQes, mPaper(0, 0), ByVal vbNullString '用紙名を列挙 With List1 ' バッファに用紙の名前がある間は再帰的に取得 For AllPaper = 0 To mBuf - 1 ' 用紙名コピー MoveMemory ByVal sPaperName, mPaper(0, AllPaper), 64 ' 用紙名追加 .AddItem Left(sPaperName, InStr(sPaperName, vbNullChar) - 1) Next AllPaper End With End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.