Infos über Standarddrucker!

amigian

Grünschnabel
Hallo Leute,

wie bekomme ich mit dem MFC folgende Informationen vom Standarddrucker:

Farb- oder Monochromdrucker;
Drucker ein- oder ausgeschaltet.

Hoffentlich hat einer ne Idee,

Danke im voraus und mfg Steven
 
Hallo,

folgende Funktion nutze ich, um die Orientierung zu prüfen.
Code:
int CMainFrame::Druckausrichtung_pruefen()
{
	DWORD dwBytesNeeded;
	int orientierung;
	LPPRINTER_INFO_2 pPrinterInfo2=NULL;
	HANDLE phPrinter;
	DWORD sizeOfPrintInfo=0;
	pPrinterInfo2=(LPPRINTER_INFO_2) new char [sizeOfPrintInfo];
	char szPrinter[50];
	DWORD zeichen = 50;
	GetDefaultPrinter(szPrinter, &zeichen);
	if(OpenPrinter(szPrinter,&phPrinter,NULL))
	{
		if(!GetPrinter(phPrinter,2,(LPBYTE)pPrinterInfo2,sizeOfPrintInfo,&dwBytesNeeded))
		{
			delete[] pPrinterInfo2;
			pPrinterInfo2=NULL;
			pPrinterInfo2=(LPPRINTER_INFO_2) new char [dwBytesNeeded];
			GetPrinter(phPrinter,2,(LPBYTE)pPrinterInfo2,dwBytesNeeded,&dwBytesNeeded);
			orientierung=pPrinterInfo2->pDevMode->dmOrientation;
			delete[] pPrinterInfo2;
			pPrinterInfo2=NULL;
		}
		ClosePrinter(phPrinter);
	}
         if(pPrinterInfo2)
                delete[] pPrinterInfo2;
	return orientierung;
}

in der Printerinfo stehen aber auch alle weiteren Infos
Code:
typedef struct _PRINTER_INFO_2 { 
  LPTSTR    pServerName; 
  LPTSTR    pPrinterName; 
  LPTSTR    pShareName; 
  LPTSTR    pPortName; 
  LPTSTR    pDriverName; 
  LPTSTR    pComment; 
  LPTSTR    pLocation; 
  LPDEVMODE pDevMode; 
  LPTSTR    pSepFile; 
  LPTSTR    pPrintProcessor; 
  LPTSTR    pDatatype; 
  LPTSTR    pParameters; 
  PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  DWORD     Attributes; 
  DWORD     Priority; 
  DWORD     DefaultPriority; 
  DWORD     StartTime; 
  DWORD     UntilTime; 
  DWORD     Status; 
  DWORD     cJobs; 
  DWORD     AveragePPM; 
} PRINTER_INFO_2, *PPRINTER_INFO_2;

Mfg

langer
 
Danke zunächst für die schnelle Antwort,

Die Frage nach Farbe- oder Monochromdrucker hat sich damit geklärt. Eigentlich sollte im Status-Field der Infostruct auch stehen ob der Drucker an ist oder busy etc... Ist bei mir aber immer 0 egal was der Drucker gerade macht. Vielleicht hat noch Einer eine Erklärung dafür.

Danke und mfg Steven
 
Die Druckerstati sind leider durchgehend besch** von den Treibern umgesetzt. Nämlich sehr oft gar nicht.

Beispiel: Obwohl es das uralte DOS-Parallel-Port-Statusbyte in den Drucker-Structs gibt, setzt kein Schwein das ein. So ist es also unmöglich, rauszufinden, ob dein Druck, der als erfolgreich abgeschlossen worden ist, wirklich beim Drucker rausgekommen ist.

D.h. wenn etwas gesetzt ist, das du brauchst, hast du Glück ;)
 
Danke für diese Antwort,

habe schon so etwas befürchtet. Falls noch einer einen Weg kennt möge er ihn bitte mitteilen.

MFG Steven
 

Neue Beiträge

Zurück