#include #include //#include "vncOSVersion.h" typedef BOOL (WINAPI* pEnumDisplayDevices)(PVOID,DWORD,PVOID,DWORD); /*bool CheckDriver2(void) { SC_HANDLE schMaster; SC_HANDLE schSlave; schMaster = OpenSCManager (NULL, NULL, SC_MANAGER_ALL_ACCESS); schSlave = OpenService (schMaster, "vnccom", SERVICE_ALL_ACCESS); if (schSlave == NULL) { CloseServiceHandle(schMaster); return false; } else { CloseServiceHandle (schSlave); CloseServiceHandle(schMaster); return true; } }*/ /////////////////////////////////////////////////////////////////// BOOL GetDllProductVersion(char* dllName, char *vBuffer, int size) { char *versionInfo; void *lpBuffer; unsigned int cBytes; DWORD rBuffer; if( !dllName || !vBuffer ) return(FALSE); // DWORD sName = GetModuleFileName(NULL, fileName, sizeof(fileName)); // FYI only DWORD sVersion = GetFileVersionInfoSize(dllName, &rBuffer); if (sVersion==0) return (FALSE); versionInfo = new char[sVersion]; BOOL resultVersion = GetFileVersionInfo(dllName, NULL, sVersion, versionInfo); BOOL resultValue = VerQueryValue(versionInfo, TEXT("\\StringFileInfo\\040904b0\\ProductVersion"), &lpBuffer, &cBytes); if( !resultValue ) { resultValue = VerQueryValue(versionInfo,TEXT("\\StringFileInfo\\000004b0\\ProductVersion"), &lpBuffer, &cBytes); } if( resultValue ) { strncpy(vBuffer, (char *) lpBuffer, size); delete versionInfo; return(TRUE); } else { *vBuffer = '\0'; delete versionInfo; return(FALSE); } } /////////////////////////////////////////////////////////////////// bool CheckVideoDriver(bool Box) { typedef BOOL (WINAPI* pEnumDisplayDevices)(PVOID,DWORD,PVOID,DWORD); HDC m_hrootdc=NULL; pEnumDisplayDevices pd; static const char* driverName = "mv video hook driver2"; BOOL DriverFound; DEVMODE devmode; FillMemory(&devmode, sizeof(DEVMODE), 0); devmode.dmSize = sizeof(DEVMODE); devmode.dmDriverExtra = 0; BOOL change = EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&devmode); devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; HMODULE hUser32=LoadLibrary("USER32"); pd = (pEnumDisplayDevices)GetProcAddress( hUser32, "EnumDisplayDevicesA"); if (pd) { LPSTR deviceName=NULL; DISPLAY_DEVICE dd; ZeroMemory(&dd, sizeof(dd)); dd.cb = sizeof(dd); devmode.dmDeviceName[0] = '\0'; INT devNum = 0; BOOL result; DriverFound=false; while (result = (*pd)(NULL,devNum, &dd,0)) { if (strcmp((const char *)&dd.DeviceString[0], driverName) == 0) { DriverFound=true; break; } devNum++; } if (DriverFound) { if (hUser32) FreeLibrary(hUser32); if(Box) { char buf[512]; GetDllProductVersion((char*)"mv2.dll",buf,512); if (dd.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) { strcat(buf," driver Active"); HDC testdc=NULL; deviceName = (LPSTR)&dd.DeviceName[0]; testdc = CreateDC("DISPLAY",deviceName,NULL,NULL); if (testdc) { DeleteDC(testdc); strcat(buf," access ok"); } else { strcat(buf," access denied, permission problem"); } } else strcat(buf," driver Not Active"); MessageBox(NULL,buf,"driver info: required version 1.22",0); } return true; //deviceName = (LPSTR)&dd.DeviceName[0]; //m_hrootdc = CreateDC("DISPLAY",deviceName,NULL,NULL); //if (m_hrootdc) DeleteDC(m_hrootdc); } else if(Box) MessageBox(NULL,"Driver not found: Perhaps you need to reboot after install","driver info: required version 1.22",0); } if (hUser32) FreeLibrary(hUser32); return false; }