c# 获取和取消本地打印队列
来源:互联网 发布:linux下删除用户 编辑:程序博客网 时间:2024/05/22 23:51
Dictionary<string, int> GetAllPrinterQueues()
{
RaiseLog("Getting print queue counts");
Dictionary<string, int> TempDict = new Dictionary<string, int>();
PrintServer myPrintServer = new PrintServer(); // Get all the printers installed on this PC
// List the print server's queues
PrintQueueCollection myPrintQueues = myPrintServer.GetPrintQueues();
String printQueueNames = "My Print Queues:\n\n";
foreach (PrintQueue pq in myPrintQueues)
{
Saint.StCommon.Wait((decimal)2000); // 2 seconds of "Application.DoEvents(), not thread sleep
if (GotPingBack(pq.Name))
{
int PGcount = 0;
try
{
if (pq.NumberOfJobs > 0)
{
// We know there are jobs. So we *have* to be able to get the collection at some point
DateTime Bailout = DateTime.Now.AddSeconds(10); // Keep trying for 10 seconds or until I get a valid response
string ErrMsg = "notyetretreived";
while (Bailout > DateTime.Now && ErrMsg != string.Empty)
{
try
{
var Jobs = pq.GetPrintJobInfoCollection();
Saint.StCommon.Wait((int)2);
foreach (PrintSystemJobInfo Job in Jobs)
{
PGcount += Job.NumberOfPages;
ErrMsg = string.Empty;
}
}
catch (Exception k)
{
ErrMsg = k.Message;
Console.WriteLine(string.Format("{0}: {1}", pq.Name, k.Message));
}
}
}
}
catch
{
Console.WriteLine("Exception dork");
}
Console.WriteLine(string.Format("{2}\t{0}\t{1}", pq.Name, PGcount, DateTime.Now.ToString("HH:mm:ss.fff")));
TempDict.Add(pq.Name, PGcount);
}
}
return TempDict;
}
public bool CancelPrintJob(int printJobID)
{
// Variable declarations.
bool isActionPerformed = false;
string searchQuery;
String jobName;
char[] splitArr;
int prntJobID;
ManagementObjectSearcher searchPrintJobs;
ManagementObjectCollection prntJobCollection;
try
{
// Query to get all the queued printer jobs.
searchQuery = "SELECT * FROM Win32_PrintJob";
// Create an object using the above query.
searchPrintJobs = new ManagementObjectSearcher(searchQuery);
// Fire the query to get the collection of the printer jobs.
prntJobCollection = searchPrintJobs.Get();
// Look for the job you want to delete/cancel.
foreach (ManagementObject prntJob in prntJobCollection)
{
jobName = prntJob.Properties["Name"].Value.ToString();
// Job name would be of the format [Printer name], [Job ID]
splitArr = new char[1];
splitArr[0] = Convert.ToChar(",");
// Get the job ID.
prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);
// If the Job Id equals the input job Id, then cancel the job.
if (prntJobID == printJobID)
{
// Performs a action similar to the cancel
// operation of windows print console
prntJob.Delete();
isActionPerformed = true;
break;
}
}
return isActionPerformed;
}
catch (Exception sysException)
{
// Log the exception.
return false;
}
}
- c# 获取和取消本地打印队列
- c# 获取和取消本地打印队列
- 如何取消打印队列
- ubuntu 取消打印队列命令
- c#获取本地IP和MAC地址
- c#获取本地IP和MAC地址
- c#获取本地IP和MAC地址
- c#获取本地IP和MAC地址
- c#获取本地IP和MAC地址
- delphi 获取打印队列状态
- C#获取本地IP
- C#获取本地计算机信息
- c# 获取本地路径
- C#获取本地IP地址兼容win7和xp
- C#获取本地IP地址兼容win7和xp
- ios 本地推送的添加和取消
- c#打印和打印预览
- 获取控制台打印数据写入本地文档
- winform窗口的最大宽度和高度
- 使用Microsoft RDC for Mac在Mac和Windows间传文件
- GAME Idea(continuous updating)
- DataGridView 点击拖动之后,提示index越界的问题。
- Tomcat目录说明
- c# 获取和取消本地打印队列
- .net托管环境下struct实例字段的内存布局(Layout)和大小(Size)
- BMP和JPEG的区别
- 【引用】电话号码的学问
- thinkphp项目_简历网站
- C#保存图片时提示“GDI+ 中发生一般性错误”
- C#中如何使用VC++创建的dll动态链接库的返回参数
- 本地资源和项目资源文件的区别
- 程序员漫画