zoukankan      html  css  js  c++  java
  • 根据打印机名称返回打印机任务方法

    ///返回 JOB_INFO_1 指针,和任务记录数 pLength 
    JOB_INFO_1* CControlPrinterDlg::ListJobsArray(LPTSTR szPrinterName,LPDWORD pLength) //CControlPrinterDlg::你的类名
    {
            HANDLE hPrinter;
    	DWORD  dwNeeded,dwReturned,i;
    	JOB_INFO_1* pJobInfo;
    	if(!OpenPrinter(szPrinterName,&hPrinter,NULL)) //打开打印机
    	{
    		return NULL;
    	}
    	//
    	if(!EnumJobs(hPrinter,0,0xFFFFFFFF,1,NULL,0,&dwNeeded,&dwReturned))
    	{
    		if(GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
    		{
                         ClosePrinter(hPrinter);
    	             return NULL;
    		}
    	}
    
    	if((pJobInfo=(JOB_INFO_1*)malloc(dwNeeded))==NULL)
    	{
    		 ClosePrinter(hPrinter);
    		 return NULL;
    	}
    	if(!EnumJobs(hPrinter,0,0xFFFFFFFF,1,(LPBYTE)pJobInfo,dwNeeded,&dwNeeded,&dwReturned))
    	{
    		ClosePrinter(hPrinter);
    		free(pJobInfo);
    		return NULL;
    	}
    	ClosePrinter(hPrinter);
    	*pLength=dwReturned;
    	return pJobInfo;
    }
    

      

    调用:

    void CControlPrinterDlg::OnSelchangePrinters() 
    {
    	// TODO: Add your control notification handler code here
    	int nIndex=m_listbox.GetCurSel();
    	CString strPrinterName;
    	m_listBox_job.ResetContent();
    	if(nIndex!=CB_ERR)
    	{
    		m_listbox.GetText(nIndex,strPrinterName);
    		if(!strPrinterName.IsEmpty())
    		{
    			DWORD length;
    			JOB_INFO_1* jobs=ListJobsArray((LPTSTR)(LPCSTR)strPrinterName,&length);  //这里调用
    			if(jobs!=NULL)
    			{
    				for(int i=0;i<length;i++)
    				{		
    					m_listBox_job.AddString(jobs[i].pDocument);
    				}
    			}
    			free(jobs); //释放
    		}
    
    	}
    }
    

      

  • 相关阅读:
    NSString拼接字符串
    2020/4/26
    2020/4/25
    2020/4/24
    2020/4/22
    2020/4/22
    2020/4/20
    2020/4/19
    2020/4/18
    2020/4/17
  • 原文地址:https://www.cnblogs.com/ericyi/p/4402369.html
Copyright © 2011-2022 走看看