投稿時間:2006/12/06(Wed) 20:11 投稿者名:太郎
Eメール:
URL :
タイトル:DEVMODE構造体で、プリンタ固有の情報の取得及び設定
はじめまして、太郎です。
フォーム上から、SHInvokePrinterCommandやPrinterProperties()でプリンタの印刷設定ダイ アログを表示し、印刷設定を変更します。そして、フォーム上の印刷ボタンを押し、印刷終 了後に元の設定に戻そうとしています。
そこで、印刷設定の変更前に、GetprinterでDEVMODE構造体をいったん変数に保存しまし た(1)。そして、印刷終了後、Setprinterを使い、保存した変数をDEVMODE構造体に代入し 元に戻しました(2)。
ですが、DEVMODE構造体にない情報(プリンタ独自の情報)は設定を保存したり(1)、変更 前に戻せませんでした(2)。どのようにすれば、可能になるでしょうか?
宜しくお願いします。 ※環境は、VB6.0 SP6 WindowsXPです。
///////////////////////////////////////////////////////////////////////////// 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)
' 取得した詳細なプリンタデバイス情報を構造体へ移動する MoveMemory _ udtDevMode, _ ByVal udtPrinterInfo2.pDevMode, _ Len(udtDevMode) '------------------------------------------------------------------ '【印刷設定を表示する前にDevmode構造体を一度変数に保存】 '・・・@DEVMODE構造体にない情報(プリンタ独自の情報)が保存できません '------------------------------------------------------------------ With udtDevMode SpecVersion = .dmSpecVersion DriverVersion = .dmDriverVersion Size = .dmSize DriverExtra = .dmDriverExtra Fields = .dmFields Orientation = .dmOrientation PaperSize = .dmPaperSize ・・・ End With
End Sub Sub 印刷設定の変更()
・・・
'------------------------------------------------------------------ '【印刷終了後、@で保存した変数をDevmode構造体に戻す】 '・・・ADEVMODE構造体にない情報(プリンタ独自の情報)が設定できません。 '------------------------------------------------------------------ With udtDevMode ' 用紙が指定できるときは If .dmFields And DM_PAPERSIZE Then
'.dmDeviceName = DeviceName .dmSpecVersion = SpecVersion .dmDriverVersion = DriverVersion .dmSize = Size .dmDriverExtra = DriverExtra .dmFields = Fields .dmOrientation = Orientation .dmPaperSize = PaperSize ・・・
' 構造体を取得した詳細なプリンタデバイス情報へ移動する MoveMemory _ ByVal udtPrinterInfo2.pDevMode, _ udtDevMode, _ Len(udtDevMode) '詳細なプリンタ情報を書き戻し lngResult = _ SetPrinter( _ lngPrinterHandle, _ lngPrinterInfo2Level, _ udtPrinterInfo2, _ 0) End If End With ' プリンタオブジェクトをクローズ lngResult = ClosePrinter(lngPrinterHandle)
End Sub
|