如何在運行時使用Qt發現用戶的系統是Win 7-32還是Win7-64?在Qt中獲取運行時體系結構信息
2
A
回答
2
沒有辦法獨家使用Qt,AFAIK。以下是你如何做到這一點。
#include <windows.h>
#include <tchar.h>
#include <QtCore/QSysInfo>
typedef enum { Win_64, Win_32, Error, Other } OsType;
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
OsType checkOS() {
#ifndef Q_OS_WIN32
return Other;
#else
// An application compiled for 64 bits can only run on a 64 bit os,
// so no need to check any further.
if (QSysInfo::WordSize == 64) return Win7_64;
// A 32 bit application may be running on a 64 bit OS.
BOOL is64 = FALSE;
// IsWow64Process may not be available in kernel32 on all Windows versions, so we bind to it
// at runtime.
LPFN_ISWOW64PROCESS fnIsWow64Process;
fnIsWow64Process = (LPFN_ISWOW64PROCESS)
GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
// No way it's a 64 bit OS if it doesn't have this API.
if (fnIsWow64Process == NULL) return Win_32;
// Note that GetCurrentProcess() can't fail.
if (!IsWow64Process(GetCurrentProcess(), &is64)) return Error; // The check has failed.
return is64 ? Win_64 : Win_32;
#endif
}
+0
謝謝你的回覆兄弟...我也想知道爲贏得XP太.. 可能yopu請給XP多一個解決方案。 – Kenta
+0
完成。你想專門檢查Win 7,所以我添加了一個檢查。簡單地刪除該行「修復」它可以在任何64位版本上工作。提示未來:如果你想得到更一般的答案,可以問一個更一般的問題。不要包含不必要的細節。在你的情況下,把「Windows 7」放在這個問題上會起反作用。 –
相關問題
- 1. 的Qt - 獲取系統信息
- 2. 文檔庫的信息體系結構
- 3. Web服務體系結構/信息流
- 4. 在運行時獲取有關實體的休眠信息
- 5. Java - 獲取運行時信息
- 6. 獲取具體的聯繫信息
- 7. 消息體系結構
- 8. 使用結構從類獲取信息
- 9. 想知道WCF消息體系結構詳細信息
- 10. Qt的QProcess中獲取內存信息
- 11. 如何在Apache中運行cgi時獲取請求信息?
- 12. 獲取當前的GCC體系結構
- 13. 如何在android運行時得到芯片的體系結構
- 14. 插件在運行時加載的體系結構
- 15. 在運行時從android應用程序的scada系統獲取信息
- 16. 什麼是信息體系結構和信息設計?我如何練習?
- 17. 獲取.Net字體信息?
- 18. 如何獲取有關C#中當前運行時的信息?
- 19. Scrapy - 在蜘蛛運行時獲取或刷新統計信息
- 20. 如何在運行時獲取CFBundleTypeIconFiles信息?
- 21. Java:ScheduleFuture getClass並在下次運行時獲取信息?
- 22. 在運行時獲取類的詳細信息?
- 23. 在iOS應用程序運行時獲取父進程信息
- 24. Qt獲取系統32位或64位信息?
- 25. 獲取點擊按鈕(Qt)的信息
- 26. 長時間運行的webservice體系結構
- 27. 插件/運行時擴展體系結構
- 28. Erlang運行時錯誤的體系結構?
- 29. 體系結構x86_64運行Haskell代碼時,Haskell OSX iconv
- 30. Rails路由頂級路由和信息體系結構
在編譯時或運行時? –
其在運行... – Kenta