K
Hallo,
die pas-Dateien sind Goldstaub :). Besorg dir mal welche.
Nun, eventuell hätte das zunächst auch nicht weitergeholfen. Nachfolgend ein Schnipsel,
nachdem alle lokalen Drucker einschl. ihrer Ports, Status, Jobs uvm. aufgelistet werden.
Möglicherweise hilfts dir weiter..
Die Strukturen PRINTER_INFO_1 bis ... enthalten weitere interessante Details
#include <winspool.h>
//-------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
EnumeratePrinters(PRINTER_ENUM_LOCAL);
}
void __fastcall TForm1::EnumeratePrinters(DWORD flags)
{
PRINTER_INFO_2* prninfo = NULL;
DWORD needed, returned;
// Puffergrösse ermitteln
EnumPrinters(flags, NULL, 2, NULL, 0, &needed, &returned);
// allocate für PRINTER_INFO Struktur
prninfo = (PRINTER_INFO_2*) GlobalAlloc(GPTR,needed);
if (!EnumPrinters(flags,
NULL,
2,
(LPBYTE) prninfo,
needed,
&needed,
&returned))
{
DWORD err = GetLastError();
}
else {
for (int i=0; i < returned; i++ ) {
LPTSTR PrnName = prninfo[i].pPrinterName;
LPTSTR Port = prninfo[i].pPortName;
DWORD Status = prninfo[i].Status;
DWORD jobs = prninfo[i].cJobs;
// hier weiter die Struktur abfragen
// Ausgabe in die Listbox:
PrinterList->Items->Add(PrnName + (String)" Port: " + Port + " Status: " +IntToStr(Status)+ " Jobs: " +IntToStr(jobs));
}
}
GlobalFree(prninfo);
}
mfg
kpeter