線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3055
推到 Plurk!
推到 Facebook!

如何取得系統安裝的印表機的連接位置

缺席
iann
一般會員


發表:17
回覆:31
積分:14
註冊:2003-08-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-31 14:24:52 IP:61.31.xxx.xxx 未訂閱
各位大大您好 最近在寫程序時,遇到一個問題。我想要取得系統所安裝的印表機的連接埠的位置。在使用 PrintDialog 裡頭,可以看到所選擇的印表機的連接位置。但是,我找不到一個函數可以取得這個連接埠的內容。請各位大大不吝賜教..謝謝。 努力學習中....
------
努力學習中....
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-31 22:14:16 IP:218.32.xxx.xxx 未訂閱
iann 你好: 建議你先查查 "TPrinter" 的說明.
iann
一般會員


發表:17
回覆:31
積分:14
註冊:2003-08-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-04 09:06:15 IP:61.31.xxx.xxx 未訂閱
Mickey 您好: TPrinter 我之前就去查過了,但是裡頭的 GetPrinter 函數所取回來 的PORT 資料並不能用。之後,我在大陸那兒的帖子,找到了下面的資料。 用winspool取得本機安裝的印表機的詳細資訊 在Delphi 6 Professional version on Windows 2000 Professional環境下測試過 窗體的名字為"FPrint",有TMemo 和 TCombobox 兩個控件 unit unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, TabEdit, Printers, Buttons, WinSpool; type TPrinterInfo = record SeverName : PChar; PrinterName : PChar; ShareName : PChar; PortName : PChar; DriverName : PChar; Comment : PChar; Location : PChar; DeviceMode : PDeviceModeA; SepFile : PChar; PrintProcessor : PChar; DataType : PChar; Parameters : PChar; SecurityDescriptor: PSecurityDescriptor; Attributes : Cardinal; DefaultPriority : Cardinal; StartTime : Cardinal; UntilTime : Cardinal; Status : Cardinal; Jobs : Cardinal; AveragePPM : Cardinal; end; TFPrint = class(TForm) Memo1: TMemo; ComboBox1: TComboBox; procedure FormShow(Sender: TObject); procedure ComboBox1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; function GetCurrentPrinterInformation: TPrinterInfo; function GetCurrentPrinterHandle: THandle; var FPrint: TFPrint; implementation {$R *.dfm} function GetCurrentPrinterHandle: THandle; var Device, Driver, Port : array[0..255] of char; hDeviceMode: THandle; begin Printer.GetPrinter(Device, Driver, Port, hDeviceMode); if not OpenPrinter(@Device, Result, nil) then RaiseLastWin32Error; end; function GetCurrentPrinterInformation: TPrinterInfo; var hPrinter : THandle; pInfo: PPrinterInfo2; bytesNeeded: DWORD; begin hprinter := GetCurrentPrinterHandle; try Winspool.GetPrinter( hPrinter, 2, Nil, 0, @bytesNeeded ); pInfo := AllocMem( bytesNeeded ); try Winspool.GetPrinter( hPrinter, 2, pInfo, bytesNeeded, @bytesNeeded ); Result.SeverName := pInfo^.pServerName; Result.PrinterName := pInfo^.pPrinterName; Result.ShareName := pInfo^.pShareName; Result.PortName := pInfo^.pPortName; Result.DriverName := pInfo^.pDriverName; Result.Comment := pInfo^.pComment; Result.Location := pInfo^.pLocation; Result.DeviceMode := pInfo^.pDevMode; Result.SepFile := pInfo^.pSepFile; Result.PrintProcessor := pInfo^.pPrintProcessor; Result.DataType := pInfo^.pDatatype; Result.Parameters := pInfo^.pParameters; Result.SecurityDescriptor := pInfo^.pSecurityDescriptor; Result.Attributes := pInfo^.Attributes; Result.DefaultPriority := pInfo^.DefaultPriority; Result.StartTime := pInfo^.StartTime; Result.UntilTime := pInfo^.UntilTime; Result.Status := pInfo^.Status; Result.Jobs := pInfo^.cJobs; Result.AveragePPM := pInfo^.AveragePPM; finally FreeMem( pInfo ); end; finally ClosePrinter( hPrinter ); end; end; procedure TFPrint.FormShow(Sender: TObject); begin ComboBox1.Items.Assign(Printer.Printers); ComboBox1.ItemIndex := 0; ComboBox1.OnChange(nil); end; procedure TFPrint.ComboBox1Change(Sender: TObject); var PrinterInfo: TPrinterInfo; begin PrinterInfo := GetCurrentPrinterInformation; memo1.Clear; with memo1.Lines do begin Add('GENERAL INFORMATION'); Add('); Add('ServerName: ' PrinterInfo.SeverName); Add('PrinterName: ' PrinterInfo.PrinterName); Add('ShareName: ' PrinterInfo.ShareName); Add('PortName: ' PrinterInfo.PortName); Add('DriverName: ' PrinterInfo.DriverName); Add('Comment: ' PrinterInfo.Comment); Add('Location: ' PrinterInfo.Location); Add('SepFile: ' PrinterInfo.SepFile); Add('PrintProcessor: ' PrinterInfo.PrintProcessor); Add('DataType: ' PrinterInfo.DataType); Add('Parameters: ' PrinterInfo.Parameters); Add('Attributes: ' IntToStr(PrinterInfo.Attributes)); Add('DefaultPriority: ' IntToStr(PrinterInfo.DefaultPriority)); Add('StartTime: ' IntToStr(PrinterInfo.StartTime)); Add('UntilTime: ' IntToStr(PrinterInfo.UntilTime)); Add('Status: ' IntToStr(PrinterInfo.Status)); Add('Jobs: ' IntToStr(PrinterInfo.Jobs)); Add('AveragePPM: ' IntToStr(PrinterInfo.AveragePPM)); Add('); Add('DEVICEMODE INFORMATION'); Add('); Add('DeviceName: ' PrinterInfo.DeviceMode.dmDeviceName); Add('SpecVersion: ' IntToStr(PrinterInfo.DeviceMode.dmSpecVersion)); Add('DriverVersion: ' IntToStr(PrinterInfo.DeviceMode.dmDriverVersion)); Add('Size: ' IntToStr(PrinterInfo.DeviceMode.dmSize)); Add('DriverExtra: ' IntToStr(PrinterInfo.DeviceMode.dmDriverExtra)); Add('Fields: ' IntToStr(PrinterInfo.DeviceMode.dmFields)); Add('Orientation: ' IntToStr(PrinterInfo.DeviceMode.dmOrientation)); Add('PaperSize: ' IntToStr(PrinterInfo.DeviceMode.dmPaperSize)); Add('PaperLength: ' IntToStr(PrinterInfo.DeviceMode.dmPaperLength)); Add('PaperWidth: ' IntToStr(PrinterInfo.DeviceMode.dmPaperWidth)); Add('Scale: ' IntToStr(PrinterInfo.DeviceMode.dmScale)); Add('Copies: ' IntToStr(PrinterInfo.DeviceMode.dmCopies)); Add('DefaultSource: ' IntToStr(PrinterInfo.DeviceMode.dmDefaultSource)); Add('PrintQuality: ' IntToStr(PrinterInfo.DeviceMode.dmPrintQuality)); Add('Color: ' IntToStr(PrinterInfo.DeviceMode.dmColor)); Add('Duplex: ' IntToStr(PrinterInfo.DeviceMode.dmDuplex)); Add('YResolution: ' IntToStr(PrinterInfo.DeviceMode.dmYResolution)); Add('TTOption: ' IntToStr(PrinterInfo.DeviceMode.dmTTOption)); Add('Collate: ' IntToStr(PrinterInfo.DeviceMode.dmCollate)); Add('LogPixels: ' IntToStr(PrinterInfo.DeviceMode.dmLogPixels)); Add('BitsPerPel: ' IntToStr(PrinterInfo.DeviceMode.dmBitsPerPel)); Add('PelsWidth: ' IntToStr(PrinterInfo.DeviceMode.dmPelsWidth)); Add('PelsHeight: ' IntToStr(PrinterInfo.DeviceMode.dmPelsHeight)); Add('DisplayFlags: ' IntToStr(PrinterInfo.DeviceMode.dmDisplayFlags)); Add('DisplayFrequency: ' IntToStr(PrinterInfo.DeviceMode.dmDisplayFrequency)); Add('ICMMethod: ' IntToStr(PrinterInfo.DeviceMode.dmICMMethod)); Add('ICMintent: ' IntToStr(PrinterInfo.DeviceMode.dmICMIntent)); Add('MediaType: ' IntToStr(PrinterInfo.DeviceMode.dmMediaType)); Add('DitherType: ' IntToStr(PrinterInfo.DeviceMode.dmDitherType)); Add('ICCManufacturer: ' IntToStr(PrinterInfo.DeviceMode.dmICCManufacturer)); Add('ICCModel: ' IntToStr(PrinterInfo.DeviceMode.dmICCModel)); Add('PanningWidth: ' IntToStr(PrinterInfo.DeviceMode.dmPanningWidth)); Add('PanningHeight: ' IntToStr(PrinterInfo.DeviceMode.dmPanningHeight)); end; end; end. //rock //轉載請保留此資訊 努力學習中....
------
努力學習中....
系統時間:2024-04-25 7:34:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!