社区
C++ Builder
帖子详情
怎样确定打印机没有纸?
bubugao
2003-08-20 11:55:41
怎样确定打印机没有纸?
...全文
92
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获得计算机状态 目前...
打印机
的实验报告.doc
如果
打印机
没有
处于联机状态,自然是无法打印了。 二、重新开启
打印机
如果
打印机
处于联机状态仍无法打印文档,此时你可以重新开启
打印机
,不仅清除 了
打印机
内存,还能解决不少的打印故障。 三、将
打印机
设置为默认...
三星SCX_4623
打印机
硒鼓破解软件(免换芯片).rar
要保证
打印机
的前后左右的盖板都盖好,
纸
盒里放
纸
,硒鼓放到位。有杀毒软件的要使所有的杀毒软件禁用。关于清完零之后还有红灯的解决办法,下面是关于红灯提示的一些说明:如果清零过后红依然还亮起还有很多的因素,...
佳能MP240系列
打印机
清零软件
1、先按着 停止/重置键,然后按 电源键 开机(别...点“Main”键进行废墨计数器清零(
打印机
放一张
纸
,会打印出D=000.0,表示清零成功) 关
打印机
重启,测试
打印机
(如果不能打印,请看墨水监控是不是缺墨或其它故障)
佳能mp259 258 2780 清零程序
mp259 258 2780 清零程序 操作方法:1、先按着 ...点“Main”键进行废墨计数器清零(
打印机
放一张
纸
,会打印出D=000.0,表示清零成功) 关
打印机
重启,测试
打印机
(如果不能打印,请看墨水监控是不是缺墨或其它故障)
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章