各位朋友,请问有没有做过收银票打印的(或累式小票打印的)请帮我看看我以下代码怎么总是不能 CreateFile
代码如下:
类代码: [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,
out int lpNumberOfBytesWritten, out OVERLAPPED lpOverlapped); [DllImport("kernel32.dll")]
private static extern bool CloseHandle(int hObject);
#endregion public enum HorPos { Left, Center, Right } private int iHandle;
private int ColWidth = 32; public bool Open()
{
iHandle = CreateFile("LPT1", 0x40000000, 0, 0, 3, 0, 0);
if (iHandle != -1)
{
return true;
}
else
{
return false;
} }
调用代码: if (Printer.GetPrinter() == null || Printer.GetPrinter().Length == 0)
{
State = "没有找到合适的打印机...";
return;
} State = "正在打印...";
try
{
LPTControl.PrintClass lpt = new LPTControl.PrintClass();
lpt.Open();
lpt.WriteLine("数据头标题", LPTControl.PrintClass.HorPos.Center);
lpt.WriteLine("数据副标题", LPTControl.PrintClass .HorPos.Center);
lpt.PrintLine();
string StrTitle = " 列名1 ";
StrTitle += " 列名2 ";
lpt.WriteLine(StrTitle);
for (int i = 0; i < 3; i++)
{
lpt.WriteLine("abc" + "acc".PadLeft(11, ' '));
}
lpt.NewRow();
lpt.WriteLine("合计:".PadRight(8, ' ') + "aaa".PadLeft(11, ' '));
lpt.PrintLine();
lpt.PrintDate();
lpt.CutPaper();
lpt.Close();
System.Threading.Thread.Sleep(500);
State = "打印完成...";
}
catch (Exception Ex)
{
State = "打印出错...";
MessageBox.Show("打印出错:" + Ex.Message);
}
怎么执行到 iHandle = CreateFile("LPT1", 0x40000000, 0, 0, 3, 0, 0);
的时候 ,总是失败,在线等待
代码如下:
类代码: [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,
out int lpNumberOfBytesWritten, out OVERLAPPED lpOverlapped); [DllImport("kernel32.dll")]
private static extern bool CloseHandle(int hObject);
#endregion public enum HorPos { Left, Center, Right } private int iHandle;
private int ColWidth = 32; public bool Open()
{
iHandle = CreateFile("LPT1", 0x40000000, 0, 0, 3, 0, 0);
if (iHandle != -1)
{
return true;
}
else
{
return false;
} }
调用代码: if (Printer.GetPrinter() == null || Printer.GetPrinter().Length == 0)
{
State = "没有找到合适的打印机...";
return;
} State = "正在打印...";
try
{
LPTControl.PrintClass lpt = new LPTControl.PrintClass();
lpt.Open();
lpt.WriteLine("数据头标题", LPTControl.PrintClass.HorPos.Center);
lpt.WriteLine("数据副标题", LPTControl.PrintClass .HorPos.Center);
lpt.PrintLine();
string StrTitle = " 列名1 ";
StrTitle += " 列名2 ";
lpt.WriteLine(StrTitle);
for (int i = 0; i < 3; i++)
{
lpt.WriteLine("abc" + "acc".PadLeft(11, ' '));
}
lpt.NewRow();
lpt.WriteLine("合计:".PadRight(8, ' ') + "aaa".PadLeft(11, ' '));
lpt.PrintLine();
lpt.PrintDate();
lpt.CutPaper();
lpt.Close();
System.Threading.Thread.Sleep(500);
State = "打印完成...";
}
catch (Exception Ex)
{
State = "打印出错...";
MessageBox.Show("打印出错:" + Ex.Message);
}
怎么执行到 iHandle = CreateFile("LPT1", 0x40000000, 0, 0, 3, 0, 0);
的时候 ,总是失败,在线等待
解决方案 »
- 急!Socket通讯问题求指点!
- C#中怎样解决同一个新建界面被用户同时操作时不会产生同一个编号!
- datagrid控制列宽
- 在有多线程的程序中如何进行单步调试??
- 如何把DataTable1 里的前面10行数据复制给DataTable2?
- 谁来解释一下,dropdownlist的问题
- 救命,remoting开发的系统编码完成却发现一个关于异常的严重问题
- socket访问问题
- 两台机器的C# winform程序,网络连接通畅,数据量不大,能否实现直接互相传递C#对象,如DataTable?谢谢!
- 推荐一本C#网络编程方面的书
- c#socket传送文件的怪问题
- 紧急 添加到压缩文件的的文件夹问题
是这样的,我怎么打印后不,发现收银票不是从最昨边开始打印的呢,发现左边的边距还比较大,没打完的又跳到第二行开始打印了呢
是这样的,我怎么打印后不,发现收银票不是从最昨边开始打印的呢,发现左边的边距还比较大,没打完的又跳到第二行开始打印了呢