您的位置:首页 > 其它

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

2011-07-27 15:42 761 查看
//获取默认打印机

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: