Drucker (Netzwerk) ansteuern



  • Wie kann ich in einem C Programm einen lokalen Netzwerkdrucker ansteuern? Der Drucker ist komplett installiert, und sollte nur eine Anweisung ausdrucken (printf).

    Wie ist dies möglich?

    -> ➡ Bitte ganzen Code schreiben, ich kann nicht so gut C!



  • Weiss das niemand?



  • Mit Betriebssystem, oder ohne? Wenn mit, dann mit welchem?



  • Unter Windows:

    int textdrucken()
    {
    	HDC drucker = CreateDC("WINSPOOL", "NameMeinesDruckers", NULL, NULL);
    	DOCINFO dokument_info;
    
    	memset(&dokument_info, 0, sizeof(DOCINFO));
    	dokument_info.cbSize	= sizeof(DOCINFO);
    	dokument_info.lpszDocName	= "testdruck";
    
    	char *String = "Testdruck";
    
    	// drucken
    	StartDoc(drucker, &dokument_info);
    	StartPage(drucker);
    
    	// Inhalt ausgeben
    
    	TextOut(drucker, 70, 70, String, strlen(String));
    
    	EndPage(drucker);
    	EndDoc(drucker);  // Dokument wird geschlossen
    
    	DeleteDC(drucker);
    
    	return 0;
    }
    

    Nicht vergessen die Windows.h einzubinden. Wenn du unter Windows meinst, gehört der Thread in die Kategorie WinAPI.



  • ich1 schrieb:

    Wie kann ich in einem C Programm einen lokalen Netzwerkdrucker ansteuern? Der Drucker ist komplett installiert, und sollte nur eine Anweisung ausdrucken (printf).

    Wie ist dies möglich?

    -> ➡ Bitte ganzen Code schreiben, ich kann nicht so gut C!

    Unter Linux als root (su)

    #include <stdio.h>
    #include <stdlib.h> /* exit() */
    
    int main (void)
    {
        FILE* pFile = fopen("/dev/lp0" , "r+");
        if (pFile == 0)
        {
            fprintf(stderr , "couldn't open /dev/lp0\n");
            exit(-1);
        }
    
        fprintf(pFile , "Dieser Text wird gedruckt.\n");
    
        /*
        Damit das Blatt(Druckpapier) ganz durch den Drucker geht, muss man oft genug
        \n an den Drucker senden. Am besten in einer for() schleife. Wie oft, weiß                                              ich selbst nicht. Das musst du selber ausprobieren.
        int i;
        int numlines; 
        for (i = 0; i < numlines; i++)
        {
            fprintf(pFile , "\n");
        }
        */
    
        fclose(pFile);
    }
    


  • frage zu dem windowscode:

    ich kriege einen programmabbruch (er druck zwar aber wie kann ich diesen beheben)?



  • Du bekommst keinen Abruch sondern das Programm ist zuende!!!!

    So bricht dein Prog net ab:

    #include <windows.h>
    #include <conio.h>
    int textdrucken() 
    { 
        HDC drucker = CreateDC("WINSPOOL", "NameMeinesDruckers", NULL, NULL); 
        DOCINFO dokument_info; 
    
        memset(&dokument_info, 0, sizeof(DOCINFO)); 
        dokument_info.cbSize    = sizeof(DOCINFO); 
        dokument_info.lpszDocName    = "testdruck"; 
    
        char *String = "Testdruck"; 
    
        // drucken 
        StartDoc(drucker, &dokument_info); 
        StartPage(drucker); 
    
        // Inhalt ausgeben 
    
        TextOut(drucker, 70, 70, String, strlen(String)); 
    
        EndPage(drucker); 
        EndDoc(drucker);  // Dokument wird geschlossen 
    
        DeleteDC(drucker)
        getch();
        return 0; 
    }
    

Anmelden zum Antworten