none
c#取得printer列印文件問題? RRS feed

  • 問題

  • 環境w7+vs2010

    想請問,我用c#去取得Win32_PrintJob的所有屬性,已可成功的得到印表機列印文件的狀態,但取得的文件名稱,比如ppt檔,均會傳給我簡報1...這種文件名,是否有辦法可取得印表機正在列印檔案的原始檔名??

    2012年3月16日 上午 08:56

解答

所有回覆

  •  你要不要先告訴我們, 你是怎麼取的 ?

    不然以你現有的資訊來判斷, 我覺得拿數位相機去拍是個不錯的方法.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年3月16日 上午 09:07
    版主
  • hi Bill大:

    我是參考http://msdn.microsoft.com/en-us/library/windows/desktop/aa394370(v=vs.85).aspx

    我的程式在這,它很怪,word那些都可取到檔名,偏偏ppt它就給我變簡報1,簡報2...

    ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
                //create object query
                ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_PrintJob");
                //create object searcher
                ManagementObjectSearcher searcher =  new ManagementObjectSearcher(scope, query);
    
                //get collection of WMI objects
                ManagementObjectCollection queryCollection = searcher.Get();
    
                //enumerate the collection.
                foreach (ManagementObject m in queryCollection)
                {
                    // access properties of the WMI object
                    Console.Write("start"+"\n");
                    Console.Write(m["Document"] + "\n");
                    Console.Write(m["Name"] + "\n");
                    Console.Write(m["Description"] + "\n");
                    Console.Write(m["Caption"] + "\n");
    
                     Console.Write(m["Color"] + "\n");
                     Console.Write(m["DataType"] + "\n");
                     Console.Write(m["Description"] + "\n");
                     Console.Write(m["Document"] + "\n");
                     Console.Write(m["DriverName"] + "\n");
    
                     Console.Write(m["HostPrintQueue"] + "\n");
    
                     Console.Write(m["JobId"].ToString() + "\n");
                     Console.Write(m["JobStatus"] + "\n");
                     Console.Write(m["Name"] + "\n");
                     Console.Write(m["Notify"] + "\n");
                     Console.Write(m["Owner"] + "\n");
    
                     Console.Write(m["PaperSize"] + "\n");
    
                     Console.Write(m["Parameters"] + "\n");
                     Console.Write(m["PrintProcessor"] + "\n");
    
                     Console.Write(m["Status"] + "\n");
    
    
                    Console.ReadKey();
                }

    2012年3月16日 上午 09:18
  • 或許你可以參考這篇文章的做法看看。

    http://www.codeproject.com/Articles/6592/A-simple-approach-for-controlling-print-jobs-using


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已標示為解答 小貓貓 2012年3月20日 上午 02:27
    2012年3月16日 下午 01:23