C#控制打印机(直接发送打印机命令到打印
机)
一个打印机控制类,很有用的,其中使用了windows api控制lpt端口,对条码打印机的控制方法如下:将打印机的命令写到一个文件里,再使用之。
******************************************************************************* *******************************************************
//代码:
//
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace LPTControls
{
public class LPTControls
{
[StructLayout(LayoutKind.Sequential)]
private struct OVERLAPPED
{
generic打印机int Internal;
intInternalHigh;
int Offset;
intOffSetHigh;
inthEvent;
}
[DllImport("kernel32.dll")]
private static extern intCreateFile(string lpFileName, uintdwDesiredAccess, intdwShareMode, intlpSecurityAttributes, intdwCreationDisposition, intdwFlagsAndAttributes, inthTemplateFile); [DllImport("kernel32.dll")]
private static extern boolWriteFile(inthFile, byte[] lpBuffer, intnNumberOfBytesToWriter, out intlpNumberOfBytesWriten, out OVERLAPPED lpOverLapped);
[DllImport("kernel32.dll")]
private static extern boolCloseHandle(inthObject);
privateintiHandle;
//打开LPT 端口
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)
{
inti;
OVERLAPPED x;
byte[] mybyte = System.Text.Encoding.Default.GetBytes(MyString);
return WriteFile(iHandle, mybyte, mybyte.Length, out i, out x);
}
else
{
throw new Exception("端口未打开~!");
}
}
//关闭打印端口
public bool Close()
{
return CloseHandle(iHandle);
}
}
}
//***************************************************************************** ********
//使用方法
private void button1_Click(object sender, EventArgs e)
{
LPTControls.LPTControlslpt = new LPTControls.LPTControls();
string mycommanglines = System.IO.File.ReadAllText("");//里写了条码机的命令
lpt.Open();
lpt.Write(mycommanglines);
lpt.Close();
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论