投稿日 | : 2006/12/07(Thu) 14:08 |
投稿者 | : 太郎 |
Eメール | : |
URL | : |
タイトル | : Re^2: DEVMODE構造体で、プリンタ固有の情報の取得及び設定 |
K.J.K.さん。
おっしゃるとおり、下記のように、SetPrinterで、bytPrinterInfo2Bufferを復元するだけで
解決しました。
とても助かりました。
それから、宣言部も今後省略しないようにします。
どうもありがとうございました。
修正版
//////////////////////////////////////////////////////////////////////
'宣言
Dim strPrinterDeviceName As String
Dim udtPrinterDefaults As PRINTER_DEFAULTS
Dim lngPrinterHandle As Long
Dim lngPrinterInfo2Level As Long
Dim lngPrinterInfo2Needed As Long
Dim bytPrinterInfo2Buffer() As Byte
Dim udtPrinterInfo2 As PRINTER_INFO_2
Dim lngResult As Long
/////////////////////////////////////////////////////////////////////////////
Sub 印刷設定の取得()
' プリンタ名指定する
strPrinterDeviceName = Combo1.Text
' プリンタのオブジェクトハンドルを取得する
lngResult = OpenPrinter( strPrinterDeviceName, lngPrinterHandle, _
udtPrinterDefaults)
' 構造体のレベルを指定する
lngPrinterInfo2Level = 2
' バッファに必要なサイズを取得する
lngResult = _
GetPrinter( _
lngPrinterHandle, _
lngPrinterInfo2Level, _
ByVal vbNullString, _
0, _
lngPrinterInfo2Needed)
' バッファを確保する
ReDim bytPrinterInfo2Buffer (lngPrinterInfo2Needed - 1)
' 詳細なプリンタ情報を取得する
lngResult = _
GetPrinter( _
lngPrinterHandle, _
lngPrinterInfo2Level, _
bytPrinterInfo2Buffer(0), _
lngPrinterInfo2Needed, _
lngPrinterInfo2Needed)
' 取得した詳細なプリンタ情報を構造体へ移動する
MoveMemory _
udtPrinterInfo2, _
bytPrinterInfo2Buffer(0), _
Len(udtPrinterInfo2)
End Sub
/////////////////////////////////////////////////////////////////////////////
Sub 印刷設定の変更()
'詳細なプリンタ情報を書き戻し
lngResult = _
SetPrinter( _
lngPrinterHandle, _
lngPrinterInfo2Level, _
udtPrinterInfo2, _
0)
End Sub