public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
      ///æå°è°ç¨
      ClsPrintLPT printLPT = new ClsPrintLPT();
      printLPT.PrintESC(0);ãã//æå°åé纸
      printLPT.PrintDataSet();
      printLPT.PrintESC(1);ãã//æå°åè¿çº¸
    }
  }
  class ClsPrintLPT
  {
    private IntPtr iHandle;
    private FileStream fs;
    private StreamWriter sw;
    private string prnPort = "COM1";  //æå°æºç«¯å£(COMå¼å¤´ä¸ºä¸²å£ï¼LPTå¼å¤´ä¸ºå¹¶å£)ï¼çæå°æºæ¯ä»ä¹ç«¯å£èå®
    public ClsPrintLPT()
    {
    }
    private const uint GENERIC_READ = 0x80000000;
    private const uint GENERIC_WRITE = 0x40000000;
    private const int OPEN_EXISTING = 3;
    /// <summary>
    /// æå¼ä¸ä¸ªvxd(设å¤)
    /// </summary>
    [DllImport("kernel32.dll", EntryPoint = "CreateFile", CharSet = CharSet.Auto)]
    private static extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes,
                        int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
    /// <summary>
    /// å¼å§è¿æ¥æå°æº
    /// </summary>
    private bool PrintOpen()
    {
      iHandle = CreateFile(prnPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
      if (iHandle.ToInt32() == -1)
      {
        MessageBox.Show("没æè¿æ¥æå°æºæè æå°æºç«¯å£ä¸æ¯COM1ï¼", "æç¤º", MessageBoxButtons.OK, MessageBoxIcon.Information);
        return false;
      }
      else
      {
        fs = new FileStream(iHandle, FileAccess.ReadWrite);
        sw = new StreamWriter(fs, System.Text.Encoding.Default);  //åæ°æ®
        return true;
      }
    }
    // <summary>
    /// æå°å符串
    /// </summary>
    /// <param name="str">è¦æå°çå符串</param>
    private void PrintLine(string str)
    {
      sw.WriteLine(str); ;
    }
    /// <summary>
    /// å ³éæå°è¿æ¥
    /// </summary>
    private void PrintEnd()
    {
      sw.Close();
      fs.Close();
    }
    /// <summary>
    /// æå°ç¥¨æ®
    /// </summary>
    /// <param name="ds">tb_Temp å ¨é¨åæ®µæ°æ®éå</param>
    /// <returns>trueï¼æå°æå falseï¼æå°å¤±è´¥</returns>
    public bool PrintDataSet(DataSet dsPrint)
    {
      try
      {
        if (PrintOpen())
        {
          PrintLine(" ");
          PrintLine("[XXXXXXXXXXXXXXXXXXè¶ å¸]");
          PrintLine("NO :    " + dsPrint.Tables[0].Rows[0][1].ToString());
          PrintLine("XXXXXX: " + dsPrint.Tables[0].Rows[0][2].ToString());
          PrintLine("XXXXXX: " + dsPrint.Tables[0].Rows[0][3].ToString());
          PrintLine("XXXXXX: " + dsPrint.Tables[0].Rows[0][4].ToString());
          PrintLine("XXXXXX: " + dsPrint.Tables[0].Rows[0][5].ToString());
          PrintLine("æ ä½ å: " + dsPrint.Tables[0].Rows[0][6].ToString() + " " + dsPrint.Tables[0].Rows[0][7].ToString());
          PrintLine("-------------------------------------------");
        }
        PrintEnd();
        return true;
      }
      catch
      {
        return false;
      }
    }
    public bool PrintDataSet()
    {
      try
      {
        if (PrintOpen())
        {
          PrintLine(" ");
          PrintLine("æµè¯");
          PrintLine("-------------------------------------------");
        }
        PrintEnd();
        return true;
      }
      catch
      {
        return false;
      }
    }
    /// <summary>
    /// ESC/P æä»¤
    /// </summary>
    /// <param name="iSelect">0ï¼é纸å½ä»¤ 1ï¼è¿çº¸å½ä»¤ 2ï¼æ¢è¡å½ä»¤</param>
    public void PrintESC(int iSelect)
    {
      string send;
      iHandle = CreateFile(prnPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
      if (iHandle.ToInt32() == -1)
      {
        MessageBox.Show("没æè¿æ¥æå°æºæè æå°æºç«¯å£ä¸æ¯LPT1ï¼", "æç¤º", MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
      else
      {
        fs = new FileStream(iHandle, FileAccess.ReadWrite);
      }
      byte[] buf = new byte[80];
      switch (iSelect)
      {
        case 0:
          send = "" + (char)(27) + (char)(64) + (char)(27) + 'j' + (char)(255);   //é纸1 255 为åå¼ çº¸é¿
          send = send + (char)(27) + 'j' + (char)(125);   //é纸2
          break;
        case 1:
          send = "" + (char)(27) + (char)(64) + (char)(27) + 'J' + (char)(255);   //è¿çº¸
          break;
        case 2:
          send = "" + (char)(27) + (char)(64) + (char)(12);  //æ¢è¡
          break;
        default:
          send = "" + (char)(27) + (char)(64) + (char)(12);  //æ¢è¡
          break;
      }
      for (int i = 0; i < send.Length; i++)
      {
        buf[i] = (byte)send[i];
      }
      fs.Write(buf, 0, buf.Length);
      fs.Close();
    }
  }
è¿æ¯è½¬å«äººçï¼åæå°åï¼http://blog.csdn.net/pfworld/article/details/2084666