Delphi 设置系统默认打印机
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,获取默认打印机名:function TForm1.GetDefaultPrinterName: string;var iSize: Integer; sIniFile, sSection, sKe
千家信息网最后更新 2026年11月03日Delphi 设置系统默认打印机
获取默认打印机名:
function TForm1.GetDefaultPrinterName: string;var iSize: Integer; sIniFile, sSection, sKeyName: PChar;begin iSize := 256; sIniFile := 'win.ini'; sSection := 'windows'; sKeyName := 'device'; SetLength(Result, iSize); GetPrivateProfileString(sSection, sKeyName, nil, PChar(Result), iSize, sIniFile); Result := Copy(Result, 0, Pos(',', Result) - 1);end;更改默认打印机:需要Uses WinSpool
procedure ChangeDefaultPrinter(const Name: string);var W2KSDP: function(pszPrinter: PChar): Boolean; stdcall; H: THandle; Size, Dummy: Cardinal; PI: PPrinterInfo2;begin if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 5) then begin @W2KSDP := GetProcAddress(GetModuleHandle(winspl), 'SetDefaultPrinterA'); if @W2KSDP = nil then RaiseLastOSError; if not W2KSDP(PChar(Name)) then RaiseLastOSError; end else begin if not OpenPrinter(PChar(Name), H, nil) then RaiseLastOSError; try GetPrinter(H, 2, nil, 0, @Size); if GetLastError <> ERROR_INSUFFICIENT_BUFFER then RaiseLastOSError; GetMem(PI, Size); try if not GetPrinter(H, 2, PI, Size, @Dummy) then RaiseLastOSError; PI^.Attributes := PI^.Attributes or PRINTER_ATTRIBUTE_DEFAULT; if not SetPrinter(H, 2, PI, PRINTER_CONTROL_SET_STATUS) then RaiseLastOSError; finally FreeMem(PI); end; finally ClosePrinter(H); end; end;end; //ChangeDefaultPrinter
ChangeDefaultPrinter函数 在D7下使用SetDefaultPrinterA,在Delphi2010以上版本使用SetDefaultPrinterW
procedure TDM.ChangeDefaultPrinter(const Name: string);var Device: array[0..255] of Char; Driver: array[0..255] of char; Port: array[0..255] of char; s : array[0..255] of Char; hDeviceMode: THandle; I: Integer;begin for I := 0 to Printer.Printers.Count - 1 do if Printer.Printers.Strings[I] = name then begin Printer.PrinterIndex := I; Break; end; Printer.GetPrinter (Device, Driver, Port, hDeviceMode); StrCopy (s, Device); StrCat (s, ','); StrCat (s, Driver); StrCat (s, ','); StrCat (s, Port); WriteProfileString ('windows', 'device', s); StrCopy (s, 'windows'); SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s));end;//这个函数也可以更改打印机,效果没有上面的好
打印机
函数
效果
版本
面的
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
关于新基建和互联网科技
互联网 科技
互联网金融科技平台
深圳天众互联网科技公司
广州善班互联网科技
互联网科技大会
镁科技互联网资讯平台
隆华科技工业互联网
重庆互联网医院沙龙医盟信息科技
河南猎农互联网科技有限公司
杭州壁岐互联网科技有限公司
畅思互联网科技
美国互联网科技实力
上海创道互联网络科技有限公司
陕西九四连强互联网科技有限公司
西安左小互联网科技有限公司
张家口科技产业互联网平台
米泉互联网科技专业怎么样
现代科技的标志之一的互联网
科技发展第三阶段互联网时代
互联网科技革命
狮子座互联网科技培训
深圳国际航运科技和互联网
栖莱科技互联网股份有限公司
链环科技传统企业怎么转型互联网
群盈汇互联网科技有限公司
伍佰万互联网科技怎么赚钱
云鲸互联网络科技有限公司
张家口科技产业互联网平台
利用互联网等科技手段