PowerBuilderでOSが64ビットか32ビットかを判断するにはどうすればよいですか?
GetEnvironmentを使用して取得することは可能ですか?
環境変数のチェックは簡単ですが、ユーザーが値を再定義できるため、防弾ではありません。
より堅牢なアプローチは、現在のPowerbuilderプロセスがWOW64モード(32ビットエミュレーションモード)で実行されているかどうかを確認することです。
[Local external definitions]
FUNCTION long IsWow64Process(long hwnd, ref boolean Wow64Process) &
LIBRARY "Kernel32.DLL"
FUNCTION long GetCurrentProcess () LIBRARY "KERNEL32.DLL"
[Powerscript]
boolean wow64 =false
IsWow64Process(GetCurrentProcess(), wow64)
MessageBox("Running in 64b env", wow64)
GetEnvironment
プロパティを介してCPUに関する情報を提供できますCPUType
が、プラットフォームタイプ(alpha、mips、pentiumなど)のみが返されます。
/ProgramFiles(x86)
を使用し、クエリされたコンテキストキーワードとして環境変数を設定するなど、64bプラットフォームでのみ定義されている環境からいくつかの注目すべき値をテストできます。GetContextService
GetContextKeywords
string ls_vals[], ls_val, ls_env = "ProgramFiles(x86)" /*name of the env variable to query*/
ContextKeyword lcxk_base
GetContextService("Keyword", lcxk_base)
lcxk_base.GetContextKeywords(ls_env, ls_vals[])
if upperbound(ls_vals[]) > 0 then
ls_val = ls_vals[1]
else
ls_val = "*undefined*" //it is 32b
end if
messagebox ("architecture", ls_val)
PROCESSOR_ARCHITECTURE
最初は、Windows 64bのシェルにある環境変数をテストすることをお勧めしAMD64
ますが、PB実行可能ファイルはx86
...
RolandSmithのサイトから無料のコードを使用できます。
http://www.topwizprogramming.com/freecode_osversion.html
「このプログラムは、オペレーティングシステムのバージョンに関する情報を返します。オペレーティングシステムの名前、エディション、およびサービスパックを返します。また、.dllおよび.exeファイルからバージョン文字列を返す機能もあります。」