Druckproblem über Freigabe im Netzwerk



  • Hallo zusammen,

    kurz etwas zum Drumherum. Ich habe einen Etikettendrucker, der Rohdaten verarbeitet. Der hat also seine eigene Programmiersprache. Alle Ausgaben an ihn dürfen durch den Treiber nicht verhunzt werden.
    Bislang habe ich es immer so gemacht, dass ich den Drucker im Netzwerk freigegeben habe und dann folgenden Quellcode genutzt habe um meine Daten dahin zu verfrachten:

    CString pfad = "\\\\<Rechnername>\\<Freigabename>"
    if(!Drucker.Open(pfad,CFile::modeWrite)) 
    {
        error = GetLastError();
        return;
    }
    else
    {
        Drucker.Write(inhalt, inhalt.GetLength());
        Drucker.Close()
    }
    

    In error steht nun entweder 53 (pad network path) oder die 2 (file not found).
    Verstärkt fällt das bei Win7 auf. Nicht immer, aber ab und zu gibt es Systeme, die das so machen.
    Hab es auch schon so versucht:

    CPrintDialog cp(0);
    if(cp.DoModal()!=IDOK)  return;
    HDC hDC=cp.GetPrinterDC();
    CDC*pDC=CDC::FromHandle(hDC);
    
    CRect rcT;
    rcT.left = 10;
    rcT.top = 0;
    rcT.bottom = rcT.top + 100;
    pDC->SetMapMode(MM_LOENGLISH );
    pDC->DPtoLP(&rcT);
    
    pDC->StartDoc("Etikett 1");
    pDC->StartPage();
    pDC->TextOut(0,0, inhalt); 
    pDC->EndPage();
    pDC->EndDoc();
    

    Da druckt er aber den Text als Text aus. Das hatte ich so erwartet, da der Treiber das ganze dann übernimmt.

    Hat jemand eine Idee, wie der Fehler beim Drucken auf die Freigabe entsteht oder wie ich den unteren Code verwenden könnte um direkt Daten am Treiber vorbei auf den Drucker zu senden.

    Vielen Dank und viele Grüße,
    Ranger


  • Mod

    Also wenn ich nach "Send rar data to Printer" suche bekomme ich tausende von Artiklen.

    Hier steht beschrieben wie man es korrekt über das Druckerhandle macht:
    http://support.microsoft.com/kb/138594/en-us

    Mit der MFC ist das ja dann nicht viel anders.



  • Hallo,

    damit hat es dann, nach kleineren Anpassungen auch funktioniert. Danke Dir für den Link.

    VG,
    Ranger


Anmelden zum Antworten