关于打印信息监控的问题,请各位帮忙!!!

feilong215 2003-08-25 12:20:52
我想请问一下用C#做的监控打印信息的问题,就是得到所有的打印信息(文件名,页数,用户名).先谢过各位了.
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
namezhu 2003-08-26
  • 打赏
  • 举报
回复
using System;
using System.Data;
using System.Runtime.InteropServices;

namespace EnumPrintjobstest
{
class Class1
{
[DllImport("winspool.drv",CharSet=CharSet.Auto)]
static extern bool OpenPrinter(string name,out IntPtr hPrinter, IntPtr pDefault);

[DllImport("winspool.drv",CharSet=CharSet.Auto)]
static extern bool ClosePrinter(IntPtr hPrinter);

// BOOL EnumJobs(
// HANDLE hPrinter, // handle to printer object
// DWORD FirstJob, // index of first job
// DWORD NoJobs, // number of jobs to enumerate
// DWORD Level, // information level
// LPBYTE pJob, // job information buffer
// DWORD cbBuf, // size of job information buffer
// LPDWORD pcbNeeded, // bytes received or required
// LPDWORD pcReturned // number of jobs received
// );
[DllImport("winspool.drv",CharSet=CharSet.Auto)]
// static extern bool EnumJobs(IntPtr hPrinter,int FirstJob,int NoJobs,int Level,out IntPtr pJob,int cbBuf,out int pcbNeeded,out int pcReturned);
static extern bool EnumJobs(IntPtr hPrinter,int FirstJob,int NoJobs,int Level,out IntPtr pJob,int cbBuf,out IntPtr pcbNeeded,out IntPtr pcReturned);

[STAThread]
static void Main(string[] args)
{
string PrintName="\\"+"\\"+"FRANK"+"\\"+"Epson LQ";
EnumJobs(PrintName);


// Console.Write(PrintName.ToString());
string str=Console.ReadLine();

}

private static void EnumJobs(string StrPrintName)
{
bool bRet;
int cbBuf=0;
IntPtr pPrintHand= IntPtr.Zero;
IntPtr Pdef= IntPtr.Zero;
IntPtr pJob=IntPtr.Zero;
// int dwNeeded,dwReturned;
IntPtr dwNeeded,dwReturned;

bRet = OpenPrinter(StrPrintName, out pPrintHand, Pdef);

Console.Write("PrintName:{0}\n",StrPrintName); //ok
Console.Write("PrintHand:{0}\n",pPrintHand); //ok

if (bRet)
{
if( ! EnumJobs( pPrintHand, 0, 256,1,out pJob , 0, out dwNeeded,out dwReturned ) )
{
Console.Write("dwNeeded {0}",dwNeeded); //ok
Console.Write("dwReturned {0}",dwReturned); //error ?
// ......
}

}
else
{
ClosePrinter(pPrintHand);
Console.Write("PrintName error");
}

ClosePrinter(pPrintHand);

}
}
namezhu 2003-08-26
  • 打赏
  • 举报
回复
geifeng
feilong215 2003-08-25
  • 打赏
  • 举报
回复
是去监控打印机,不过是本机的打印机.也要监控通过网络在本机的打印信息.
layershow 2003-08-25
  • 打赏
  • 举报
回复
是想控制自己的打印信息,还是要去监控打印机?
获取所有要打印的信息(包括其他用户的打印)?

110,533

社区成员

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

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

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