win32 访问注册表

BOOL InitTestDlgCtrl(HWND hdlg)
{

#ifdef WIN64X
LRESULT dwPrinterNameIdx;
#else
DWORD dwPrinterNameIdx;
#endif

#ifdef WIN64X
LRESULT dwGroupNameIdx;
#else
DWORD dwGroupNameIdx;
#endif

HKEY hKey;
HKEY subHKey;
HKEY groupKey;
LONG lnStatus;
TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name
DWORD cbName; // size of name string
TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name
DWORD cchClassName = MAX_PATH; // size of class string
DWORD cSubKeys=0; // number of subkeys
DWORD cbMaxSubKey; // longest subkey size
DWORD cchMaxClass; // longest class string
DWORD cValues; // number of values for key
DWORD cchMaxValue; // longest value name
DWORD cbMaxValueData; // longest value data
DWORD cbSecurityDescriptor; // size of security descriptor
FILETIME ftLastWriteTime; // last write time

DWORD i, retCode;
DWORD dwSize; // サイズ

CHAR finalPrinterPath[MAX_PATH] = REG_PRINTERPATH; // REG_PRINTERPATH
CHAR logicalName[MAX_PATH];
DWORD groupSW;
CHAR groupName[8] = "Group";
CHAR number[3];

/*-----------------------------------------------------------------------*/
/* キーオープン
/*-----------------------------------------------------------------------*/
lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_PRINTERPATH, 0, KEY_ALL_ACCESS, &hKey );
// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

dwSize = MAX_PATH;

// Get the class name and the value count.
retCode = RegQueryInfoKey(
hKey, // key handle
achClass, // buffer for class name
&cchClassName, // size of class string
NULL, // reserved
&cSubKeys, // number of subkeys
&cbMaxSubKey, // longest subkey size
&cchMaxClass, // longest class string
&cValues, // number of values for this key
&cchMaxValue, // longest value name
&cbMaxValueData, // longest value data
&cbSecurityDescriptor, // security descriptor
&ftLastWriteTime); // last write time

if (cSubKeys) {

for ( i=0; i < cSubKeys; i++ )
{
cbName = MAX_KEY_LENGTH;
retCode = RegEnumKeyEx(hKey, i,
achKey,
&cbName,
NULL,
NULL,
NULL,
&ftLastWriteTime);
if (retCode == ERROR_SUCCESS)
{
strcat_s(finalPrinterPath, MAX_PATH , achKey);
PathAddBackslash(finalPrinterPath);

lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, finalPrinterPath, 0, KEY_QUERY_VALUE, &subHKey );

if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

lnStatus = RegQueryValueEx( subHKey, REG_LOGICALNAME, NULL, NULL, (LPBYTE)&logicalName, &dwSize );


if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_ADDSTRING, 0, (LPARAM)logicalName);
RegCloseKey( subHKey );
memset(finalPrinterPath, 0x00, MAX_PATH);
wsprintf(finalPrinterPath,REG_PRINTERPATH);
}
}

}

RegCloseKey(hKey);

lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_PRINTERGROUPPATH, 0, KEY_QUERY_VALUE, &groupKey );

// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

lnStatus = RegQueryValueEx( groupKey, REG_GROUPSW, NULL, NULL, (LPBYTE)&groupSW, &dwSize );

// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

for( i = 0;i < 32;i++ )
{
DWORD temp = 1;
temp = temp << i;
temp = groupSW & temp;
if(temp != 0){
itoa(i, number, 10);
strcat(groupName, number);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_ADDSTRING, 0, (LPARAM)groupName);
memset(number, 0x00, 3);
memset(groupName, 0x00, 8);
wsprintf(groupName,"Group");
}
}

RegCloseKey(groupKey);

if(guiFirstSet == FN2_FAST_ACCSESS){

SendDlgItemMessage( hdlg, IDC_LOGICALNAME, CB_SETCURSEL, 0, 0);
SendDlgItemMessage( hdlg, IDC_COMBO2, CB_SETCURSEL, 0, 0);

dwPrinterNameIdx = SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETLBTEXT, dwPrinterNameIdx, gPrinterName);

dwGroupNameIdx = SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETLBTEXT, dwGroupNameIdx, gPrinterGroup);

gFormPrintFlag = FALSE;
gJobFlag = FALSE;

guiFirstSet = FN2_NOTFAST_ACCSESS;

}else{

SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_SELECTSTRING , -1, gPrinterName);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_SELECTSTRING , -1, gPrinterGroup);

if(gFormPrintFlag) {
SendDlgItemMessage( hdlg, IDC_CHECK1, BM_SETCHECK, BST_CHECKED, 0 );
}else {
SendDlgItemMessage( hdlg, IDC_CHECK1, BM_SETCHECK, BST_UNCHECKED, 0 );
}

if(gJobFlag) {
SendDlgItemMessage( hdlg, IDC_CHECK2, BM_SETCHECK, BST_CHECKED, 0 );
}else {
SendDlgItemMessage( hdlg, IDC_CHECK2, BM_SETCHECK, BST_UNCHECKED, 0 );
}

}


return TRUE;
}

BOOL TestPrint(HWND hdlg)
{
#ifdef WIN64X
LRESULT dwPrinterNameIdx;
#else
DWORD dwPrinterNameIdx;
#endif

#ifdef WIN64X
LRESULT dwGroupNameIdx;
#else
DWORD dwGroupNameIdx;
#endif


HKEY hKey; // レジストリキーハンドル
LONG lnStatus; // ステータス
CHAR productName[21];
DWORD dwSize; // サイズ

/*-----------------------------------------------------------------------*/
/* キーオープン
/*-----------------------------------------------------------------------*/
lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_PRODUCTNAMEPATH, 0, KEY_QUERY_VALUE, &hKey );
// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

dwSize = sizeof( productName );

lnStatus = RegQueryValueEx( hKey, REG_PRODUCTNAME, NULL, NULL, (LPBYTE)&productName, &dwSize );

// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

dwPrinterNameIdx = SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETLBTEXT, dwPrinterNameIdx, gPrinterName);

dwGroupNameIdx = SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETLBTEXT, dwGroupNameIdx, gPrinterGroup);

if(SendDlgItemMessage( hdlg, IDC_CHECK1, BM_GETCHECK, 0, 0 )){
gFormPrintFlag = TRUE;
}else{
gFormPrintFlag = FALSE;
}

if(SendDlgItemMessage( hdlg, IDC_CHECK2, BM_GETCHECK, 0, 0 )){
gJobFlag = TRUE;
}else{
gJobFlag = FALSE;
}

return TRUE;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值