Pelles C forum

C language => Expert questions => Topic started by: jwzumwalt on April 25, 2009, 10:06:33 PM

Title: How2 send output to printer
Post by: jwzumwalt on April 25, 2009, 10:06:33 PM
I have been unsuccessful in trying all the examples I could find on the web to send output to the printer. One even mentioned turning the compilers ANSI compatibility off.

How do you do it?

Here are some of the things I have tried...

   fprintf(stdprn, "\n\t\rQuestion: Who shaves the barber?\n\r");
   fprintf(stdprn, "\n\t\rAnswer: She doesn't need to shave.\f");

   FILE *stdprn;
   stdprn = fopen("PRN","wb");
   fprintf(stdprn,"Hello World\n\n");
   fprintf(stdprn,"From Windows: TEST Test test\f");
   fclose(stdprn);
Title: Re: How2 send output to printer
Post by: DMac on April 27, 2009, 06:18:33 PM
Try this:

Code: [Select]
#define WIN32_LEAN_AND_MEAN

#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[])
{
     // Windows manages access to the parallel port.  The easiest way to send
     //  output to the parallel port is to use the Windows API.

     HANDLE hParallelPort;
     BOOL fSuccess;
     DWORD dwBytesWritten;

     char buf [MAX_PATH];
     memset(&buf,0,sizeof buf);

     hParallelPort = CreateFile("LPT1", GENERIC_READ | GENERIC_WRITE,
                          0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

     if (INVALID_HANDLE_VALUE != hParallelPort)
     {
          sprintf(buf,"Question: Who shaves the barber?\r\n");
          fSuccess = WriteFile(hParallelPort, &buf, strlen(buf), &dwBytesWritten, NULL);

               if(fSuccess)
               {
                     sprintf(buf,"Answer: She doesn't need to shave.\r\n");
                     fSuccess = WriteFile(hParallelPort, &buf, strlen(buf), &dwBytesWritten, NULL);
               }

               // All done Free resources
               fSuccess = CloseHandle(hParallelPort);
     }
     return fSuccess;
}

Regards,
DMac