PDA

View Full Version : در یافت لیست از پرنت های دحال پرینت



firststep
شنبه 19 آذر 1390, 12:15 عصر
با عرض سلام و خسته نباشید

من دنباله api می گردم که بتونم لیستی از پرینتهای که به پرینتر خاصی ارسال شده است رو درون برنامم داشته باشم دقیقا منظورم لیستی است که زمانی که روی نام پرینتر در device and printer کلیک می کنی ظاهر می شود این پنجره درون ویندوز 7 به نام see whats printing است
ممنون می شم اگه کسی در این باره اطلاعااتی داره در اختیار من قرار بده

با تشکر

سعید صابری
شنبه 19 آذر 1390, 15:20 عصر
منبعش یادم نیست!

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.Button1Click(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('Printer %s, Job %s, Status (%d): %s',
[SavePChar(pJ^[i].pPrinterName), SavePChar(pJ^[i].pDocument),
pJ^[i].Status, SavePChar(pJ^[i].pStatus)]));
finally
ClosePrinter(hPrinter);
end;
end;

firststep
شنبه 19 آذر 1390, 18:22 عصر
خوب حاالا این به چه شکله جواب که نداد که

firststep
شنبه 19 آذر 1390, 18:41 عصر
سورسی وجود نداره؟

سعید صابری
شنبه 19 آذر 1390, 19:20 عصر
خوب حاالا این به چه شکله جواب که نداد که
یعنی چی به چه شکله؟