C#如何获取打印列表里的Jobid

yj01263431 2015-05-02 04:57:12
如题:
C#如何获取打印列表里的Jobid,因为我需要暂停或者取消打印队列的某个任务
我上网查了很多资料,都只能找到这些
public static StringCollection GetPrintJobsCollection(string printerName)
{
StringCollection printJobCollection = new StringCollection();
string searchQuery = "SELECT * FROM Win32_PrintJob";

/*searchQuery can also be mentioned with where Attribute,
but this is not working in Windows 2000 / ME / 98 machines
and throws Invalid query error*/
ManagementObjectSearcher searchPrintJobs =
new ManagementObjectSearcher(searchQuery);
ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();
foreach(ManagementObject prntJob in prntJobCollection)
{
System.String jobName = prntJob.Properties["Name"].Value.ToString();

//Job name would be of the format [Printer name], [Job ID]
char[] splitArr = new char[1];
splitArr[0] = Convert.ToChar(",");
string prnterName = jobName.Split(splitArr)[0];
string documentName = prntJob.Properties["Document"].Value.ToString();
if(String.Compare(prnterName, printerName, true) == 0)
{
printJobCollection.Add(documentName);
}
}
return printJobCollection;
}

public static bool PausePrintJob(string printerName, int printJobID)
{
bool isActionPerformed = false;
string searchQuery = "SELECT * FROM Win32_PrintJob";
ManagementObjectSearcher searchPrintJobs =
new ManagementObjectSearcher(searchQuery);
ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();
foreach(ManagementObject prntJob in prntJobCollection)
{
System.String jobName = prntJob.Properties["Name"].Value.ToString();
//Job name would be of the format [Printer name], [Job ID]
char[] splitArr = new char[1];
splitArr[0] = Convert.ToChar(",");
string prnterName = jobName.Split(splitArr)[0];
int prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);
string documentName = prntJob.Properties["Document"].Value.ToString();
if(String.Compare(prnterName, printerName, true) == 0)
{
if(prntJobID == printJobID)
{
prntJob.InvokeMethod("Pause", null);
isActionPerformed = true;
break;
}
}
}
return isActionPerformed;
}

public static bool CancelPrintJob(string printerName, int printJobID)
{
bool isActionPerformed = false;
string searchQuery = "SELECT * FROM Win32_PrintJob";
ManagementObjectSearcher searchPrintJobs =
new ManagementObjectSearcher(searchQuery);
ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();
foreach(ManagementObject prntJob in prntJobCollection)
{
System.String jobName = prntJob.Properties["Name"].Value.ToString();
//Job name would be of the format [Printer name], [Job ID]
char[] splitArr = new char[1];
splitArr[0] = Convert.ToChar(",");
string prnterName = jobName.Split(splitArr)[0];
int prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);
string documentName = prntJob.Properties["Document"].Value.ToString();
if(String.Compare(prnterName, printerName, true) == 0)
{
if(prntJobID == printJobID)
{
//performs a action similar to the cancel
//operation of windows print console
prntJob.Delete();
isActionPerformed = true;
break;
}
}
}
return isActionPerformed;
}
第二个方法需要传递printJobID 请问如何获取? 请大侠们指教
...全文
206 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
01、数据简介 规模以上工业企业,是指年主营业务收入达到一定规模的工业法人单位。这一标准由国家统计局制定,旨在通过统一口径筛选出对工业经济具有显著贡献的“核心企业”,为政策制定、经济监测和学术研究提供精准数据支撑。 数据名称:地级市-规模以上工业企业相关数据 数据年份:2000-2024年 02、相关数据 原始数据:年份 省份 城市 省份代码 城市代码 规模以上工业企业单位数(个) 规模以上工业增加值增速(%) 规模以上工业企业单位数_内资企业(个) 规模以上工业企业单位数_港澳台商投资企业(个) 规模以上工业企业单位数_外商投资企业(个) 规模以上工业亏损企业单位数(个) 插值:年份 省份 城市 省份代码 城市代码 规模以上工业企业单位数(个) 规模以上工业企业单位数(个)_线性插值 规模以上工业企业单位数(个)_回归填补 规模以上工业增加值增速(%) 规模以上工业增加值增速(%)_线性插值 规模以上工业增加值增速(%)_回归填补 规模以上工业企业单位数_内资企业(个) 规模以上工业企业单位数_内资企业(个)_线性插值 规模以上工业企业单位数_内资企业(个)_回归填补 规模以上工业企业单位数_港澳台商投资企业(个) 规模以上工业企业单位数_港澳台商投资企业(个)_线性插值 规模以上工业企业单位数_港澳台商投资企业(个)_回归填补 规模以上工业企业单位数_外商投资企业(个) 规模以上工业企业单位数_外商投资企业(个)_线性插值 规模以上工业企业单位数_外商投资企业(个)_回归填补 规模以上工业亏损企业单位数(个) 规模以上工业亏损企业单位数(个)_线性插值 规模以上工业亏损企业单位数(个)_回归填补

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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