当前位置: 代码迷 >> PB >> PB 判断系统是32位仍是64位
  详细解决方案

PB 判断系统是32位仍是64位

热度:73   发布时间:2016-04-29 06:47:38.0
PB 判断系统是32位还是64位
如题,查了F1,PB内部好象也没有方法。

------解决方案--------------------
用API  GetNativeSystemInfo()
http://msdn.microsoft.com/zh-cn/library/ms724340(v=vs.85).aspx

顺便借花献佛,不过不是很全,下面结构、声明我都给你补上
http://bbs.csdn.net/topics/390226702

结构:
global type osversioninfo from structure
string dwOSVersionInfoSize
string dwMajorVersion
string dwMinorVersion
string dwBuildNumber
string dwPlatformId
string szCSDVersion
end type


global type osversioninfoex from structure
string dwOSVersionInfoSize
string dwMajorVersion
string dwMinorVersion
string dwBuildNumber
string dwPlatformId
string szCSDVersion
string wServicePackMajor
string wServicePackMinor
string wSuiteMask
string wProductType
string wReserved
end type


global type system_info from structure
long wprocessorarchitecture
long wreserved
long dwpagesize
long lpminimumapplicationaddress
long lpmaximumapplicationaddress
long dwactiveprocessormask
long dwnumberofprocessors
long dwprocessortype
long dwallocationgranularity
long wprocessorlevel
long wprocessorrevision
end type


函数:
//====================================================================
// 事件: n_appmanager.of_apifunctionpresent()
//--------------------------------
// 描述:判断API是不否成功
//--------------------------------
// 参数:
//  value string ls_functionname
//  value string ls_dllname     
//--------------------------------
// 返回:  boolean
//--------------------------------
// 作者: TANGYONG  日期: 2012年09月19日
//--------------------------------
// Copyright (c) 2002-2012 TRUEWAY(TM), All rights reserved.
//--------------------------------
// 修改历史:
//
//====================================================================


String ls_pathname,ls_pathname_add
Long ls_ihandle , ls_ihandle1,ls_laddr
Boolean ls_freelib
ls_freelib  = FALSE
ls_pathname = Space(255)
ls_ihandle = GetModuleHandle(ls_dllname) //获取一个应用程序或动态链接库的模块句柄
GetSystemDirectory(ls_pathname,255) //获取DLL路径
ls_pathname_add =  ls_pathname+'\'+ls_dllname
IF  ls_ihandle = 0 THEN
ls_ihandle = LoadLibraryEx(ls_pathname_add, 0, DONT_RESOLVE_DLL_REFERENCES)
ls_freelib = TRUE
END IF
IF  ls_ihandle <>  0 THEN
ls_laddr = GetProcAddress(ls_ihandle, ls_functionName)
IF ls_freelib = TRUE THEN
FreeLibrary( ls_ihandle) //用FreeLibrary函数释放DLL
END IF
END IF

IF  ls_laddr <> 0 THEN
RETURN  TRUE
ELSE
RETURN  FALSE
  相关解决方案