• 検索結果がありません。

VB実用⑪ 印刷Ⅰ(プリンタ設定)

N/A
N/A
Protected

Academic year: 2021

シェア "VB実用⑪ 印刷Ⅰ(プリンタ設定)"

Copied!
15
0
0

読み込み中.... (全文を見る)

全文

(1)

プログラムの概要

事務処理に於いて、集計結果等を印刷して、確認 等を行う事も多い為、ペーパーレスオフィスが推 奨される昨今に於いても、矢張り印刷に関する技 術は必要で有る。

Visual Basic から印刷を行う方法は、.NET 以降 PrintDocument オブジェクトを使用する方法が 標準機能と仕て一般的で有るが、Professional 版 等ではReportView や CrystalReport を利用する 事も可能で有る。亦、2008 では、視覚的確認が 容易なFormPrint が、機能を向上させて復活し て居る。 此処では、使用可能な総てのプリンタを取得して 其の中から、印刷に使用するプリンタを指定する 方法と、ダイアログボックスを使用して、プリン タに関する各種設定を行う方法に付いて学習する。亦、API を使用して、プリンタに関する各種設定を 行う方法に付いても学習する。

印刷Ⅰ

VB 2005 ① □ System.Drawing.Printing 名前空間(印刷関連のサービスを提供) □ System.Drawing.Printing.PrinterSettings クラス(印刷方法に関する情報を指定) □ System.Drawing.Printing.PrintDocument クラス(プリンタに出力を送信) □ InstalledPrinters コレクション(Count プロパティ、Item プロパティ) □ PrintDialog コントロールの利用(PrinterSettings プロパティ) □ PageSetupDialog コントロールの利用(PageSettings プロパティ) □ 印刷(PrintDocument.Print メソッド、PrintDocument.PrintPage イベント) 今回の課題項目 □ System.Drawing.Printing 名前空間(印刷関連のサービスを提供) □ System.Drawing.Printing.PrinterSettings クラス(印刷方法に関する情報を指定) □ System.Drawing.Printing.PrintDocument クラス(プリンタに出力を送信) □ InstalledPrinters コレクション(Count プロパティ、Item プロパティ) □ PrintDialog コントロールの利用(PrinterSettings プロパティ)

□ PageSetupDialog コントロールの利用(PageSettings プロパティ) 今回の重点項目

(2)

■ オブジェクト・プロパティ一覧 ■ コントロールの種類 プロパティ プロパティの設定値 フォーム Name PrinterSetting BackgroundImage 花見.gif FormBorderStyle FixedSingle Icon printer.ico StartPosition CenterScreen Text プリンタ設定 ボタン1 Name btnSetPrinter Text プリンタ設定 Font MS明朝、12、太字 ボタン2 Name btnSetPage Text ページ設定 Font MS明朝、12、太字 ラベル1 Name lblDefaultPrinterCaption BackColor Transparent Text 既定プリンタ ラベル2 Name lblDefaultPrinter AutoSize False BackColor White コンボボックス Name cboPrinters Font MS明朝、10、標準

PrintDialog Name dlgPrint PageSetupDialog Name dlgPage

ページセットアップダイアログ コンボボックス ラベル1 ボタン2 ラベル2 適宜作成 ボタン1 プリントダイアログ

(3)

■ プログラムリスト ■

Imports System.Drawing.Printing

Imports System.Drawing.Printing.PrinterSettings

Public Class PrinterSetting

' フォームが読み込まれた時の処理

Private Sub PrinterSetting_Load( ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles MyBase.Load

Dim I As Integer Dim S As String ' 使用出来るプリンタの一覧を取得 For I = 0 To ( InstalledPrinters.Count - 1 ) ' インストールされて居るプリンタ名を取得 S = InstalledPrinters.Item( I ) ' プリンタ名をコンボボックスに追加 cboPrinters.Items.Add( S ) Next ' 既定プリンタの表示

Dim D As New PrinterSettings lblDefaultPrinter.Text = D.PrinterName End Sub

' ボタン(プリンタ設定)がクリックされた時の処理

Private Sub btnSetPrinter_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles btnSetPrinter.Click

' 印刷に使用する PrintDocument の宣言とインスタンス化 Dim P As New PrintDocument( )

' ダイアログボックスの表示

If dlgPrint.ShowDialog( ) = Windows.Forms.DialogResult.OK Then ' イベントハンドラの追加

AddHandler P.PrintPage, AddressOf PrintOut ' ダイアログボックスの設定をドキュメントに反映 P.PrinterSettings = dlgPrint.PrinterSettings ' 印刷の開始 P.Print( ) End If ' 印刷に使用した PrintDocument の破棄 P.Dispose( ) End Sub ネームスペース(名前空間)の使 用を宣言して居る。 此処で宣言した変数は宣言したサ ブプロシージャ内でしか値の参照 と設定を行う事が出来ない。 使用可能なプリンタが無い場合は InstalledPrinters の Count プロ パティの値は0 で有る。 インストールされて居る総てのプ リンタの名前をコンボボックスに 表示する。 印刷ダイアログボックスを表示し OK ボタンがクリックされたかを 検証する。 Print は、印刷プロセスを開始す るメソッドで有る。 PrintDocument オブジェクトの PrintPage イベントを PrintOut プロシージャに関連付ける。 使用済みの PrintDocument オブ ジェクトは、破棄してメモリから 開放する。 使用するプリンタ(通常使用する プリンタ)を取得して、ラベルに 表示する。

(4)

' ボタン(ページ設定)がクリックされた時の処理

Private Sub btnSetPage_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles btnSetPage.Click

Dim P As New PrintDocument( )

dlgPage.Document = P

If dlgPage.ShowDialog( ) = Windows.Forms.DialogResult.OK Then AddHandler P.PrintPage, AddressOf PrintOut

P.OriginAtMargins = True P.DefaultPageSettings = dlgPage.PageSettings P.Print( ) End If P.Dispose( ) End Sub ' コンボボックスの選択項目が変化した時の処理

Private Sub cboPrinters_SelectedIndexChanged( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cboPrinters.SelectedIndexChanged

If Not cboPrinters.SelectedIndex < 0 Then ' 使用プリンタの設定

Dim P As New PrintDocument( )

P.PrinterSettings.PrinterName = cboPrinters.Text ' 指定プリンタに依る印刷

If P.PrinterSettings.IsValid Then

AddHandler P.PrintPage, AddressOf PrintOut P.Print( ) Else MsgBox( "指定したプリンタは使用出来ません!", MsgBoxStyle.Critical, "通知" ) End If P.Dispose( ) End If End Sub ' 印刷するジェネラルプロシージャ(PrintPage イベントを捕捉) Private Sub PrintOut( ByVal sender As System.Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs )

Dim G As Graphics = e.Graphics Dim S As String

G.Clear( Color.White ) S = "印刷テスト"

G.DrawString(S, New Font("MS 明朝", 15.0!, FontStyle.Bold), Brushes.Black, 30.0!, 30.0!) S = "指定したプリンタで印刷されたか確認してください。"

G.DrawString(S, New Font("MS 明朝", 10.0!, FontStyle.Regular), Brushes.Black, 30.0!, 60.0!) End Sub End Class 印刷設定ダイアログボックスで設 定された総ての印刷設定を設定す る。 IsValid は、プリンタが有効かを示 すプロパティで有る。 コンボボックスで選択されて居る プリンタを取得する。 コンボボックスで選択されて居る プリンタを其れを使用するプリン タに設定する。 印刷設定ダイアログボックスを表 示しOK ボタンがクリックされた かを検証する。 使用するプリンタの印刷設定を印 刷設定ダイアログに設定する。 PrintDocument オブジェクトの Print メソッドが実行されると PrintPage イベントが発生し、此 のプロシージャが実行される。 印刷する内容は、総て Graphics オブジェクトを使用して、印刷頁 に描画する。

(5)

System.Drawing.Printing 名前空間 System.Drawing.Printing 名前空間には、印刷関連のサービスが用意されて居る。 System.Drawing.Printing 名前空間に含まれるクラスは、下記の通りで有る。 クラス 説明 InvalidPrinterException 無効なプリンタ設定を使用してプリンタにアクセスしようとした 時にスローされる例外を表す。 Margins 印刷ページの余白の大きさを指定する。

MarginsConverter Margins の MarginsConverter を提供する。

PageSettings 単一の印刷ページに適用する設定を指定する。 PaperSize 用紙のサイズを指定する。 PaperSource プリンタに用紙を供給する用紙トレイを指定する。 PreviewPageInfo 単一ページの印刷プレビュー情報を指定する。 PreviewPrintController ドキュメントを一連のイメージと仕て画面に表示するプリント コントローラを指定する。 PrintController ドキュメントの印刷方法を制御する。 PrintDocument プリンタに出力を送信する再利用可能なオブジェクトを定義す る。 PrinterResolution プリンタでサポートされる解像度を表す。 PrinterSettings ドキュメントの印刷方法に関する情報(印刷に使用するプリンタ 等)を指定する。 PaperSizeCollection PaperSize オブジェクトのコレクションを格納する。 PaperSourceCollection PaperSource オブジェクトのコレクションを格納する。 PrinterResolutionCollection PrinterResolution オブジェクトのコレクションを格納する。 StringCollection String オブジェクトのコレクションを格納する。

PrinterUnitConvert Win32 で印刷に使用する API との相互運用で使用出来る一連の変 換メソッドを指定する。

PrintEventArgs BeginPrint イベントと EndPrint イベントのデータを提供する。 PrintingPermission プリンタへのアクセスを制御する。 PrintingPermissionAttribute 宣言印刷アクセス許可チェックが出来る様に成る。 PrintPageEventArgs PrintPage イベントのデータを提供する。 QueryPageSettingsEventArgs QueryPageSettings イベントのデータを提供する。 StandardPrintController プリンタに情報を送信するプリントコントローラを指定する。 System.Drawing.Printing 名前空間に含まれる列挙体は、下記の通りで有る。 列挙体 説明 Duplex プリンタの両面印刷設定を指定する。 PaperKind 標準の用紙サイズを指定する。 PaperSourceKind 標準の給紙方法を指定する。 PrintAction 発生して居る印刷操作の種類を指定する。 PrinterResolutionKind プリンタの解像度を指定する。 PrinterUnit 印刷に使用する長さの単位を指定する。 PrintingPermissionLevel コードが実行を許可される印刷の種類を指定する。 PrintRange 印刷するドキュメント部分を指定する。

(6)

System.Drawing.Printing.PrinterSettings クラス ドキュメントの印刷方法に関する情報(印刷に使用するプリンタ等)を指定する。 通常、PrintDocument.PrinterSettings プロパティや PageSettings.PrinterSettings プロパティを使用 して、PrinterSettings にアクセスし、プリンタ設定を変更する。最も一般的なプリンタ設定は、印刷 するプリンタを指定するPrinterName で有る。 System.Drawing.Printing.PrinterSettings クラスに含まれるプロパティは、下記の通りで有る。 名前 説明 CanDuplex プリンタが両面印刷をサポートして居るか何うかを示す値を取得する。 Collate ドキュメントを部単位で印刷するか何うかを示す値を取得・設定する。 Copies 印刷するドキュメントの部数を取得・設定する。 DefaultPageSettings プリンタの既定のページ設定を取得する。 Duplex 両面印刷用のプリンタ設定を取得・設定する。 FromPage 印刷開始ページの番号を取得・設定する。 InstalledPrinters コンピュータにインストールされて居る総てのプリンタの名前を取得する。 IsDefaultPrinter 明示的にPrinterName を設定した場合を除き、PrinterName プロパティが、

通常使うプリンタに指定されて居るか何うかを示す値を取得する。 IsPlotter プリンタがプロッタか何うかを示す値を取得する。 IsValid PrinterName プロパティが有効なプリンタに指定されて居るか何うかを示す 値を取得する。 LandscapeAngle 縦向きの用紙を回転して横向きにする場合の角度( ° )を取得する。 MaximumCopies プリンタで一度に印刷出来る最大部数を取得する。

MaximumPage PrintDialog で選択出来る FromPage や ToPage の最大値を取得・設定する。 MinimumPage PrintDialog で選択出来る FromPage や ToPage の最小値を取得・設定する。 PaperSizes プリンタでサポートされて居る用紙サイズを取得する。 PaperSources プリンタで使用出来る用紙トレイを取得する。 PrinterName 使用するプリンタの名前を取得・設定する。 PrinterResolutions プリンタでサポートされて居る解像度を総て取得する。 PrintFileName ファイルに出力する際にファイル名を取得・設定する。 PrintRange ユーザーが指定した印刷ページの番号を取得・設定する。 PrintToFile ファイルに印刷出力を送信するか何うかを示す値を取得・設定する。 SupportsColor プリンタがカラー印刷をサポートして居るか何うかを示す値を取得する。 ToPage 印刷終了ページの番号を取得・設定する。 System.Drawing.Printing.PrinterSettings クラスに含まれる主なメソッドは、下記の通りで有る。 名前 説明 CreateMeasurementGraphics プリンタ情報を格納する Graphics を返す。 GetHdevmode DEVMODE 構造体を識別するハンドルを作成する。 GetHdevnames DEVNAMES 構造体を識別するハンドルを作成する。 IsDirectPrintingSupported イメージファイル印刷が可能かを示す値を返す。 SetHdevmode 特定のハンドルからPrinterSettings に関連情報をコピーする。 SetHdevnames 特定のハンドルからPrinterSettings に関連情報をコピーする。 ToString PrinterSettings に関する情報を文字列形式で提供する。

(7)

System.Drawing.Printing.PrintDocument クラス

プリンタに出力を送信する再利用可能なオブジェクトを定義する。

通常は、PrintDocument クラスのインスタンスを作成し、印刷方法を記述したプロパティを設定して Print メソッドを呼び出す事で印刷プロセスを開始する。Print メソッドを呼び出すと、自動的に PrintPage イベントが発生する。此の時に PrintPageEventArgs に含まれて居る Graphics を使用して 印刷する出力を行う。猶、実際に印刷が実行される(プリントアウトが開始される)のは、PrintPage イベントを抜けた時で有る。Visual Basic 6.0 以前の様に Printer オブジェクトの EndDoc メソッドが 呼び出されると、直ちに印刷が実行される訳ではない。此れは、複数ページを連続して印刷する場合に は、時に気を付ける必要が有る。 System.Drawing.Printing.PrintDocument クラスに含まれる主なプロパティは、下記の通りで有る。 名前 説明 DefaultPageSettings 印刷する総てのページの既定値と仕て使用されるページ設定を取得・設定 する。 DocumentName ドキュメントの印刷中に表示するドキュメント名を取得・設定する。例え ば、印刷ステータスダイアログボックスやプリンタキューに表示する。 OriginAtMargins ページに関連付けられて居るグラフィックオブジェクトの位置が、ユーザ ー指定の余白の内側に有るか、ページの印刷可能領域の左上隅に有るかを 示す値を取得・設定する。 PrintController 印刷プロセスを制御するプリントコントローラを取得・設定する。 PrinterSettings ドキュメントを印刷するプリンタを取得・設定する。 System.Drawing.Printing.PrintDocument クラスに含まれる主なメソッドは、下記の通りで有る。 名前 説明 Dispose Component に依り使用されて居るリソースを解放する。

OnBeginPrint BeginPrint イベントを発生させる(Print メソッドが呼び出された後、ド キュメントの最初のページが印刷される前に呼び出される)。

OnEndPrint EndPrint イベントを発生させる(ドキュメントの最後のページが印刷され た時に呼び出される)。

OnPrintPage PrintPage イベントを発生させる(ページの印刷前に呼び出される)。 OnQueryPageSettings QueryPageSettings イベントを発生させる(各 PrintPage イベントの直前

に呼び出される)。 Print ドキュメントの印刷プロセスを開始する。 ToString 印刷ドキュメントに関する情報を文字列形式で提供する。 System.Drawing.Printing.PrintDocument クラスに含まれる主なイベントは、下記の通りで有る。 名前 説明 BeginPrint Print メソッドが呼び出された時(ドキュメントの最初のページが印刷され る前)に発生する。 EndPrint ドキュメントの最後のページが印刷された時に発生する。 PrintPage 現在のページに印刷する出力が必要な時に発生する。 QueryPageSettings 各PrintPage イベントの直前に発生する。

(8)

System.Drawing.Printing.PrinterSettings.InstalledPrinters プロパティ コンピュータにインストールされて居る総てのプリンタの名前を取得するプロパティ Object.InstalledPrinters インストールされて居るプリンタの名前のコレクションを使用して、ユーザーが印刷先のプ リンタを選択出来る様にする。 Object には、PrinterSettings クラスのインスタンスを指定するが、同クラスがインポートされて居る 場合は、Object を省略して記述する事も出来る。 InstalledPrinters プロパティは、コレクションで有り、下記の様に、Count プロパティで、使用して居 るコンピュータにインストールされて居るプリンタの数を取得する事が出来る。 Object.InstalledPrinters.Count 亦、各プリンタの名前は、下記の様に、Item プロパティで取得する事が出来る。猶、此の Item プロパ ティもコレクションで有り、0 から Object.InstalledPrinters.Count-1 迄の序数で、個々のプリンタ名 を取得する。 Object.InstalledPrinters.Item(0) ~ Object.InstalledPrinters.Item(Object.InstalledPrinters.Count-1) System.Drawing.Printing.PrinterSettings.PrinterName プロパティ 使用するプリンタの名前を取得・設定するプロパティ Object.PrinterName インストールされて居るプリンタの名前のコレクションを使用して、ユーザーが印刷先のプ リンタを選択出来る様にする。 Object には、PrinterSettings クラスのインスタンスを指定する。 使用するプリンタを指定するには、下記の様に、PrinterName プロパティに、プリンタ名を文字列で設 定する。 Object.PrinterName = "プリンタ名" 猶、プリンタ名を設定した後、IsValid メソッドを使用して、プリンタ名がシステムで有効なプリンタ と仕て認識されるか何うかを判断する事が望ましい。 亦、InstalledPrinters プロパティを使用して、システムにインストールされて居るプリンタの一覧を取 得する事も出来る。 機 能 書 式 解 説 機 能 書 式 解 説

(9)

PrintDialog コントロール

ユーザーがプリンタを選択し、印刷するドキュメント部分を選択出来る様にするコントロールで有る。

■ PrintDialog コンポーネントの概要

Windows フォームの PrintDialog コンポーネントは、Windows ベースのアプリケーションで出力先プ リンタや印刷範囲等の印刷設定に使用する定義済みダイアログボックスで有る。此のダイアログボック スは、独自のダイアログボックスを使用せずに、プリンタ等の印刷設定を行う為の簡易ソリューション と仕て使用する。ドキュメント全体、指定したページ範囲、選択した部分等、様々な印刷範囲を指定す る事が出来る。此れに依り、Windows の標準のダイアログボックスを使用して、一般的な基本機能を 持つアプリケーションを作成する事が出来る。PrintDialog コンポーネントは、CommonDialog クラス を継承する。 ■ PrintDialog コンポーネントの操作 実行時にダイアログボックスを表示するには、ShowDialog メソッドを使用する。此のコンポーネント には、印刷ジョブ単位で適用されるプロパティ(PrintDocument クラス)とプリンタ単位で適用され るプロパティ(PrinterSettings クラス)が有る。此の孰れかを複数のプリンタで共有出来る。 フォームに登録すると、PrintDialog コンポーネントは、Windows フォームデザイナの下部のトレイに 表示される。 ■ PrintDialog コンポーネントの使用 PrintDialog コンポーネントは、多くのユーザーに馴染みの Windows の標準印刷ダイアログボックスで 有る。ユーザーが簡単に使用出来る為、PrintDialog コンポーネントを使用する事を推奨する。 PrintDialog コンポーネントを表示するには、アプリケーションのコードから ShowDialog メソッドを 呼び出す。 コンポーネントが表示されると、ユーザーは其れを使用して印刷ジョブのプロパティを設定する。此の 設定は、印刷ジョブに関連付けられて居るPrinterSettings クラス(ユーザーが PrintDialog コンポー ネントを通じてPageSetupDialog コンポーネントにアクセスして居る場合は PageSettings クラス)に 保存される。其の後で、設定されたプロパティを呼び出して印刷ジョブの詳細を確認する事が出来る。 ※ PrintDialog コンポーネントは、既定で、ツールボックスの印刷セクションに表示されて居る。 PrintDialog コ ン ポ ー ネ ン ト で 指 定 し た 設 定 を 、 実 際 の 印 刷 に 反 映 さ せ る に は 、 下 記 の 様 に PrintDocument クラスのインスタンスの PrinterSettings プロパティに、PrintDialog コンポーネント のPrinterSettings プロパティを設定する。

Dim Object As New PrintDocument( )

Object.PrinterSettings = PrintDialogObject.PrinterSettings

猶、PrintDocument クラスのインスタンスには、PrintDocument コンポーネントを指定する事も出来 る。

(10)

PageSetupDialog コントロール

余白や用紙方向等、ページ関連の印刷設定をユーザーが変更出来る様にするコントロールで有る。 ■ PageSetupDialog コンポーネントの概要

Windows フォームの PageSetupDialog コンポーネントは、Windows ベースのアプリケーションで印刷 時のページ設定に使用する定義済みダイアログ ボックスで有る。此のコントロールは、独自のダイア ログボックスを使用せずにページ設定を行う為の簡易ソリューションと仕て、Windows ベースのアプ リケーションの中で使用する。罫線と余白の調整、ヘッダーとフッター、及び、印刷の縦向きや横向き を設定する事が出来る。此れに依り、Windows の標準のダイアログボックスを使用して、一般的な基 本機能を持つアプリケーションを作成する事が出来る。 ■ PageSetupDialog コンポーネントの操作 実行時にダイアログボックスを表示するには、ShowDialog メソッドを使用する。此のコンポーネント には、ページ単位で適用されるプロパティ(PrintDocument クラス)と総てのドキュメントに適用さ れるプロパティ(PageSettings クラス)が有る。亦、PageSetupDialog コンポーネントを使用して PrinterSettings クラスに格納される特定のプリンタ設定を決定する事が出来る。 フォームに登録すると、PageSetupDialog コンポーネントは、Windows フォームデザイナの下部のト レイに表示される。 ■ PageSetupDialog コンポーネントの使用 PageSetupDialog コンポーネントは、多くのユーザーに馴染みの Windows の標準ページ設定ダイアロ グボックスで有る。ユーザーが簡単に使用出来る為、PageSetupDialog コンポーネントを使用する事を 推奨する。 此れを利用するには、PrintDocument クラスのインスタンスを指定する必要が有る。此れが、印刷さ れるドキュメントに成る。亦、ユーザーは、コンピュータ上にプリンタをローカルかネットワーク経由 でインストールして居る必要が有る。PageSetupDialog コンポーネントは、此のプリンタに基づいて、 ユーザーに提供するページ形式の選択肢を決定する。 PageSetupDialog コンポーネントを使用する場合に重要な点は、此のコンポーネントが、PageSettings クラスと何の様に遣り取りするかと謂う点で有る。PageSettings クラスは、用紙の向き、ページのサイ ズ、余白等、ページの印刷方法を変更する設定を指定する為に使用される。此等の各設定は、 PageSettings クラスのプロパティとして表される。PageSetupDialog クラスは、ドキュメントに関連 付けられた PageSettings クラスのインスタンスに対して、此等のプロパティを変更する。此のインス タンスは、DefaultPageSettings プロパティと仕て表される。 ※ PageSetupDialog コンポーネントは、既定で、ツールボックスの印刷セクションに表示されて居る。 PageSetupDialog コンポーネントで指定した設定を、実際の印刷に反映させるには、下記の様に PrintDocument クラスのインスタンスの DefaultPageSettings プロパティに、PageSetuoDialog コン ポーネントのPageSettings プロパティを設定する。

Dim Object As New PrintDocument( )

Object.DefaultPageSettings = PageSetupDialogObject.PageSettings 猶、必要な物丈を個々に設定する場合は、下記の様にする。

Object.DefaultPageSettings.Margins = PageSetupDialogObject.PageSettings.Margins Object.DefaultPageSettings.PaperSize = PageSetupDialogObject.PageSettings.PaperSize

(11)

■ API に依るプリンタの設定 ■ ■ プリンタ設定関係の API 関数(Windows 98) Windows XP 系でプリンタの設定を行うには、下記の API を使用する。 関数名 解説 OpenPrinter プリンタオブジェクトのハンドルを取得するAPI ClosePrinter プリンタオブジェクトをクローズするAPI PrinterProperties プリンタ設定ダイアログを表示するAPI ■ OpenPrinter 関数 機能 指定されたプリンタ、又は、プリントサーバーを識別するハンドルを取得する。 構文 ' プリンタのオブジェクトハンドルを取得するAPI関数の宣言

Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" ( _ <MarshalAs(UnmanagedType.LPStr)> _

ByVal pPrinterName As String, _ ByRef phPrinter As IntPtr, _

ByVal pDefault As Integer) As Integer パラメータ パラメータ 解説 pPrinterName プリンタ名、又は、プリントサーバー名を表す文字列を指定する。 phPrinter 整数型の変数を指定する(関数から制御が返ると、此の変数に、開かれたプリンタ オブジェクト、又は、プリントサーバーオブジェクトを表すハンドルが返る)。 pDefault 整数型の変数を指定する(通常0 を指定)。 戻り値 関数が成功すると、0以外の値が返る。 関数が失敗すると、0が返る。拡張エラー情報を取得するには、GetLastError 関数を使用する。 解説 pDefault パラメータでデータタイプとデバイスモード値を指定する事が出来る。此等の値は StartDocPrinter 関数を使用してドキュメントを印刷する目的で使われる。併し、ドキュメントを開始 した後もSetJob 関数を使用すると、此等の値を再設定する事が出来る。 OpenPrinter 関数を使用して、プリントサーバーのハンドルを開いたり、プリントサーバーに対するク ライアントのアクセス権を調べる事も出来る。此等の作業を行うには、pPrinterName パラメータにプ リントサーバー名を指定し、PRINTER_DEFAULTS 構造体の pDatatype メンバと pDevMode メンバ をNULL に設定し、DesiredAccess メンバに、SERVER_ALL_ACCESS の様なサーバーアクセスのマ スク値を設定する。返されたハンドルをWaitForPrinterChange 関数へ渡す事も出来る。ハンドルを使 い終わった時は、ClosePrinter 関数に其のハンドルを渡して閉じる。猶、Windows 95/98 では OpenPrinter 関数は、PRINTER_DEFAULTS 構造体の DesiredAccess メンバを無視する。

(12)

使用構造体(ユーザ定義型) PRINTER_DEFAULTS 構造体は、プリンタアクセス権を定義する。 メンバ 解説 pDatatype プリンタに対するデフォルトのデータの種類を指定する文字列 pDevMode DEVMODE 構造体を指すポインタ DesiredAccess プリンタに対する望ましいアクセス権を指定 DEVMODE データ構造体は、デバイスの初期化やプリンタの環境に関する情報を保持する。 メンバ 解説 dmDeviceName ドライバがサポートするデバイス名を指定(例えば、PCL/HP LaserJetR の場合は、PCL/HP LaserJet に成る。各デバイスドライバは、重複しない文字列を持つ。) dmSpecVersion 構造体の基準に成った初期化データ仕様のバージョン番号を指定 dmDriverVersion プリンタドライバの開発者が割り当てたプリンタドライバのバージョン番号を指定

dmSize dmDriverData(デバイス固有の情報)メンバを除いた DEVMODE 構造体のサイズをバイト単 位で指定(データのドライバに依存しない部分而巳を操作するアプリケーションでは、此のメン バを使って、バージョンの違いを考慮せずに構造体のサイズを調べる事が出来る。) dmDriverExtra 此の構造体に続くプライベートなドライバデータのバイト長を保持(デバイスドライバがデバイ ス固有の情報を使わない時は、此のメンバに0 を設定) dmFields DEVMODE 構 造 体 の 残 り の メ ン バ で 、 初 期 化 さ れ て 居 る メ ン バ を 指 定 ( ビ ッ ト 0 が dmOrientation に対応し、ビット 1 が dmPaperSize に対応すると謂う様に表す。プリンタドラ イバは、此等のメンバの内、プリンタの仕様に適合したメンバ而巳をサポートする。) dmOrientation 用 紙 の 方 向 を 指 定 ( 此 の メ ン バ は 、 DMORIENT_PORTRAIT ( 1 ) 又 は DMORIENT_LANDSCAPE(2)の孰れかに成る。)

dmPaperSize 印刷する用紙のサイズを指定(用紙の高さと幅が夫々れ、dmPaperLength と dmPaperWidth

メンバに設定されて居る時は、此のメンバには 0 を設定する事が出来る。其れ以外は、次の定 義済みの値の孰れかをdmPaperSize メンバに設定する事が出来る。) DMPAPER_LETTER Letter、8 1/2 × 11 インチ MPAPER_LEGAL Legal、8 1/2 × 14 インチ DMPAPER_A4 A4 シート、210 × 297 mm DMPAPER_CSHEET C シート、17 × 22 インチ DMPAPER_DSHEET D シート、22 × 34 インチ DMPAPER_ESHEET E シート、34 × 44 インチ

DMPAPER_LETTERSMALL Letter Small、8 1/2 × 11 インチ

DMPAPER_TABLOID Tabloid、11 × 17 インチ DMPAPER_LEDGER Ledger、17 × 11 インチ DMPAPER_STATEMENT Statement、5 1/2 × 8 1/2 インチ DMPAPER_EXECUTIVE Executive、7 1/4 × 10 1/2 インチ DMPAPER_A3 A3 シート、297 × 420 mm DMPAPER_A4SMALL A4 small シート、210 × 297 mm DMPAPER_A5 A5 シート、148 × 210 mm DMPAPER_B4 B4 シート、250 × 354 mm DMPAPER_B5 B5 シート、182 × 257 mm DMPAPER_FOLIO Folio、8 1/2 × 13 インチ DMPAPER_QUARTO Quarto、215 × 275 mm DMPAPER_10X14 10 × 14 インチ シート DMPAPER_11X17 11 × 17 インチ シート

(13)

DMPAPER_NOTE Note、 8 1/2 × 11 インチ DMPAPER_ENV_9 #9 Envelope、3 7/8 × 8 7/8 インチ DMPAPER_ENV_10 #10 Envelope、4 1/8 × 9 1/2 インチ DMPAPER_ENV_11 #11 Envelope、4 1/2 × 10 3/8 インチ DMPAPER_ENV_12 #12 Envelope、4 3/4 × 11 インチ DMPAPER_ENV_14 #14 Envelope、5 × 11 1/2 インチ DMPAPER_ENV_DL DL Envelope、110 × 220 mm DMPAPER_ENV_C5 C5 Envelope、162 × 229 mm DMPAPER_ENV_C3 C3 Envelope、324 × 458 mm DMPAPER_ENV_C4 C4 Envelope、229 × 324 mm DMPAPER_ENV_C6 C6 Envelope、114 × 162 mm DMPAPER_ENV_C65 C65 Envelope、114 × 229 mm DMPAPER_ENV_B4 B4 Envelope、250 × 353 mm DMPAPER_ENV_B5 B5 Envelope、176 × 250 mm DMPAPER_ENV_B6 B6 Envelope、176 × 125 mm

DMPAPER_ENV_ITALY Italy Envelope、110 × 230 mm

DMPAPER_ENV_MONARCH Monarch Envelope、3 7/8 × 7 1/2 インチ

DMPAPER_ENV_PERSONAL 6 3/4 Envelope、3 5/8 × 6 1/2 インチ

DMPAPER_FANFOLD_US US Std Fanfold、14 7/8 × 11 インチ

DMPAPER_FANFOLD_STD_GERMAN German Std Fanfold、8 1/2 × 12 インチ

DMPA PER_FANFOLD_LGL_GERMAN German Legal Fanfold、8 1/2 × 13 インチ

dmPaperLength dmPaperSize メンバで指定された用紙の長さを、独自の用紙サイズや、ドッドマトリックスプ リンタの様なデバイスの為にオーバライド(此れに依り、様々な長さの用紙に印刷する事が出来 る。此の構造体の物理的な長さを指定する他の総てのメンバ同様に、10 分の 1mm 単位で指定 する。) dmPaperWidth dmPaperSize メンバで指定された用紙幅をオーバライド dmScale 印刷出力をスケーリングする時の、スケーリング係数を指定(見掛けのページサイズは、物理ペ ージサイズに dmScale/100 を掛けてスケーリングされる。例えば、レターサイズのページで dmScale の値が 50 の時は、出力テキストやグラフィックの高さや幅が元のサイズの半分に成る 為、17×22 インチのページと同じ量のデータを持つ事が出来る。) dmCopies デバイスが複数部数のコピーをサポートして居る時は、印刷するコピー部数を指定 dmDefaultSource 予約されて居り、0 固定 dmPrintQuality プリンタの解像度を指定(デバイスに依存しない次の 4 つの定義済みの値が用意されて居る。 正の値が指定されると、インチ当たりのドット数DPI を示す。其の為、値はデバイスに依存す る。) DMRES_HIGH DMRES_MEDIUM DMRES_LOW DMRES_DRAFT dmColor カラープリンタで、カラーとモノクロの切替(次の値が設定可能) DMCOLOR_COLOR DMCOLOR_MONOCHROME dmDuplex 両面印刷が出来るプリンタで、両面印刷するか何うかを選択(次の値が設定可能) DMDUP_SIMPLEX DMDUP_HORIZONTAL DMDUP_VERTICAL

(14)

dmYResolution プリンタの y 方向の解像度をインチ当たりのドット数で指定(プリンタドライバが此のメンバ を初期化すると、dmPrintQuality メンバはプリンタの x 方向の解像度をインチ当たりのドット 数で指定する。) dmTTOption TrueTypeR フォントの印刷方法を指定(此のメンバには、次の値の孰れかを指定) DMTT_BITMAP TrueType フォントをグラフィックとして印刷する。ドットマトリックスプリ ンタのデフォルトの動作で有る。

DMTT_DOWNLOAD TrueType フォントをソフトフォントとしてダウンロードする。Printer

Control Language(PCL)を使う Hewlett-Packard のプリンタのデフォル トの動作で有る。

DMTT_SUBDEV TrueType フォントをデバイスフォントで置き換える。PostScriptR プリンタ

のデフォルトの動作で有る。 dmCollate 複数部数を印刷する時にページ順に揃えるか何うかを指定(DMCOLLATE_FALSE を使うと、 コピーする部数に拘らずデータはプリンタに 1 回丈しか送られないので、より早く、効果的に 出力される。プリンタは、単純にページを再印刷する様に指示される。此のメンバには、次の値 の孰れかを指定。) DMCOLLATE_TRUE 複数部数の印刷時にページ順に揃える。 DMCOLLATE_FALSE 複数部数の印刷時にページ順揃えない。

dmFormName 例えば、Letter 又は Legal の様な、使用するフォーム名を指定(EnumForms 関数を使用して、 総ての名前を取り出す事が出来る。) dmUnusedPadding 構造体を DWORD 境界に揃える為に使用(此のメンバを使う事も、参照する事も出来ない。此 のメンバの名前と使用は予約されて居り、将来のリリースで変更される事が有る。) dmBitsPerPel ディスプレイデバイスのカラー解像度をピクセル当たりのビット数で指定(例えば、16 色なら 4 ビット、256 色なら 8 ビット、65536 色ならば 16 ビットに成る。) dmPelsWidth 可視のデバイスの表面の幅をピクセル単位で指定 dmPelsHeight 可視のデバイスの表面の高さをピクセル単位で指定 dmDisplayFlags デバイスのディスプレイモードを指定(次の物がフラグと仕て有効) DM_GRAYSCALE ディスプレイが非カラーのデバイスで有る事を指定する。此のフラグが設定 されて居ないと、カラー デバイスと看做す。 DM_INTERLACED ディスプレイモードがインターレースで有る事を指定する。此のフラグが設 定されて居ないと、ノンインターレースで有ると看做す。 dmDisplayFrequency 特定のモードでのディスプレイデバイスの周波数をヘルツ(1 秒当たりのサイクル数)で指定 ■ ClosePrinter 関数 機能 特定のプリンタオブジェクトをクローズする。 構文

Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As IntPtr) As Integer パラメータ

hPrinter クローズするプリンタオブジェクトのハンドルを指定する。OpenPrinter 関数、又は AddPrinter 関数が返すハンドルを使用する。

(15)

■ PrinterProperties 関数 機能

指定されたプリンタのプロパティダイアログボックスを表示する。

構文

Private Declare Function PrinterProperties Lib "winspool.drv" ( _ ByVal hwnd As Integer, _

ByVal hPrinter As Integer _ ) As Integer パラメータ パラメータ 解説 hWnd ダイアログボックスの親ウィンドウを識別するハンドルを指定する。 hPrinter プリンタオブジェクトを識別するハンドルを指定する。 戻り値 関数が成功すると、0以外の値が返る。 関数が失敗すると、0が返る。拡張エラー情報を取得するには、GetLastError 関数を使用する。 ■ 注意事項

Visual Basic.NET 以降では、API 関数の使用は、推奨されて居ない。従って、安易に API 関数を使用 しない事が望ましい。止むを得ない場合に限り、使用す可きで有る。

亦、多くのAPI 関数は、Visual Basic 6.0 以前のデータ型に対応して居り、Visual Basic.NET 以降で使 用するには、データ型の対応に注意する必要が有る。

其の為、System.Runtime.InteropServices 名前空間の MarshalAsAttribute クラスの MarshalAs を使 用して、マネージコード(.NET Framework で管理されたコード)とアンマネージコード(.NET Framework で管理されないコード)間でデータをマーシャリングする方法を示す必要が有る。

一般に、文字列を、LPStr、LPWStr、LPTStr、BStr の孰れかと仕て、アンマネージコードにマーシ ャリングする時に用いられる。

参照

関連したドキュメント

・M.2 Flash モジュール専用RAID設定サービス[PYBAS1SM2]とWindows Server 2022 Standard(16コア/Hyper-V)[PYBWPS5H]インストール/Windows Server 2019

Windows Hell は、指紋または顔認証を使って Windows 10 デバイスにアクセスできる、よ

パスワード 設定変更時にパスワードを要求するよう設定する 設定なし 電波時計 電波受信ユニットを取り外したときの動作を設定する 通常

目標 目標/ 目標 目標 / / /指標( 指標( 指標(KPI 指標( KPI KPI KPI)、実施スケジュール )、実施スケジュール )、実施スケジュール )、実施スケジュールの の の の設定

※証明書のご利用は、証明書取得時に Windows ログオンを行っていた Windows アカウントでのみ 可能となります。それ以外の

Windows Mobile デバイスセンターまたは ActiveSync をインストールすることで、パソコ ンと FC-250 との間でパートナーシップの設定や、Microsoft Outlook

②企業情報が「特定CO の発給申請者」欄に表示

[印刷]ボタンを押下すると、印刷設定画面が起動します。(「3.1.7 印刷」参照)