One small thing about printers and Windows

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 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 read her old source codes, still understand it but she didn't really know why she could write these. I am writing this blog post to prevent this situation :))
Have fun.

Comments

  1. omg I just took a look at your entry by chance, and realized there was my name here ^^!

    Anyway, nice entry. Found some interesting info in your entry abt Wrap. Keep up, man :)

    ReplyDelete

Post a Comment

Popular posts from this blog

How to use Oracle JDK 7 on CircleCI Ubuntu 14.04 machines

Build your release APK with CircleCI