0

PowerBuilderでOSが64ビットか32ビットかを判断するにはどうすればよいですか?

GetEnvironmentを使用して取得することは可能ですか?

4

3 に答える 3

8

環境変数のチェックは簡単ですが、ユーザーが値を再定義できるため、防弾ではありません。

より堅牢なアプローチは、現在の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)
于 2012-10-09T02:55:20.153 に答える
2

GetEnvironmentプロパティを介してCPUに関する情報を提供できますCPUTypeが、プラットフォームタイプ(alpha、mips、pentiumなど)のみが返されます。

/ProgramFiles(x86)を使用し、クエリされたコンテキストキーワードとして環境変数を設定するなど、64bプラットフォームでのみ定義されている環境からいくつかの注目すべき値をテストできます。GetContextServiceGetContextKeywords

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...

于 2012-10-08T09:22:25.153 に答える
0

RolandSmithのサイトから無料のコードを使用できます。

http://www.topwizprogramming.com/freecode_osversion.html

「このプログラムは、オペレーティングシステムのバージョンに関する情報を返します。オペレーティングシステムの名前、エディション、およびサービスパックを返します。また、.dllおよび.exeファイルからバージョン文字列を返す機能もあります。」

于 2013-02-06T11:02:02.603 に答える