Standarddrucker Bereitschaft erkennen



  • Hallo,

    habe einen Drucker im Netzwerk, bei dem ich die Druckbereitschaft (Papierstau,Vorhandensein) feststellen möchte.
    Da das Programm aber letztendlich den Windows Standarddrucker abfragen soll, egal ob an LPT,USB oder über Netzwerk muß ich es wohl über die Windows-API machen.
    Kann mir jemand weiterhelfen bzw einen Link geben ?



  • Evtl. hilft dir GetPrinter mit PRINTER_INFO_2 (oder bei NT direkt mit PRINTER_INFO_6) - damit sollte sich der Status bestimmen lassen.

    Den Standard-Drucker kannst du mit GetDefaultPrinter erfragen 😉



  • erstmal danke.
    Hab ich mal mit PRINTER_INFO_6 probiert.
    Nur irgendwo mache ich da anscheinend etwas falsch, da sich der Druckerstatus nicht ändert.

    PRINTER_INFO_6 inf;
    if(inf.dwStatus==PRINTER_STATUS_OFFLINE) Label1->Caption="Drucker offline !";
    

    Hab auch schon versucht erst über OpenPrinter erstmal die Verbindung zum Drucker herzustellen und dann den Status abzufragen.
    Klappt leider auch nicht. 😞
    Hat jemand mal einen Link für ein Beispiel wie man sowas anstellt bzz einen Code Schnipsel ? 😕



  • Du rufst aber schon irgendwo GetPrinter damit auf, oder?!



  • Bisher habe ich es so.

    DWORD dw= 0;
    HANDLE hp;
    PRINTER_INFO_6 job;
    GetPrinter(hp,2,(LPBYTE) &job,0,&dw);
    Fehlerlabel->Caption="";
    if(job.dwStatus==PRINTER_STATUS_OFFLINE) Fehlerlabel->Caption ="Drucker Offline";
    

    Funktioniert aber leider nicht. 😞



  • hPrinter
    [in] Handle to the printer for which the function retrieves information. Use the OpenPrinter or AddPrinter function to retrieve a printer handle.

    Da kannst du nicht einfach ein uninitialisierten Handle verwenden, sondern musst dir erst mit OpenPrinter oder AddPrinter (wie im Zitat ersichtlich) ein gültiges Handle besorgen 😉

    cbBuf
    [in] Specifies the size, in bytes, of the buffer pointed to by pPrinter.

    Also nicht einfach 0 angeben, sondern sizeof(PRINTER_INFO_6)

    Und schau das nächste Mal doch bitte auch die Sachen an, auf die verwiesen wird 👎
    Das erste ist dann immer die Kontrolle des Rückgabewertes und ggf. die Abfrage von GetLastError() - damit kommst du dann meist auch selber zurecht 🙂


Log in to reply