PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
3423 98/09/28 13:10:49 GetFileVersionInfo(Windows API)の使い方のお礼。 By 小島克之
3415 98/09/28 09:26:28 RE:↑全然ちがいました、すみません By てとらぽっと
3404 98/09/25 16:51:42 RE: GetFileVersionInfo の使い方 By にしやん
3392 98/09/25 12:14:10 RE:推測モードの回答ですが... By てとらぽっと
3389 98/09/25 11:20:42 PB5.0.03: GetFileVersionInfo(Windows API)の使い方に付いてお尋ねします。 By wazawa

カテゴリ:旧電子会議室
日付:1998年09月25日 16:51 発信者:にしやん
題名:RE: GetFileVersionInfo の使い方

小島さん、こんにちは。
GetFileVersionInfo でバージョン情報を取得する方法です。

例:C:\\Windows\\TEST01.EXE のバージョンを取得する

構造体
VS_FIXEDFILEINFO
 uLong dwSignature
 uLong dwStrucVersion
 uLong dwFileVersionMS
 uLong dwFileVersionLS
 uLong dwProductVersionMS
 uLong dwProductVersionLS
 uLong dwFileFlagsMask
 uLong dwFileFlags
 uLong dwFileOS
 uLong dwFileType
 uLong dwFileSubtype
 uLong dwFileDateMS
 uLong dwFileDateLS

外部関数
FUNCTION uLong GetFileVersionInfoSize(String lptstrFilename,REF uLong lpdwHandle) &
    LIBRARY \"VERSION.DLL\" ALIAS FOR \"GetFileVersionInfoSizeA\"
FUNCTION uLong GetFileVersionInfo(String lptstrFilename,Long dwHandle,Long dwLen,REF Blob lpData) &
    LIBRARY \"VERSION.DLL\" ALIAS FOR \"GetFileVersionInfoA\"
FUNCTION uLong VerQueryValue(REF Blob pBlock,String lpSubBlock,REF uLong lpBuffer,uLong puLen) &
    LIBRARY \"VERSION.DLL\" ALIAS FOR \"VerQueryValueA\"
SUBROUTINE MemMove(REF Structure dst,uLong src,Long len) &
    LIBRARY \"KERNEL32.DLL\" ALIAS FOR \"RtlMoveMemory\"

スクリプト
String path
uLong dummy
uLong size
Blob lpData
uLong lpBuffer
uInt vSize
VS_FIXEDFILEINFO info
uLong VersionMS, VersionLS
String Version

path = \"C:\\Windows\\TEST01.EXE\"
size=GetFileVersionInfoSize(path, dummy)
IF size > 0 THEN
  lpData = Blob(Space(size))
  GetFileVersionInfo(path, 0, size, lpData)
  VerQueryValue(lpData, \"\\\", lpBuffer, vSize)
  MemMove(info,lpBuffer,52)
  VersionMS = info.dwProductVersionMS
  VersionLS = info.dwProductVersionLS
  Version = String(Integer(VersionMS / 65536))+\".\"+String(Mod(VersionMS,65536),\"00\")+\".\"+&
    String(VersionLS,\"00\")
  MessageBox(\"\",Version)
ELSE
  //バージョン情報を取得できない
END IF

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Oracle SQL*Net 2.3
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.