枚举所有打印机,按名字查询uses
winspool, printers;...
procedure TForm1.Button1Click(Sender: TObject);
var
HPrinter: THandle;
Forms: array of TFormInfo1;
Count, Needed, Returned: DWORD;
i: Integer;
begin
Memo1.Clear;
if OpenPrinter(nil, HPrinter, nil) then begin
try
if not EnumForms(HPrinter, 1, nil, 0, Needed, Returned) then begin // we should fail here since we didn't pass a buffer
if GetLastError <> ERROR_INSUFFICIENT_BUFFER then
RaiseLastOSError; Count := (Needed div SizeOf(TFormInfo1)) + 1;
SetLength(Forms, Count);
if EnumForms(HPrinter, 1, @Forms[0], SizeOf(TFormInfo1) * Count, Needed,
Returned) then begin
if Returned < Count then
SetLength(Forms, Returned);
for i := 0 to Returned - 1 do begin
Memo1.Lines.Add(Format('Paper name: %s, Paper size: %dmm x %dmm',
[Forms[i].pName,
Forms[i].Size.cx div 1000,
Forms[i].Size.cy div 1000]))
end;
end else
RaiseLastOSError;
end;
finally
ClosePrinter(HPrinter);
end;
end else
RaiseLastOSError;
end;
winspool, printers;...
procedure TForm1.Button1Click(Sender: TObject);
var
HPrinter: THandle;
Forms: array of TFormInfo1;
Count, Needed, Returned: DWORD;
i: Integer;
begin
Memo1.Clear;
if OpenPrinter(nil, HPrinter, nil) then begin
try
if not EnumForms(HPrinter, 1, nil, 0, Needed, Returned) then begin // we should fail here since we didn't pass a buffer
if GetLastError <> ERROR_INSUFFICIENT_BUFFER then
RaiseLastOSError; Count := (Needed div SizeOf(TFormInfo1)) + 1;
SetLength(Forms, Count);
if EnumForms(HPrinter, 1, @Forms[0], SizeOf(TFormInfo1) * Count, Needed,
Returned) then begin
if Returned < Count then
SetLength(Forms, Returned);
for i := 0 to Returned - 1 do begin
Memo1.Lines.Add(Format('Paper name: %s, Paper size: %dmm x %dmm',
[Forms[i].pName,
Forms[i].Size.cx div 1000,
Forms[i].Size.cy div 1000]))
end;
end else
RaiseLastOSError;
end;
finally
ClosePrinter(HPrinter);
end;
end else
RaiseLastOSError;
end;
解决方案 »
- 随机数问题
- 使用FindText在RichEdit中定位后返回一整数,如何知道查找结果是在第几行?
- 谁能猜出是怎么实现的?(抽奖程序)
- 帮忙找个控件,找到有分
- 再问一个小问题 (俺是初学者)
- 做过分布式三层数据库系统编程的高手请进。谢谢。分不够还有。
- dll调用的问题,vc写的dll(winapi声明),delphi掉的时候,在程序退出是错误
- 请问:那里有《Delphi4编程技术内幕》电子版 下载,就是Charlie Calvert写的那本?
- TServerSocket中,onclientread的时候,是必须一次把数据全部读入吗?
- 请问WORD类型怎么能转换成CHAR类型
- 这算是D7的BUG吗?
- 控件开发时属性分组问题
http://blog.csdn.net/jankercsdn/article/details/9162561