・プリンタにキューが追加されたときにイベントを発生させる方法を知りたいです。
プログラミング初心者なのでわからないことが多いです
初心者ということでしたら、ライブラリを使用したらどうでしょう?
簡単にできました(正直わたしも中で何をやっているかわかってませんが^^;
.NET7です^^
cs
1using System.Diagnostics;
2using System.Text.Json;
3using PrinterQueueWatch;
4
5namespace Qqc8kfcasiidypx;
6
7internal static class Program
8{
9 [STAThread]
10 static void Main()
11 {
12 ApplicationConfiguration.Initialize();
13
14 var pmon = new PrinterMonitorComponent();
15 pmon.JobAdded += Pmon_JobAdded;
16 foreach (var p in new PrinterInformationCollection())
17 {
18 pmon.AddPrinter(p.PrinterName);
19 Debug.WriteLine($"Printer {p.PrinterName} added to monitor");
20 }
21
22 var notifyIcon = new NotifyIcon
23 {
24 Icon = new Icon("Icon1.ico"),
25 ContextMenuStrip = new ContextMenuStrip(),
26 Text = "常駐アプリ",
27 Visible = true,
28 };
29 notifyIcon.ContextMenuStrip.Items.Add("終了", null, Exit_Click);
30
31 Application.Run();
32
33
34
35 void Pmon_JobAdded(object sender, PrintJobEventArgs e)
36 {
37 var options = new JsonSerializerOptions { WriteIndented = true };
38 var json = JsonSerializer.Serialize(e, options);
39 Debug.WriteLine(json);
40
41 MessageBox.Show("紙の削減をしましょう");
42 }
43
44 void Exit_Click(object? sender, EventArgs e)
45 {
46 try
47 {
48 pmon.Dispose();
49 }
50 catch (Exception ex)
51 {
52 Debug.WriteLine(ex);
53 }
54
55 notifyIcon.Dispose();
56 Application.Exit();
57 }
58 }
59}
NuGet Gallery | PrinterQueueWatch 1.0.7
似たようなことをやってそうですが、手元では動きませんでした。
Monitor jobs in a printer queue (.NET) - CodeProject