有馬@FITECです。

WATANABE Hirofumi <Hirofumi.Watanabe / jp.sony.com> wrote

| in.coming に rb{cw,dj}143.zip を put しました.

rbcw143.zip を頂きました。以下のスクリプトで Win32API が利用できませんでした。
GetVersionEx.Call で、[BUG] が表示されます。何を調べたらよいでしょうか?
cygwin1.dll は、1999/7/2 のものを使用しています。

require "Win32API"

module Win32
  VER_PLATFORM_WIN32s        = 0
  VER_PLATFORM_WIN32_WINDOWS = 1
  VER_PLATFORM_WIN32_NT      = 2
  GetVersionEx = Win32API.new("kernel32", "GetVersionExA", ['P'], 'L')

  HWND_BROADCAST   = 0xffff
  WM_SETTINGCHANGE = 0x001a
  SMTO_ABORTIFHUNG = 0x0002
  SendMessageTimeout = Win32API.new("user32", "SendMessageTimeout",
    ['L', 'L', 'L', 'P', 'L', 'L', 'P'], 'L') 
end

def getWindowsVersion
  include Win32
  lpVersionInfo = [148, 0, 0, 0, 0].pack("LLLLL") + "\0" * 128
  GetVersionEx.Call lpVersionInfo
  dwOSVersionInfoSize, dwMajorVersion, dwMinorVersion, dwBuildNumber, 
    dwPlatformId, szCSDVersion = lpVersionInfo.unpack("LLLLLC128")

  case dwPlatformId
  when VER_PLATFORM_WIN32s         # Win32s on Win3.1
    return 'WIN32s'
  when VER_PLATFORM_WIN32_WINDOWS  # 95, 98 ?
    return 'WIN32_WINDOWS'
  when VER_PLATFORM_WIN32_NT       # NT3.x, 4.0, 2000 ?
    return 'WIN32_NT'
  end;
end

puts getWindowsVersion

--
 有馬 康弘 <fit0298 / fitec.co.jp>