From: KUBO Takehiro Date: 2010-06-25T00:19:46+09:00 Subject: [ruby-dev:41718] Re: WIN32OLE_METHOD offset_vtbl 2010/6/24 arton : > artonです。 > >> そういうことは気にしなくてよくて、 >> Windows が 64 bit - Ruby も 64bit >> Windows が 32 bit - Ruby も 32bit >> というのを前提にしていいんでしょうか? > それは、とても困ります。おそらく、Win64を利用している人のほとんどは、 > SQL*ServerとIIS(とその上で動く.NET Framework)だけ64ビットで動かしたい > のでは。 > 以下の方法で見分けられます。 > 1.8でも動くように、文字の切り出しではなく文字列の切り出しを利用していま > す。(1.9.1p378 と 1.8.7p249で確認) > > require 'Win32API' > > get_current_process = Win32API.new('kernel32', 'GetCurrentProcess', nil, 'i') > handle = get_current_process.call > is_wow64 = false > begin > isWow64 = Win32API.new('Kernel32', 'IsWow64Process', ['i', 'p'], 'i') > bool = ' ' > if isWow64.call(handle, bool) > is_wow64 = bool[0,1] == "\x01" > end > end > p is_wow64 Windows 2000 とか、Windows XP SP1 には IsWow64Process はないので、 Win32API.new('Kernel32', 'IsWow64Process', ['i', 'p'], 'i') が失敗したときの対処 も入れないと。(具体的にどうやるのかは知らないけど)