C# Lpt端口打印类

using System;
using System.Runtime.InteropServices;
using System.IO;
namespace printBarcode
{
 /// <summary>
 /// LPTControl 的摘要说明。
 /// </summary>
 public   class   LPTControl  
 {  
  public LPTControl()
  {}

  [StructLayout(LayoutKind.Sequential)]  
  private   struct   OVERLAPPED  
      {  
       int   Internal;  
       int   InternalHigh;  
       int   Offset;  
       int   OffSetHigh;  
       int   hEvent;  
      }  
  [DllImport("kernel32.dll")]  
  private   static   extern   int   CreateFile(  
   string   lpFileName,  
   uint   dwDesiredAccess,  
   int   dwShareMode,  
   int   lpSecurityAttributes,  
   int   dwCreationDisposition,  
   int   dwFlagsAndAttributes,  
   int   hTemplateFile  
   );  
  [DllImport("kernel32.dll")]  
  private   static   extern   bool   WriteFile(  
   int   hFile,  
   byte[]   lpBuffer,  
   int   nNumberOfBytesToWrite,  
   ref   int   lpNumberOfBytesWritten,  
   ref   OVERLAPPED   lpOverlapped  
   );  
  [DllImport("kernel32.dll")]  
  private   static   extern   bool   CloseHandle(  
   int   hObject  
   );  
  private   int   iHandle;  
  public   bool   Open()  
  {  
   iHandle=CreateFile("lpt1",0x40000000,0,0,3,0,0);  
   if(iHandle   !=-1)  
   {  
    return   true;  
   }  
   else  
   {  
    return   false;  
   }  
  }  
  public   bool   Write(String   Mystring)  
  {  
   if(iHandle   !=-1)  
   {  
    int   i=0;  
    OVERLAPPED   x=new OVERLAPPED();  
    byte[]  mybyte=System.Text.Encoding.Default.GetBytes(Mystring);  
    return   WriteFile(iHandle,mybyte,mybyte.Length,ref i,ref x);  
   }  
   else  
   {  
    throw new Exception("端口未打开!");  
             }  
  }  
  public   bool   Close()  
  {  
   return   CloseHandle(iHandle);  
  }  
 }
}

posted @ 2007-08-02 12:27  peak  阅读(1511)  评论(0)    收藏  举报