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;
}
{
#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;
}