通过注册表设置默认打印机的方法

来源:互联网 发布:java在线鲜花销售系统 编辑:程序博客网 时间:2024/05/17 09:27
 

//获取默认打印机
BOOL CPrinterInfo::GetTheDefaultPrinterByReg()
{
 //通过注册表,获取默认的打印机配置
 HKEY defaultKey;
 DWORD bufferSize = 255;
 TCHAR *printerName = new TCHAR[255];
 //_tprintf_s(_T("\nGet The Default Printer......\n"));
 if(RegOpenKeyEx(HKEY_CURRENT_USER,
  _T("Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"),0,
  KEY_QUERY_VALUE,&defaultKey) == ERROR_SUCCESS)
 {
  if(RegQueryValueEx( defaultKey,
   _T("Device"),
   NULL,
   NULL,
   (LPBYTE)printerName,
   &bufferSize ) == ERROR_SUCCESS)
  {
   //_memccpy(m_szOldDefultPrinterName,printerName,',',MAX_PATH); 
   //_tcscpy_s(m_szOldDefultPrinterName,MAX_PATH,printerName);
   memcpy(m_szOldDefultPrinterName,printerName,MAX_PATH);
  }
  else
  {
   //_tprintf_s(_T("failed to get the default printer\n\n"));
   RegCloseKey(defaultKey);
   return FALSE;
  }
 }
 RegCloseKey(defaultKey);
 return TRUE;
}

 

//设置默认打印机
void CPrinterInfo::SetDefalutPrinterByReg()
{
 //通过注册表,设置默认的打印机配置
 HKEY defaultKey;
 
 
 //tempName长度
 DWORD keySize = (lstrlen(m_szOldDefultPrinterName)+1)*sizeof(TCHAR);
 
 //_tprintf_s(_T("\nSet The Default Printer..............\n"));
 //打开注册表
 if(RegOpenKeyEx(HKEY_CURRENT_USER,
  _T("Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"),0,
  KEY_SET_VALUE  //KEY_SET_VALUE 标识权限,修改注册表
  ,&defaultKey) == ERROR_SUCCESS)
 {
  if( RegSetValueEx( defaultKey,
   _T("Device"),
   NULL,
   REG_SZ, //key标识,REG_SZ标识字符串
   (LPBYTE)m_szOldDefultPrinterName,
   keySize )== ERROR_SUCCESS)
  {
   //_tprintf_s(_T(".....OK.......\n"));
   //AfxMessageBox(m_szOldDefultPrinterName);
  }
  else
  {
   //_tprintf_s(_T("failed to set  default printer\nError:%d"),GetLastError());
  }
 }
 RegCloseKey(defaultKey);
}

原创粉丝点击