喫茶XRAYトップページ

[▲前のスレッド]

[6994] OSが32bitか64bitかの判定について返信 削除
2013/7/19 (金) 09:17:19 おかぽん
822_コピーフック
http://mrxray.on.coocan.jp/Delphi/plSamples/822_ShellCopyHook.htm#04

リスト5のサンプルソースにおいて、32bit版コンパイル、32bitOSかつIsWow64Process関数が
存在する場合、Button4クリックで「64 ビット版です」と表示されます。

「32bit版にIsWow64Process関数がない」との記載があります(自分もそう思っていました)が、
もしかすると64bit版が出たXPにおいてのみの話であって、Vista以降は標準関数なのかもしれません。
Windows7 SP1 32bit版 と 同64bit版 しかないので、詳しくわかりませんが。

そのためIsWow64Process関数の有無と結果フラグ(第二引数)で64bit版OSの判定を行うことは
できないようです(IsWow64Process関数は64bitOS上でWOW64動作しているかを返すため
32bitOS&64bitOS+64bitアプリでは、結果フラグがFalseになる)。

以下のように、条件シンボルでも使わないといけないようです。
{$IFDEF WIN32}
MessageBox(Handle, '32 ビット版です', '情報', MB_OK or MB_ICONASTERISK);
{$ELSE}
MessageBox(Handle, '64 ビット版です', '情報', MB_OK or MB_ICONASTERISK);
{$ENDIF}



[6995] Re:OSが32bitか64bitかの判定について返信 削除
2013/7/19 (金) 16:41:32 Mr.XRAY
おかぽんさん,どうも
こういう内容の発言があると,ちょっと.
というわけで,一時帰店しました.(^^;

set to TRUE if the process is running under WOW64.
the process is running under 32-bit Windows, the value is set to FALSE.

と MSDN に書いてあります.
これは結局,32 ビットでも,WOW64 で動作しているかの判定だけんなんですね.
ハハハッ.そういうことですか.
後で記事修正しておきます.この関数を使用している記事もですね.
しかし,参りましたでごさいます.

情報サンクスです.



[6996] Re2:OSが32bitか64bitかの判定について返信 削除
2013/7/22 (月) 08:21:44 おかぽん
▼ Mr.XRAYさん
> こういう内容の発言があると,ちょっと.
> というわけで,一時帰店しました.(^^;

おっと、スイマセン。
ご不在のつもりでいたので、一時帰店に気がつきませんでした(^^;)
わざわざ帰ってきていただく(?)のは申し訳ないので、次からは
Delphi Forumででも報告します。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82