如何取得当前默认打印机的端口名称? 急,在线等待!!! 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var MyReg: TRegistry; szPortName: String;begin MyReg := TRegistry.Create; try MyReg.RootKey := HKEY_LOCAL_MACHINE; if MyReg.OpenKey('\System\CurrentControlSet\Control\Print\Printers\'+'HP LaserJet 6L Pro PCL5e',False) then szPortName:=MyReg.ReadString('Port') else szPortName:=''; Except MyReg.Free; end; showmessage(szPortName); 其中 HP LaserJet 6L Pro PCL5e为默认打印机 我给你个文章,这个不是我写的,我从大富翁上找的Delphi中获取打印机设备名和端口名 uses Printers; {$IFNDEF WIN32} const MAX_PATH = 144; {$ENDIF} procedure TForm1.Button1Click(Sender: TObject); var pDevice : pChar; pDriver : pChar; pPort : pChar; hDMode : THandle; begin if PrintDialog1.Execute then begin GetMem(pDevice, cchDeviceName); GetMem(pDriver, MAX_PATH); GetMem(pPort, MAX_PATH); Printer.GetPrinter(pDevice, pDriver, pPort, hDMode); if lStrLen(pDriver) = 0 then begin GetProfileString('Devices', pDevice, '', pDriver, MAX_PATH); pDriver[pos(',', pDriver) - 1] := #0; end; if lStrLen(pPort) = 0 then begin GetProfileString('Devices', pDevice, '', pPort, MAX_PATH); lStrCpy(pPort, @pPort[lStrLen(pPort)+2]); end; Memo1.Lines.Add('Device := ' + StrPas(pDevice)); Memo1.Lines.Add('Driver := ' + StrPas(pDriver)); Memo1.Lines.Add('Port := ' + StrPas(pPort)); FreeMem(pDevice, cchDeviceName); FreeMem(pDriver, MAX_PATH); FreeMem(pPort, MAX_PATH); end; end; Api函数列表 --与打印相关 Api函数名 函数说明 适用范围 W3.x W95 NT AddPrinterConnection 为当前用户建立与打印机的联系 否 是 是 StartPagePrinter 开始打印机 否 是 是 StartDoc 开始打印作业 是 是 是 StartDocPrinter 开始打印作业 否 是 是 AddPrintProvidor 加入一个打印机支持器 否 是 是 AddForm 加入一个打印机窗体 否 是 是 AddPort 加入一个打印机端口 否 是 是 AddMonitor 加入一个打印机管理器 否 是 是 ShellExecute 打开或打印指定文件 否 是 是 ClosePrinter 关闭打开的打印机 否 是 是 WritePrinter 向打印机输出数据 否 是 是 AddPrinter 在打印机服务器上建立一个打印机 否 是 是 SetAbortProc 设备打印作业的放弃函数 否 是 是 SetPrinter 设置打印机信息 否 是 是 SetPrinterData 设置打印机配置 否 是 是 SetJob 设置打印作业信息 否 是 是 ResetPrinter 设置打印数据类型和设备模式值 否 是 是 DeletePrinterConnection 删除与打印机的连接 否 是 是 DeletePrintProcessor 删除打印机处理器 否 是 是 DeletePrinterDriver 删除打印机驱动程序 否 是 是 DeletePrinter 删除打印机服务器上的打印机 否 是 是 DeleteMonitor 删除打印机监视器 否 是 是 DeletePrintProvidor 删除打印机提供者 否 是 是 DeleteForm 删除打印机窗体层差 否 是 是 AbortPrinter 删除打印机缓冲文件 否 是 是 DeletePort 删除打印机端口 否 是 是 AddJob 启动一个打印作业 否 是 是 AdvancedDocumentProperties 进行打印机高级设置 否 是 是 PrintDlg 建立打印文本对话框 否 是 是 EnumPrintProcessors 枚举已安装的打印机处理器 否 是 是 EnumPrinterDrivers 枚举已安装的打印机驱动程序 否 是 是 EnumPorts 枚举可用打印机端口 否 是 是 EnumPrintProcessorDatatypes 枚举打印机所支持的数据类型 否 是 是 EnumForms 枚举所支持的打印机窗体 否 是 是 AbortDoc 终止一项打印作业 是 是 是 PrinterProperties 修改打印机属性 否 是 是 AddPrintProcessor 将打印处理器复制到打印机服务器中 否 是 是 AddPrinterDriver 将打印机驱动程序复制到打印机服务器中 否 是 是 PrinterMessageBox 显示打印作业出错信息 否 是 是 ConnectToPrinterDlg 显示浏览对话并连接网络打印机 否 是 是 EndPagePrinter 结束打印页 否 是 是 EndDoc 结束打印作业 是 是 是 EndDocPrinter 结束打印作业 否 是 是 StartPage 准备打印机接收数据 是 是 是 WaitForPrinterChange 监测打印机或打印机服务器变化 否 是 是 GetPrintProcessorDirectory 获取打印机驱动处理器路径 否 是 是 GetPrinterDriver 获取打印机驱动程序信息 否 是 是 GetPrinterDriverDirectory 获取打印机驱动程序路径 否 是 是 GetPrinter 获取打印机信息 否 是 是 GetPrinterData 获取打印机配置信息 否 是 是 GetForm 获取打印机窗口信息 否 是 是 EnumJobs 获取打印作业信息 否 是 是 GetJob 获取打印作业信息 否 是 是 OpenPrinter 获取指定打印机的句柄 否 是 是 ReadPrinter 读打印机数据 否 是 是 DocumentProperties 配置打印机设置 否 是 是 ConfigurePort 配置打印机端口 关于shellexecute 有没有邮件收发共享的软件? 求教条码打印问题 关于事件提示... 各位朋友,真的不能实现ms xml3.0的功能吗?会这种的朋友请帮助.我的原代码如下: excel 导入DBGrid,怎样实现? 天太热了,请大家来喝点可乐,呵呵 求助!对INI文件内容的读取操作代码? 很急!!!怎样把字符动态转换成文件类型的变量。请大家多多指点。先谢了。 ================请问如何将回车转换为Tab???=================== pchar 从 dll 中传出值乱问题?大侠救命 高手来帮我看一下这段自制组件的代码错误在哪里???小弟不明白!
szPortName: String;
begin
MyReg := TRegistry.Create;
try
MyReg.RootKey := HKEY_LOCAL_MACHINE;
if MyReg.OpenKey('\System\CurrentControlSet\Control\Print\Printers\'+'HP LaserJet 6L Pro PCL5e',False) then
szPortName:=MyReg.ReadString('Port')
else
szPortName:='';
Except
MyReg.Free;
end;
showmessage(szPortName);
Delphi中获取打印机设备名和端口名 uses Printers; {$IFNDEF WIN32}
const MAX_PATH = 144;
{$ENDIF} procedure TForm1.Button1Click(Sender: TObject);
var
pDevice : pChar;
pDriver : pChar;
pPort : pChar;
hDMode : THandle;
begin
if PrintDialog1.Execute then begin
GetMem(pDevice, cchDeviceName);
GetMem(pDriver, MAX_PATH);
GetMem(pPort, MAX_PATH);
Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
if lStrLen(pDriver) = 0 then begin
GetProfileString('Devices', pDevice, '', pDriver, MAX_PATH);
pDriver[pos(',', pDriver) - 1] := #0;
end;
if lStrLen(pPort) = 0 then begin
GetProfileString('Devices', pDevice, '', pPort, MAX_PATH);
lStrCpy(pPort, @pPort[lStrLen(pPort)+2]);
end;
Memo1.Lines.Add('Device := ' + StrPas(pDevice));
Memo1.Lines.Add('Driver := ' + StrPas(pDriver));
Memo1.Lines.Add('Port := ' + StrPas(pPort));
FreeMem(pDevice, cchDeviceName);
FreeMem(pDriver, MAX_PATH);
FreeMem(pPort, MAX_PATH);
end;
end;
--与打印相关
Api函数名 函数说明 适用范围
W3.x W95 NT
AddPrinterConnection 为当前用户建立与打印机的联系 否 是 是
StartPagePrinter 开始打印机 否 是 是
StartDoc 开始打印作业 是 是 是
StartDocPrinter 开始打印作业 否 是 是
AddPrintProvidor 加入一个打印机支持器 否 是 是
AddForm 加入一个打印机窗体 否 是 是
AddPort 加入一个打印机端口 否 是 是
AddMonitor 加入一个打印机管理器 否 是 是
ShellExecute 打开或打印指定文件 否 是 是
ClosePrinter 关闭打开的打印机 否 是 是
WritePrinter 向打印机输出数据 否 是 是
AddPrinter 在打印机服务器上建立一个打印机 否 是 是
SetAbortProc 设备打印作业的放弃函数 否 是 是
SetPrinter 设置打印机信息 否 是 是
SetPrinterData 设置打印机配置 否 是 是
SetJob 设置打印作业信息 否 是 是
ResetPrinter 设置打印数据类型和设备模式值 否 是 是
DeletePrinterConnection 删除与打印机的连接 否 是 是
DeletePrintProcessor 删除打印机处理器 否 是 是
DeletePrinterDriver 删除打印机驱动程序 否 是 是
DeletePrinter 删除打印机服务器上的打印机 否 是 是
DeleteMonitor 删除打印机监视器 否 是 是
DeletePrintProvidor 删除打印机提供者 否 是 是
DeleteForm 删除打印机窗体层差 否 是 是
AbortPrinter 删除打印机缓冲文件 否 是 是
DeletePort 删除打印机端口 否 是 是
AddJob 启动一个打印作业 否 是 是
AdvancedDocumentProperties 进行打印机高级设置 否 是 是
PrintDlg 建立打印文本对话框 否 是 是
EnumPrintProcessors 枚举已安装的打印机处理器 否 是 是
EnumPrinterDrivers 枚举已安装的打印机驱动程序 否 是 是
EnumPorts 枚举可用打印机端口 否 是 是
EnumPrintProcessorDatatypes 枚举打印机所支持的数据类型 否 是 是
EnumForms 枚举所支持的打印机窗体 否 是 是
AbortDoc 终止一项打印作业 是 是 是
PrinterProperties 修改打印机属性 否 是 是
AddPrintProcessor 将打印处理器复制到打印机服务器中 否 是 是
AddPrinterDriver 将打印机驱动程序复制到打印机服务器中 否 是 是
PrinterMessageBox 显示打印作业出错信息 否 是 是
ConnectToPrinterDlg 显示浏览对话并连接网络打印机 否 是 是
EndPagePrinter 结束打印页 否 是 是
EndDoc 结束打印作业 是 是 是
EndDocPrinter 结束打印作业 否 是 是
StartPage 准备打印机接收数据 是 是 是
WaitForPrinterChange 监测打印机或打印机服务器变化 否 是 是
GetPrintProcessorDirectory 获取打印机驱动处理器路径 否 是 是
GetPrinterDriver 获取打印机驱动程序信息 否 是 是
GetPrinterDriverDirectory 获取打印机驱动程序路径 否 是 是
GetPrinter 获取打印机信息 否 是 是
GetPrinterData 获取打印机配置信息 否 是 是
GetForm 获取打印机窗口信息 否 是 是
EnumJobs 获取打印作业信息 否 是 是
GetJob 获取打印作业信息 否 是 是
OpenPrinter 获取指定打印机的句柄 否 是 是
ReadPrinter 读打印机数据 否 是 是
DocumentProperties 配置打印机设置 否 是 是
ConfigurePort 配置打印机端口