怎么样得到某个端口上已连接的打印机的名字?
1 如COM1:口,如何判断是否有打印机连到上面?
2 有的话如何得到其名字?
3 如何给现有的打印机更换端口??

解决方案 »

  1.   

    先使用EnumPrinters获得本地所有的打印机,然后使用OpenPrinter打开打印机获得相关打印机句柄,然后使用这个句柄调用GetPrinter(使用PRINTER_INFO_2)获得打印机的信息,其中就有端口信息!具体的API使用参考MSDN!
      

  2.   

    其中的一些API的使用可以参考:http://support.microsoft.com/kb/q196805/
    注意GetPrinter中的参数结构体:
    PRINTER_INFO_2
    The PRINTER_INFO_2 structure specifies detailed printer information. typedef struct _PRINTER_INFO_2 { // pri2 
        LPTSTR    pServerName; 
        LPTSTR    pPrinterName; 
        LPTSTR    pShareName; 
        LPTSTR    pPortName; //这就是端口信息
        LPTSTR    pDriverName; 
        LPTSTR    pComment; 
        LPTSTR    pLocation; 
        LPDEVMODE pDevMode; 
        LPTSTR    pSepFile; 
        LPTSTR    pPrintProcessor; 
        LPTSTR    pDatatype; 
        LPTSTR    pParameters; 
        PSECURITY_DESCRIPTOR pSecurityDescriptor; 
        DWORD     Attributes; 
        DWORD     Priority; 
        DWORD     DefaultPriority; 
        DWORD     StartTime; 
        DWORD     UntilTime; 
        DWORD     Status; 
        DWORD     cJobs; 
        DWORD     AveragePPM; 
    } PRINTER_INFO_2; 
      

  3.   

    谢谢 vcleaner(我没当大哥很久了.......) 
    那第三个问题,
    如何设置打印机到另外的端口?
    需要哪些步骤?
      

  4.   

    上面的结构体中的pPrinterName就是打印机名,也就是通过EnumPrinters获得到的。
    对于第三个问题可以使用SetPrinter这个API,其参数大都和GetPrinter一样,自己看看吧!
      

  5.   

    http://www.china-askpro.com/msg27/qa79.shtml
      

  6.   

    其实GetPrinter和SetPrinter能解决很多问题的!