.net如何实现小票打印?如果测试成功,给100分

youth0826 2009-07-14 02:20:41
目前,做一个用.NET实现小票打印的程序,从目前网上找到的各个版本来讲,都不能很好满足.NET小票打印。

以下程序,不执行打印命令,说是“没有连接打印机或者打印机端口不是LPT1”

到底LPT是否可以用?请高手解决,谢谢。


<%@ import Namespace="System.IO"%>
<script language="vb" runat="server">


Const GENERIC_READ = &H80000000
Const GENERIC_WRITE = &H40000000
Const OPEN_EXISTING = 3

Private yhflag = 0
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As Integer, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As Integer) As IntPtr

Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Try
Dim iHandle As IntPtr
iHandle = CreateFile("LPT", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)

If (iHandle.ToInt32 = -1) Then
MsgBox("没有连接打印机或者打印机端口不是LPT1")
Exit Sub
Else
Dim fs As New FileStream(iHandle, FileAccess.ReadWrite)
Dim sr As New StreamReader(fs) '读数据
Dim sw As New StreamWriter(fs, System.Text.Encoding.Default) '写数据

sw.Write("打印了还等什么")
sw.WriteLine() ''得让他分行
sw.WriteLine()

sw.Write((Chr(27)).ToString() + "p" + (Chr(0)).ToString() + ((Chr(60))).ToString() + ((Chr(255))).ToString()) '''''''开钱箱
sw.Close()
fs.Close()
End If


Catch ex As Exception
MsgBox("没有连接打印机!")
End Try

End Sub

</script>

...全文
446 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
paul9137 2009-09-01
  • 打赏
  • 举报
回复
MARK
liudongwei1987 2009-09-01
  • 打赏
  • 举报
回复
顶!各位!
mzhao 2009-08-23
  • 打赏
  • 举报
回复
试试
iHandle = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0)
CREATE_ALWAYS的值自己查MSDN或windows.h

另外,对13楼,这些代码不是页面脚本,是ASP.NET后台代码。
还有,楼主,ISUR_*****、NetworkUser、ASP.NET账户 的权限可能不够
luhk1985 2009-07-27
  • 打赏
  • 举报
回复
asp.net下,这个问题不是太难,只要用一个SMSX插件就可以实现,然后在IFRAME框架里写需要打印的页面,当然这个打印页面里面的内容,需要设置格式,格式参考你需要打印的小票格式。
gaijf 2009-07-16
  • 打赏
  • 举报
回复
Kkiki 2009-07-16
  • 打赏
  • 举报
回复
没有用过 顶
xsm545 2009-07-16
  • 打赏
  • 举报
回复
没用过..帮顶下
AIRFLYNET 2009-07-16
  • 打赏
  • 举报
回复
以上有程序应不是代码出了问题,而是IE的权限不足引起的,
如果IE直接利用脚本就能执行"CreateFile"API的话,我想我们的电脑早就被人控制了.
AIRFLYNET 2009-07-16
  • 打赏
  • 举报
回复
如果是用IE控制针式打印机进行"行打印",是个难道,
建议用 ActiveX控件取得数据后进行打印.
youth0826 2009-07-16
  • 打赏
  • 举报
回复
高手去哪了啊
youth0826 2009-07-15
  • 打赏
  • 举报
回复
高手呢,这个问题网上找了很多,都没有确切的资料。
高手给个解决方案啊
youth0826 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
iHandle = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
         
[/Quote]
这个一样的,还是没有反应。请问我的这个程序,别的还有什么问题?
owen52773956 2009-07-15
  • 打赏
  • 举报
回复
顶上去!
qmialo 2009-07-14
  • 打赏
  • 举报
回复
UP
wuyq11 2009-07-14
  • 打赏
  • 举报
回复
iHandle = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
youth0826 2009-07-14
  • 打赏
  • 举报
回复
自己顶下啊,希望高手帮帮忙啊
阿云ivan 2009-07-14
  • 打赏
  • 举报
回复
focus
evaa006 2009-07-14
  • 打赏
  • 举报
回复
我用的是GDI给出底图,再用坐标控制打印出来
youth0826 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
看你的代码是服务端的打印机? 如果是客户端的打印.

可以考虑最后输出为TXT文件.制作AX控件发送TXT数据到打印机.
[/Quote]

如果是客户端的打印,能否给具体一点的指导,或则源代码
zgke 2009-07-14
  • 打赏
  • 举报
回复
看你的代码是服务端的打印机? 如果是客户端的打印.

可以考虑最后输出为TXT文件.制作AX控件发送TXT数据到打印机.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧