社区
C++ Builder
帖子详情
怎样确定打印机没有纸?
bubugao
2003-08-20 11:55:41
怎样确定打印机没有纸?
...全文
90
1
打赏
收藏
怎样确定打印机没有纸?
怎样确定打印机没有纸?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lvjack
2003-08-21
打赏
举报
回复
回复人: dev_uoboy(过程编程→面向对象) ( ) 信誉:105 2002-3-7 21:25:02 得分:100
使用PRINTER_INFO_2结构的Status域。
比如塞纸、缺纸、忙等。
如果需要例子的话,我可以写出来
.h文件
#ifndef MainUnitH
#define MainUnitH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TMainForm : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TComboBox *PrinterComboBox;
TLabel *Label2;
TEdit *CommentEdit;
TButton *SetCommentButton;
TStatusBar *StatusBar;
void __fastcall FormCreate(TObject *Sender);
void __fastcall SetCommentButtonClick(TObject *Sender);
void __fastcall PrinterComboBoxClick(TObject *Sender);
private: // User declarations
void __fastcall UpdateStatusBar();
AnsiString __fastcall GetComment(char *szPrinterName);
void __fastcall SetComment(char *szPrinterName, AnsiString &asComment);
public: // User declarations
__fastcall TMainForm(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TMainForm *MainForm;
//---------------------------------------------------------------------------
#endif
.cpp文件
#include <vcl.h>
#pragma hdrstop
#include "MainUnit.h"
#include <printers.hpp> // Include VCL's TPrinter
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
PrinterComboBox->Items = Printer()->Printers;
PrinterComboBox->ItemIndex = 0;
UpdateStatusBar();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::UpdateStatusBar()
{
char szDeviceName[CCHDEVICENAME], // 打应机名
szDriverName[MAX_PATH],
szPortName[MAX_PATH];
THandle hPrnDevMode;
PrinterComboBox
Printer()->PrinterIndex = PrinterComboBox->ItemIndex;
// 取得名字
Printer()->GetPrinter(szDeviceName, szDriverName, szPortName, hPrnDevMode);
StatusBar->SimpleText = "Comment: "+GetComment(szDeviceName);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TMainForm::GetComment(char *szPrinterName)
{
HANDLE hPrinter;
PRINTER_DEFAULTS pd;
DWORD dwNeeded;
PRINTER_INFO_2 *pPrtInfo2; // PRINTER_INFO_2 结构指针.
AnsiString asComment;
ZeroMemory(&pd, sizeof(PRINTER_DEFAULTS));
pd.DesiredAccess = PRINTER_ALL_ACCESS;
if(!OpenPrinter(szPrinterName, &hPrinter, &pd))
{
throw Exception("Call to OpenPrinter() failed");
}
if(!GetPrinter(hPrinter, 2, NULL, 0, &dwNeeded))
{
if(GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
ClosePrinter(hPrinter);
throw Exception("1st call to GetPrinter() failed");
}
}
pPrtInfo2 = (PRINTER_INFO_2*) malloc(dwNeeded);
if(pPrtInfo2 == NULL)
{
ClosePrinter(hPrinter);
throw Exception("Call to malloc() failed");
}
// 填充 PRINTER_INFO_2
if(!GetPrinter(hPrinter, 2, (LPBYTE)pPrtInfo2,
dwNeeded, &dwNeeded))
{
free(pPrtInfo2);
ClosePrinter(hPrinter);
throw Exception("2nd call to GetPrinter() failed");
}
asComment = pPrtInfo2->pComment;
free(pPrtInfo2);
ClosePrinter(hPrinter);
return asComment;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::SetComment(char *szPrinterName,
AnsiString &asComment)
{
HANDLE hPrinter;
PRINTER_DEFAULTS pd;
DWORD dwNeeded;
PRINTER_INFO_2 *pPrtInfo2;
ZeroMemory(&pd, sizeof(PRINTER_DEFAULTS));
pd.DesiredAccess = PRINTER_ALL_ACCESS;
if(!OpenPrinter(szPrinterName, &hPrinter, &pd))
{
throw Exception("Call to OpenPrinter() failed");
}
if(!GetPrinter(hPrinter, 2, NULL, 0, &dwNeeded))
{
if(GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
ClosePrinter(hPrinter);
throw Exception("1st call to GetPrinter() failed");
}
}
pPrtInfo2 = (PRINTER_INFO_2*) malloc(dwNeeded);
if(pPrtInfo2 == NULL)
{
ClosePrinter(hPrinter);
throw Exception("Call to malloc() failed");
}
if(!GetPrinter(hPrinter, 2, (LPBYTE)pPrtInfo2,
dwNeeded, &dwNeeded))
{
free(pPrtInfo2);
ClosePrinter(hPrinter);
throw Exception("2nd call to GetPrinter() failed");
}
pPrtInfo2->pComment = asComment.c_str();
if(!SetPrinter(hPrinter, 2, (LPBYTE)pPrtInfo2, 0))
{
free(pPrtInfo2);
ClosePrinter(hPrinter);
throw Exception("Call to SetPrinter() failed");
}
free(pPrtInfo2);
ClosePrinter(hPrinter);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::SetCommentButtonClick(TObject *Sender)
{
char szDeviceName[CCHDEVICENAME],
szDriverName[MAX_PATH],
szPortName[MAX_PATH];
THandle hPrnDevMode;
Printer()->PrinterIndex = PrinterComboBox->ItemIndex;
Printer()->GetPrinter(szDeviceName, szDriverName, szPortName, hPrnDevMode);
SetComment(szDeviceName, CommentEdit->Text);
CommentEdit->Text = "";
UpdateStatusBar();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::PrinterComboBoxClick(TObject *Sender)
{
UpdateStatusBar();
}
QT实现读取
打印机
状态
目前针对QT打印PDF和获取
打印机
状态,通过几天的确认发现三个层面的获取状态 1. QT应用程序级别的获取
打印机
状态,通过QPrint 2. 通过LINUX系统级别的获取 lpstat -l -p 3. 通过
打印机
厂家的API获得计算机状态 目前只实现前两种的状态获取,第三种
没有
实现,需要给
打印机
厂家要API,同时实现QT打印图片和生成PDF文件
打印机
的实验报告.doc
实验报告 实验名称:
打印机
的操作过程 实验仪器:HP LaserjetM1319f MFP 实验目的:认识和了解
打印机
的工作原理,掌握
打印机
的使 用方法. 实验步骤:一、
打印机
与电脑的数据连接 .首先正确关闭电源; .把USB借口的两端分别连接在电脑和
打印机
的接口上; .打开电源开关,检查是否正确安装成功 二、
打印机
驱动器程序的安装 .点击电脑屏幕右下角的"开始"\菜单\"
打印机
和传真"; .在"
打印机
和传真"文件夹中,双击"添加
打印机
",进入"
打印机
向导", 点击"下一步"; .选择"连接到这台计算机的本地
打印机
",并将"自动检测并安装我的即插 即用
打印机
"前面的勾去掉,点击"下一步"; .在"使用以下端口"中选择"LPT1:
打印机
端口",点击"下一步"; .点击"下一步",在"是否希望将这台
打印机
机设置为默认
打印机
",选择 "是",点击"下一步"; .默认为"不共享这台
打印机
",点击"下一步"; .根据自己的需要选择是否"要打印测试
纸
",打开一个Word文档,输入要 测试内容,选择"文件"\"
打印机
"\"
确定
"; .点击"下一步",将会出现"正在完成添加
打印机
向导"的提示界面。此时 ,选择"完成"。 实验小结: 本周我们
打印机
的使用操作过程以及它的基本工作原理,并且我在互联网上我也更 多的了解到
打印机
的一些相关知识。
打印机
(printer) 是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上。衡量
打印机
好坏的指标有三项:打印分辨率,打印速度和噪声。
打印机
的种类很多,按打印元件对
纸
是否有击打动作,分击打式
打印机
与非击打式
打印机
。按打印字符结构,分全形字
打印机
和点阵字符
打印机
。按一行字在
纸
上形 成的方式,分串式
打印机
与行式
打印机
。按所采用的技术,分柱形、球形、喷墨式 、热敏式、激光式、静电式、磁式、发光二极管式等
打印机
。 因此我还了解到如果
打印机
无法打印怎么办? 一、
打印机
须联机 在大多数
打印机
上都有一个"ONLINE"指示灯,通常为绿色的常亮状态。当该指示灯不 亮或处于闪烁状态,说明联机不正常。请检查
打印机
电源开关是否打开、电缆是否 连接等。如果
打印机
没有
处于联机状态,自然是无法打印了。 二、重新开启
打印机
如果
打印机
处于联机状态仍无法打印文档,此时你可以重新开启
打印机
,不仅清除 了
打印机
内存,还能解决不少的打印故障。 三、将
打印机
设置为默认
打印机
单击Windows 7"开始"菜单,指向"设备和
打印机
",单击打开"
打印机
"窗口,右键单击
打印机
图标 ,系统弹出快捷菜单,单击其中的"设置为默认
打印机
"即可。将
打印机
设置为默认
打印机
四、检查
纸
装放置 检查
打印机
进
纸
盒是否有打印
纸
、色带和其它必需品,硒鼓、粉盒、色带或墨粉是否 有效。 五、取消暂停打印。
打印机
处于暂停打印状态也导致不能打印,在"
打印机
"窗口,右键单击在用的打印 机图标,然后单击以清除"暂停打印"选项前的对号" "。 六、卡
纸
出现卡
纸
时,大部分情况下,关闭
打印机
,轻轻将卡
纸
取出即可;根据
打印机
屏幕或 者电脑屏幕上会出现处理卡
纸
的提示,按照提示一步一步操作,就能恢复正常打印 。(下图以HP机器为例进行演示) 卡
纸
操作演示: 七、打印头堵塞 打印头堵塞有三种方法进行解决,首先查看墨水,判断墨水是否用完,若用完,及时 更换新墨盒;用
打印机
的喷嘴检查程序,看打印结果是否严重断线,可用内置的喷 头清洁程序来让堵塞喷头恢复正常;或是将墨盒取出来进行手工来清洗。 八、程序生成的输出不正确导致不能打印 要
确定
程序生成的输出能否正确,能够采用通过其他程序打印文档的方法验证,在" 记事本"或"写字板"中键入几行文字,然后单击"文件"菜单上的"打印"。如果不能够 打印测试文档,可能是你使用的程序有问题,请重新安装程序。 九、重新安装
打印机
驱动程序。 有时,
打印机
驱动程序可能被损坏,从而引发无法打印文档的错误。我们可以重新 安装合适的驱动程序,然后再打印。在"
打印机
"窗口,右键单击
打印机
图标,再单 击"删除设备"。如果系统提示"删除这台
打印机
的专用文件",请单击"是"按钮;在 "设备和
打印机
"窗口,双击"添加
打印机
"图标,打开"添加
打印机
向导",单击"下一 步"按钮,然后执行屏幕指令。 十、杀毒 不定期对电脑进行杀毒 检查是否存在病毒,用杀毒软件进行杀毒。 如经过上述检查还是无法打印,有可能是
打印机
损坏,请将
打印机
送修。 不管是激光
打印机
还是喷墨
打印机
,在进行搬动或剧烈移动时,必须先把
打印机
关 闭,然后断开电源线缆,避免损坏机器。 根据科学的快速发展,在相比速印机的近一个基础上,我们可以通过对电脑的连接 直接打印所需要的文档,对其进行排版等一切操作。 紧跟着办公设备的逐渐完善,在企事业单位也带来了它便利的一面,为我们办公室 的工作人员节省了不少时间,而且
三星SCX_4623
打印机
硒鼓破解软件(免换芯片).rar
软件介绍: 连接好
打印机
,硒鼓如果有芯片的话用胶带屏蔽掉拖动FIX.hd 文件,到usb.exe上,松开,会有下面的提示download............................走完后,刷机完毕
打印机
会重启。破解完毕以后要在
打印机
的前面板上执行如下操作:1、按控制面板上的菜单(menu)键。2、按左/右箭头直到显示"系统设置(System setup),然后按 OK。3、按左/右箭头直到显示"清除设置(Clear Setting),然后按 OK。4、按左/右箭头,选择到"所有设置(All settings)"然后按 OK。5、当“(yes)是”出现时,按 OK 确认清除
佳能MP240系列
打印机
清零软件
1、先按着 停止/重置键,然后按 电源键 开机(别松开)。 2、等
打印机
启动,按住 电源键 不要放手,然后松开 停止/重置 键。 3、然后再按两下 停止/重置键。同时松开 电源健和停止/重置 键,启示完毕,
打印机
显示为"0"。(如果不是显示为“0”,请关机重新操作。) 4、电脑提示找到新硬件并提示安装驱动,不用管它,如果
没有
找到新硬件,建议重启电脑或更换电脑试试。(如果电脑找不到新硬件,清零软件是无法使用的) 点“EEPROM”键(如果显示错误 比如 002 ,点
确定
即可) 点“Main”键进行废墨计数器清零(
打印机
放一张
纸
,会打印出D=000.0,表示清零成功) 关
打印机
重启,测试
打印机
(如果不能打印,请看墨水监控是不是缺墨或其它故障)
佳能mp259 258 2780 清零程序
mp259 258 2780 清零程序 操作方法:1、先按着 停止/重置键,然后按 电源键 开机(别松开)。 2、等
打印机
启动,按住 电源键 不要放手,然后松开 停止/重置 键。 3、然后再按两下 停止/重置键。同时松开 电源健和停止/重置 键,启示完毕,
打印机
显示为"0"。(如果不是显示为“0”,请关机重新操作。) 4、电脑提示找到新硬件并提示安装驱动,不用管它,如果
没有
找到新硬件,建议重启电脑或更换电脑试试。(如果电脑找不到新硬件,清零软件是无法使用的) 点“EEPROM”键(如果显示错误 比如 002 ,点
确定
即可) 点“Main”键进行废墨计数器清零(
打印机
放一张
纸
,会打印出D=000.0,表示清零成功) 关
打印机
重启,测试
打印机
(如果不能打印,请看墨水监控是不是缺墨或其它故障)
C++ Builder
13,824
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章