BOOL GetVideoCaptureRegistryValues(VIDEOCAPTUREREGISTRYVALUES* pValues){ BOOL Result=FALSE; HKEY hKey=NULL; DWORD dwType=0; DWORD dwSize=0; char str[256]; do { if(!pValues) break; if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,REGISTRY_PATH,0,KEY_QUERY_VALUE,&hKey)) break; if(!hKey) break; dwSize=sizeof(str); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"CaptureFilterName",NULL,&dwType,(LPBYTE)str,&dwSize)) break; wsprintfW(pValues->CaptureFilterName,L"%hs",str); dwSize=sizeof(pValues->AddAudioFilter); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"AddAudioFilter",NULL,&dwType,(LPBYTE)&(pValues->AddAudioFilter),&dwSize)) break; dwSize=sizeof(pValues->BrightnessDefault); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"BrightnessDefault",NULL,&dwType,(LPBYTE)&(pValues->BrightnessDefault),&dwSize)) break; dwSize=sizeof(pValues->BrightnessMaximum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"BrightnessMaximum",NULL,&dwType,(LPBYTE)&(pValues->BrightnessMaximum),&dwSize)) break; dwSize=sizeof(pValues->BrightnessMinimum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"BrightnessMinimum",NULL,&dwType,(LPBYTE)&(pValues->BrightnessMinimum),&dwSize)) break; dwSize=sizeof(pValues->ContrastDefault); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"ContrastDefault",NULL,&dwType,(LPBYTE)&(pValues->ContrastDefault),&dwSize)) break; dwSize=sizeof(pValues->ContrastMaximum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"ContrastMaximum",NULL,&dwType,(LPBYTE)&(pValues->ContrastMaximum),&dwSize)) break; dwSize=sizeof(pValues->ContrastMinimum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"ContrastMinimum",NULL,&dwType,(LPBYTE)&(pValues->ContrastMinimum),&dwSize)) break; dwSize=sizeof(pValues->HueDefault); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"HueDefault",NULL,&dwType,(LPBYTE)&(pValues->HueDefault),&dwSize)) break; dwSize=sizeof(pValues->HueMaximum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"HueMaximum",NULL,&dwType,(LPBYTE)&(pValues->HueMaximum),&dwSize)) break; dwSize=sizeof(pValues->HueMinimum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"HueMinimum",NULL,&dwType,(LPBYTE)&(pValues->HueMinimum),&dwSize)) break; dwSize=sizeof(pValues->SaturationDefault); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"SaturationDefault",NULL,&dwType,(LPBYTE)&(pValues->SaturationDefault),&dwSize)) break; dwSize=sizeof(pValues->SaturationMaximum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"SaturationMaximum",NULL,&dwType,(LPBYTE)&(pValues->SaturationMaximum),&dwSize)) break; dwSize=sizeof(pValues->SaturationMinimum); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"SaturationMinimum",NULL,&dwType,(LPBYTE)&(pValues->SaturationMinimum),&dwSize)) break; dwSize=sizeof(pValues->ColorSpace); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"ColorSpace",NULL,&dwType,(LPBYTE)&(pValues->ColorSpace),&dwSize)) break; dwSize=sizeof(pValues->BitsPerPixel); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"BitsPerPixel",NULL,&dwType,(LPBYTE)&(pValues->BitsPerPixel),&dwSize)) break; dwSize=sizeof(pValues->OutputWidth); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"OutputWidth",NULL,&dwType,(LPBYTE)&(pValues->OutputWidth),&dwSize)) break; dwSize=sizeof(pValues->OutputHeight); if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"OutputHeight",NULL,&dwType,(LPBYTE)&(pValues->OutputHeight),&dwSize)) break; Result=TRUE; }while(0); if(hKey) { RegCloseKey(hKey); hKey=NULL; } return(Result);}
.... if you've got a cleaner way, I wanna hear it...