怎么样判断打印机没有开,谢谢

terryxin 2004-07-03 04:56:22
我想知道怎么判断打印机没有开,或者端口不是我指定的端口啊,谢谢大家,
...全文
334 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
terryxin 2004-07-14
  • 打赏
  • 举报
回复
帮忙啊,怎么才能判断打印机没有打开,我现在
判断没有用啊,
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
Dim iHandle As IntPtr
iHandle = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
If (iHandle.ToInt32 = -1) Then
MsgBox("没有连接打印机或者打印机端口不是LPT1")
Exit Sub
Else
直接打开文件,往端口上写文件
end if
现在的问题是我的打印机没开或者没有纸了,怎么判断可以不执行else后面的,而给出上面的提示信息啊,问题解决了,另开贴给分,谢谢
terryxin 2004-07-14
  • 打赏
  • 举报
回复
真的没有人知道啊,希望中
terryxin 2004-07-10
  • 打赏
  • 举报
回复
是啊,帮忙啊
WhoseSoft 2004-07-10
  • 打赏
  • 举报
回复
连顶三次 不能再顶

不会作答 只能帮顶

看来目前VB.NET版块还没有高手出现

小李飞刀的刀到底有多快,没人知道,但凡见过它的人都死了
terryxin 2004-07-10
  • 打赏
  • 举报
回复
没人知道啊,给说说啊
terryxin 2004-07-09
  • 打赏
  • 举报
回复
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim iHandle As IntPtr
iHandle = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
If (iHandle.ToInt32 = -1) Then
MsgBox("没有连接打印机或者打印机端口不是LPT1")
Exit Sub
Else
直接打开文件,往端口上写文件
end if
end sub
在按年中
terryxin 2004-07-09
  • 打赏
  • 举报
回复
快要给客户上了,还这个问题没有解决,帮忙啊,怎么才能判断打印机没有打开,我现在
判断没有用啊,
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
Dim iHandle As IntPtr
iHandle = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
If (iHandle.ToInt32 = -1) Then
MsgBox("没有连接打印机或者打印机端口不是LPT1")
Exit Sub
Else
直接打开文件,往端口上写文件
end if
现在的问题是我的打印机没开或者没有纸了,怎么判断可以不执行else后面的,而给出上面的提示信息啊,问题解决了,另开贴给分,谢谢
liyiding23 2004-07-09
  • 打赏
  • 举报
回复
是个常量
terryxin 2004-07-09
  • 打赏
  • 举报
回复
INVALID_HANDLE_VALUE 这个东东代表什么意思啊在vb.net中
terryxin 2004-07-06
  • 打赏
  • 举报
回复
up
xDotNet 2004-07-03
  • 打赏
  • 举报
回复
关注
水如烟 2004-07-03
  • 打赏
  • 举报
回复
楼主弄成VB后贴出来,我也偷懒
水如烟 2004-07-03
  • 打赏
  • 举报
回复
终于找到正宗货了(其实我过两天也要用到的)

HOWTO: Get the Status of a Printer and a Print Job

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q160/1/29.asp&NoWebContent=1
水如烟 2004-07-03
  • 打赏
  • 举报
回复
这篇是抄来的抄来的,出处何处不祥

曾经看见过一篇文章,如下,但是我的writeFile就是不能正常进行。我不知道是不是要将11、12脚接地?谁以前做过啊?
其实并口通信比串口通信更简单。
: 关于并行口(25针)针脚的定义可参见PC_CLUB版精华区“与硬件有关的东东”
: 目录下的“串、并行口针脚的定义”一文,其中数据位0到数据位7分别对应于
: 针脚2到针脚9。
: 从并口发送和接收一个字节数据可通过读写I/O端口完成,与并口有关的
: 端口有3个,默认的地址是378H、379H、37AH,由于并口主要用来与打印机
: 连接,所以这3个端口的功能也是为控制打印机设计的,若用于通信,可从
: 378H发送和接收数据,另两个口作为握手信号用。
: 如果用VC编程,不必编.DLL,因为VC中可以直接读写I/O端口(当然只能在
: Win95/98下)。

补充一点吧。。。
虽然在NT环境下,内核安全模式禁止直接对端口进行操作。但在用VC++编程时,
可以利用NT的API函数CreateFile和WriteFile控制操作。应该注意的,必须将
DB25输入插座的11脚和12脚接地,否则,操作不能顺利进行。此二脚分别对应
打印机的Busy和PE(纸尽)信号。

例子代码如下:
.....
HANDLE hFile;//定义文件句柄

CString m_LPTString=_T("LPT1");
BYTE* pOut=new BYTE[16];
DWORD number;

//获取文件句柄
hFile=CreateFile(m_LPTString,GENERIC_READIDENERIC_WRITE,0,
NULL,OPEN_EXISTING,NULL,NULL);

//如果文件句柄无效
if(hFile==INVALID_HANDLE_VALUE)
{
AfxMessageBox("老板,LPT或者LPT1还没打开啊,别骂偶啊:P");
}
}
else
{
for(int i=0;i<16;i++)
pOut='a';

//发送数据
if(!WriteFile(hFile,pOut,16,&number,NULL))
{
AfxMessageBox("数据传输时死翘翘乐。。。");
break;
}
else
{
UpdateData(FALSE);
}
}

//通知用户过程结束
Beep(800,600);//吵死你,呼呼

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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