Tôi đang cố gắng nắm bắt mọi lệnh in được gửi tới máy in trong mạng cục bộ của chúng tôi. Tôi muốn hiển thị một số thuộc tính của công việc như tên công việc, thời gian gửi, v.v.Cách bắt các lệnh in trong C# .NET
Tôi đã thử một vòng lặp while nhưng nó không bắt được công việc in của tôi, có thể là do nó xảy ra trong khi luồng đang ngủ. Có sự kiện nào mà tôi có thể đăng ký và xử lý không? Tôi không muốn dành tất cả tài nguyên CPU cho công việc lặp đi lặp lại này.
Tôi cố gắng này:
public static void WritePrinterJobs()
{
while (true)
{
foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection())
{
Console.WriteLine(job.Submitter + " " + job.TimeJobSubmitted.ToShortDateString());
}
Thread.Sleep(100);
}
}
EDIT: Đoạn mã trên thực sự hoạt động, bạn không cần phải đi cấp dưới nếu nó làm việc cho bạn, sai lầm của tôi đã không được cấu hình máy in mặc định một cách chính xác .
http://stackoverflow.com/questions/6506916/events -trong-printqueue – adt
Hãy để nó được lưu ý rằng nếu bạn đang sử dụng một vòng lặp foreach đó là liên tục chạy, nếu rất nhiều công việc in ấn xảy ra cùng một lúc, các tài liệu có nghĩa là sẽ được in có thể được in trước khi bạn đang mã tìm thấy nó –
Nhưng tôi vẫn phải kiểm tra lại công việc in bằng bộ hẹn giờ? Tôi nghĩ rằng không có loại sự kiện JobAdded mà tôi có thể móc, phải không? –