windows 是如何识别连接的打印机并识别出其品牌和型号的?

sundaylh 2006-07-09 06:30:35
windows 是如何识别连接的打印机并识别出其品牌和型号的?
用代码如何实现?
...全文
526 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rex_love_Burger 2006-11-27
  • 打赏
  • 举报
回复
mark
破网 2006-11-27
  • 打赏
  • 举报
回复
在Windows的Win.ini文件中有下面的一些配置信息:
[Windows]
load =
run =
NullPort = None
device = HPLaserJetIII,HPPCL5MS,LPT1
.............
其中Windows节的device键中指明了当前系统中默认打印机的信息。可以通过WindowsAPI函数GetProfileString获取该信息。函数GetProfileString的原形如下:
DWORDGetProfileString(
LPCTSTRlpAppName, //指定节名的字符串
LPCTSTRlpKeyName, //指定键名的字符串
LPCTSTRlpDefault, //没有找到键名时返回的字符串
LPTSTRlpReturnedString, //在键名找到时返回的字符串
DWORDnSize //lpReturnedString的字节数
);
破网 2006-11-27
  • 打赏
  • 举报
回复
获取当前打印机的名称、驱动程序、打印端口信息:
以下是来自Borland公司的完整例子。请注意其中两条判断语句,这说明有时候仅仅凭getprinters并不能保证信息的正确,还需要WIN.INI的帮助。
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;
FreeMem(pDevice,cchDeviceName);
FreeMem(pDriver,MAX_PATH);
FreeMem(pPort,MAX_PATH);
end;
end;
xingzj0117 2006-11-26
  • 打赏
  • 举报
回复
基本上,所有打网络印机的通用状态都是可以获得的
这些状态包括,设备类型--也就是打印机
设备描述---每个厂商都不一样,但是一般都是打印机的型号
打印机状态---就绪,打印中,出错。
墨盒状态--低墨,缺墨
纸张状态--少纸,缺纸
设备状态--当机,舱门打开
这些都是一些通用状态,所有网络打印机都是支持的
其他状态每个打印机厂商提供的接口不一样,而且都不公开,除非它们提供,否则很难获得。
gbf08711 2006-07-12
  • 打赏
  • 举报
回复
注册表里好像有一个打印机枚举项
xixuemao 2006-07-11
  • 打赏
  • 举报
回复
驱动啊,windows已经做好了直接取就行了,可以参考下打印对话框的VCL源码。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧