Drucken (nicht über LPT1)
-
Hallo,
In der FAQ habe ich dieses Code-Beispiel für C zum Drucken gefunden:
#include <stdio.h> #include <stdlib.h> int main () { FILE * Datei; FILE * Drucker; Datei = fopen( "Datei.dat" , "r" ); Drucker = fopen( "LPT1" , "w" ); if ( Datei == NULL || Drucker == NULL ) { perror ( "Datei und//oder Drucker konnten nicht geöffnet werden" ); return EXIT_FAILURE; } while( !feof( Datei ) ) { fputc ( fgetc ( Datei ) , Drucker ); } fputc( '\f' , Drucker ); fclose( Drucker ); fclose( Datei ); return EXIT_SUCCESS; }
Viele heutige Drucker werden jedoch über USB angeschlossen.
Wie kann ich statt "LPT1" einfach den als "Standard" definierten Drucker ansteuern?
-
Falls sich "LPT1" nicht einfach durch "USBX" austauschen lässt, musst du wohl über die WinAPI an den Drucker.
Soll ich dich dorthin verschieben?
MfG SideWinder
-
Wenn ich dort eine Antwort bekomme, ist mir das schon recht!
-
Na, dann auf zum WinAPI-Forum.
MfG SideWinder
-
In der MSDN gibts dazu kommentierten Beispielcode:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_2ik4.asp
-
@tompo:
ich hab das gleiche Problem... das mit USBX funktioniert ja leider nicht... aber wie geht das dann über WinAPI??
-
Im Petzold steht etwas dazu. Bei mir sieht das Ganze dann so aus:
//Printerdialog anzeigen PRINTDLG pd = { sizeof( PRINTDLG ) }; pd.hwndOwner = hwnd; pd.Flags = PD_RETURNDC; if( !PrintDlg( &pd ) ) return 0; //Ich möchte Grafik drucken if( !( GetDeviceCaps( pd.hDC, RASTERCAPS ) & RC_BITBLT ) ) { MessageBox( hwnd, "Dieser Drucker unterstüzt keine Grafikausgabe", "Anwendung", 0 ); DeleteDC( pd.hDC ); return 0; } DOCINFO di = { sizeof( DOCINFO ) }; di.lpszDocName = "Dokument"; //Druckauftrag starten if( StartDoc( pd.hDC, &di ) > 0 ) { //Neue Seite starten if( StartPage( pd.hDC ) > 0 ) { //Auf dem pd.hDC rummalen und Ausgaben machen //Seite abschliessen if( EndPage( pd.hDC ) > 0 ) //Dokument abschliessen und zum Drucker senden EndDoc( pd.hDC ); } } //Kontex freigeben DeleteDC( pd.hDC );
Schlag die Funktionen in der MSDN nach, wenn du mehr wissen willst. Dort finden sich AFAIK auch noch Codebeispiele.