c# 프린터 상태 조회 및 인쇄 차단
프린터 상태 가져오기
enum PrinterStatus
{
= 1,
= 2,
= 3,
= 4,
= 5,
= 6,
= 7,
}
/// <summary>
///
/// </summary>
/// <param name="PrinterDevice"> </param>
/// <returns> </returns>
private static PrinterStatus GetPrinterPrinterStatus(string PrinterDevice)
{
PrinterStatus ret = 0;
string path = @"win32_printer.DeviceId='" + PrinterDevice + "'";
ManagementObject printer = new ManagementObject(path);
printer.Get();
ret = (PrinterStatus)Convert.ToInt32(printer.Properties["PrinterStatus"].Value);
return ret;
}
프린터 오프라인 검사
public static bool CheckPrinter(string BindPrintName)
{
ManagementScope scope = new ManagementScope(@"\root\cimv2");
scope.Connect();
// Select Printers from WMI Object Collections
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");
string printerName = "";
foreach (ManagementObject printer in searcher.Get())
{
printerName = printer["Name"].ToString().ToLower();
if (printerName.IndexOf(BindPrintName.ToLower()) > -1)
{
//foreach (var property in printer.Properties)
//{
// LogUtil.WriteLog(property.Name + ":" + property.Value);
//}
if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
{
return false;
}
else
{
return true;
}
}
}
return false;
}
프린터 차단 대기열 구현
이것은 주로while 순환을 통해 프린터의 상태를 끊임없이 가져옵니다. 한가할 때 다음 인쇄를 할 수 있습니다. 두 개의 표지 위치를 통해 윤문의 외부 개입과 함께 종료합니다.
FinishWait 플래그 비트는 작업 내부의 ID이며 프린터에서 오류 상태가 확인되면 폴링 종료
GlobalInfo.IsGlobalExist 로고 위치는 프로그램 전역 표지입니다. 만약에 인터페이스에 사용자 대기 시간이 너무 길면 인공 수동 개입으로 종료할 수 있습니다
//
if (!CheckPrinter(PrintName))
{
throw new PrintCheckException(" ");
}
PrinterStatus State = GetPrinterPrinterStatus(PrintName);
if (State == PrinterStatus. )
{
}
else if (State == PrinterStatus. || State == PrinterStatus. )
{
// / ,
while (State != PrinterStatus. && !FinishWait && !GlobalInfo.IsGlobalExist)
{
State = GetPrinterPrinterStatus(PrintName);
if (!CheckPrinter(PrintName))
{
FinishWait = true;
throw new PrintCheckException(" ");
}
if (State == PrinterStatus. || State == PrinterStatus. || State == PrinterStatus. )
{
if (State == PrinterStatus. )
{
FinishWait = true;
}
}
else
{
FinishWait = true;
throw new PrintCheckException(" , :" + State.ToString());
}
}
이상은 c#프린터 상태 조회와 차단 인쇄를 실현하는 상세한 내용입니다. c#프린터 상태 조회와 차단 인쇄에 관한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.