uses Winspool, Printers;function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;Function SavePChar( p: PChar ): PChar;
const error: PChar = 'Nil';
begin
if not assigned( p ) then
result := error
else
result := p;
end; procedure TForm1.Button2Click(Sender: TObject);
type
TJobs = Array [0..1000] of JOB_INFO_1;
PJobs = ^TJobs;
var
hPrinter : THandle;
bytesNeeded, numJobs, i: Cardinal;
pJ: PJobs;
begin
hPrinter:= GetCurrentPrinterHandle;
try
EnumJobs( hPrinter, 0, 1000, 1, Nil, 0, bytesNeeded,
numJobs );
pJ := AllocMem( bytesNeeded );
If not EnumJobs( hPrinter, 0, 1000, 1, pJ, bytesNeeded,
bytesNeeded, numJobs )
Then
RaiseLastWin32Error; memo1.clear;
if numJobs = 0 Then
memo1.lines.add('No jobs in queue')
else
For i:= 0 to Pred(numJobs) Do
memo1.lines.add( Format(
'Job %s, Status (%d): %s',
[SavePChar(pJ^[i].pDocument), pJ^[i].Status, SavePChar(pJ^[i].pStatus)] ));
finally
ClosePrinter( hPrinter );
end;
end;
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;Function SavePChar( p: PChar ): PChar;
const error: PChar = 'Nil';
begin
if not assigned( p ) then
result := error
else
result := p;
end; procedure TForm1.Button2Click(Sender: TObject);
type
TJobs = Array [0..1000] of JOB_INFO_1;
PJobs = ^TJobs;
var
hPrinter : THandle;
bytesNeeded, numJobs, i: Cardinal;
pJ: PJobs;
begin
hPrinter:= GetCurrentPrinterHandle;
try
EnumJobs( hPrinter, 0, 1000, 1, Nil, 0, bytesNeeded,
numJobs );
pJ := AllocMem( bytesNeeded );
If not EnumJobs( hPrinter, 0, 1000, 1, pJ, bytesNeeded,
bytesNeeded, numJobs )
Then
RaiseLastWin32Error; memo1.clear;
if numJobs = 0 Then
memo1.lines.add('No jobs in queue')
else
For i:= 0 to Pred(numJobs) Do
memo1.lines.add( Format(
'Job %s, Status (%d): %s',
[SavePChar(pJ^[i].pDocument), pJ^[i].Status, SavePChar(pJ^[i].pStatus)] ));
finally
ClosePrinter( hPrinter );
end;
end;
解决方案 »
- 急!delphi 操作有密码word问题,新建和导入自动加密!在线
- quickrport (delphi6.0 )报表查看器如何做啊!就是把保存后的 .qrp文件可以查看!
- 数据类型问题
- 跪求Delphi的读写ACCESS中BLOB字段的源码!!急,谢谢!!
- 多线程中在image上画线遇到的奇怪问题,显示颜色对程序有影响?
- 谁能提供Jazmine Calendar/PIM Widgets suite 2.0 和Planner Component 2.0的正式版(含源码)的下载地址
- 谁知道如何列出网络内所有SQL SERVER服务器的名称?在线等待
- 想问一下这段代码有何意义?
- 用什么dbgrid控件能实现某column的DBlookupCombox功能,怎么用
- 怎样压缩和修复数据库?
- 统计:以后韩国队参加的比赛大家还会看吗?
- 怎样用delphi控制Epson TM-U300A的打印机?(高分求助)急急急!!!
var
FHandle : THandle;
FDevice: array[0..79] of char;
FDriver: array[0..79] of char;
FPort: array[0..79] of char;
Pinx,Piny: integer;
begin try
Printer.GetPrinter (FDevice, FDriver, FPort, FHandle);
except
ShowMessage('您的系统未安装打印机,不能进行打印操作!');
Printer.Free;
Exit;
end;
////end;