掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
プリンタの設定(余白)についてご教授ください (ID:26839)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>プリンタのDEVMODE構造体の拡張領域のものです。 このプライベート部のデータを表示するプログラム例です。 HDDの中にありましたので... implementation uses Printers; {$R *.dfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin Memo1.ScrollBars:=ssVertical; Memo1.Lines.Clear; Memo1.Lines.BeginUpdate; GetPrinterExDevmode(Printer.PrinterIndex); Memo1.Lines.EndUpdate; end; //=========================================================== // 拡張DEVMODE値の取得 // FDELPHI 11番会議室 高田さんのコード改変 // ExDevModeのどこに何が定義してあるかはドライバによる //=========================================================== procedure TForm1.GetPrinterExDevmode(Idx: integer); type {Extra部を含めた拡張TDeviceMode} PExDevMode = ^TExDevMode; TExDevMode = Packed Record dmBasis : TDeviceMode; //基本 dmExtra : array [0..1024] of word; //拡張(WORDにした) end; var Device, Driver, Port: array[0..79] of Char; DeviceMode : THandle; APDev : PDevMode; ExDevMode : PExDevMode; i,cnt : integer; begin //Index変更後のDEVMODE構造体の再取得 Printer.PrinterIndex := Idx; Printer.GetPrinter(Device, Driver, Port, DeviceMode); Printer.SetPrinter(Device, Driver, Port, 0); //エラー判定のためのDEVMODE構造体の再取得 Printer.GetPrinter(Device, Driver, Port, DeviceMode); if DeviceMode = 0 then begin ShowMessage('Printer.GetPrinter エラー'); exit; end; try //APDevにロックされたメモリのアドレスを得る APDev := GlobalLock(DeviceMode); //APDevを拡張TDeviceMode(TExDevMode)にキャスト ExDevMode := PExDevMode(APDev); //結果の表示 Memo1.Lines.Add('[プリンタ名] '+APDev^.dmDeviceName); Memo1.Lines.Add('[DEVMODEサイズ] '+IntToStr(APDev^.dmSize)); Memo1.Lines.Add('[ExEVMODEサイズ] '+IntToStr(APDev^.dmDriverExtra)); Memo1.Lines.Add('[合計サイズ] '+IntToStr(APDev^.dmSize+APDev^.dmDriverExtra)); Memo1.Lines.Add(''); Memo1.Lines.Add('★これ以降がExtraData★'); //dmExtra部の表示 i:=round(APDev^.dmDriverExtra/2) - 1;//wordは2バイト for cnt:=0 to i do begin Memo1.Lines.Add(FormatFloat('[000] ',cnt)+ IntToStr(ExDevMode^.dmExtra[cnt])); end; finally GlobalUnLock(DeviceMode); end; end; がんばって下さい。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.