Detect 64 bit os window.
-
I want to find on which type OS is running .My main concern is to check is weather it's 64 bit OS or 32 bit.
-
Hi,
For what do you need that kind of check ?
-
#ifdef Q_OS_WIN32
qDebug()<<"This is window os 32 -now run my abc32.exe ";
#endifThis work for me to detect windows 32 bit OS
But i want code that satisfy my condition that i am on windows OS of 64 bit.
in this condition i want to run my abc64.exe . -
Then you should write a little launcher app that use Q_OS_WIN32 and Q_OS_WIN64 to start the correct executable. Or just have an installer that will only install the correct version of your application depending on the OS
-
Its not going in the case Q_OS_WIN64 is i am using OS win64 bit .That's the main problem.
@
#ifdef Q_OS_WIN64
qDebug()<<"Q_OS_WIN64---------------";
codecTool="ffmpeg/win64/ffmpeg";
#endif
#ifdef Q_OS_WIN32
qDebug()<<"Q_OS_WIN32--------------";
codecTool="ffmpeg/win32/ffmpeg";
#endif@ -
Do you want to detect at compile time or at runtime ???
If you want to detect at runtime, all the suggestions which use pre-processor macros won't work at all! I think you can use QSysInfo::windowsVersion() to detect which version of Windows you are running on. Then: If you program was compiled as a 64-Bit binary, you must be running on the 64-Bit edition. Otherwise, if you compiled as 32-Bit binary, simply call IsWow64Process(), which will return true on 64-Bit OS and false on 32-Bit OS.
--
Warning: IsWow64Process() does NOT exist on WindowsXP or even older. You should check for the availability of the function using QLibrary or LoadLibrary, rather than calling it directly. If the function does NOT exist in "Kernel32.dll", you are definitely running on an (old) 32-Bit OS.
@typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
static BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;
LPFN_ISWOW64PROCESS fnIsWow64Process = NULL;fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress( GetModuleHandle(TEXT("kernel32")),"IsWow64Process"); if(NULL != fnIsWow64Process) { if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) { //handle error } } return bIsWow64;
}
bool running_on_64_bits_os(void)
{
#if defined(_M_X64) || defined(x86_64)
return true;
#else
return (IsWow64() == TRUE);
#endif
}@See also:
"IsWow64Process function":http://tinyurl.com/iswow64 -
Indeed !
I was thinking of a OS specific launcher but that would have been the snake biting it's tail... Need some rest... :D
-
MuldeR thank you .I got the solution form your help.
SGaist thank you to .Thumbs up