Last night, I coded a project in C#. Its function is to list all printers that connect to a PC and make the default printer print. Print documents are images.
I've never worked in that kind of work so I did Googling and got some tuts.
The tuts said: "Honey, just create a PrintDocument
object, the fresh-created one contains a list and first element is the default printer."
I believe them, I did as they told without testing and delivered to my customer.
Bullsh!t, it is ENTIRELY not true.
I had to be back to the traditional way, access the system and read some info blah blah. You should know that I wrote a small e-book about WMI, surely I used this tool.
The WMI code to get the name of default printer in Windows OS is here:
public string GetDefaultPrinterName()
{
var query = new ObjectQuery("SELECT * FROM Win32_Printer");
var searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject mo in searcher.Get())
{
if (((bool?)mo["Default"]) ?? false)
{
return mo["Name"] as string;
}
}
return null;
}
My mate Bình Minh said that, sometimes she reads her old source code, still understands it but she doesn't really know why she could write these. I am writing this blog post to prevent this situation. :))
Have fun!