Delphi 设置系统默认打印机
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,获取默认打印机名:function TForm1.GetDefaultPrinterName: string;var iSize: Integer; sIniFile, sSection, sKe
千家信息网最后更新 2025年02月02日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安全错误
数据库的锁怎样保障安全
荷兰有什么大流量服务器
网络安全需要理性去守护
CISQ数据库有多少图片
合肥极有软件开发
网络安全先进申报
计算机网络技术用什么代表
怎么卸载掉数据库
web项目数据库乱码问题
特殊字符数据库语句
网络安全周手抄报顺口
blob是什么数据库的类型
网络安全主题班会开场白100字
ssr服务器安全么
违反国家网络安全法四十四条
深圳钧保互联网科技有限公司
网络安全和行业分析
大连BMC软件开发工程师
云服务器结构
pe服务器怎么固定ip
网络安全专网龙头
电子软件开发是什么
平谷区网络技术服务便捷
监控服务器怎么增加碟机
怎么连接其它电脑的数据库
第三代搜索软件开发
查违章交管服务器繁忙什么意思
风暴英雄+所有英雄数据库
北京同博网络技术
想学软件开发有什么方法
旌德新能源软件开发服务参考价格