Accessのバージョンを得るには



◇-Accessのバージョンを得るには-西崎 隆雄(6/12-16:48)No.10705
 ┗Re:Accessのバージョンを得るには 解決しました!!-西崎 隆雄(6/12-17:35)No.10710

10705Accessのバージョンを得るには西崎 隆雄 6/12-16:48

OS名:Windows95
パソコン名:DynaBookSS3330
ソフト名:VB6.0、Access2000
VB6.0でWindowsのAPIを使ってAccessのバージョンを取得しようとしているのです
が、VB6.0とAccess2000だとうまく取得できません。具体的に
は、"GetFileVersionInfoSize"(バージョン情報のサイズを取得するAPI)で"0"が
返される。
別のパソコン(EQUIUM、Windows95)でVB6.0とAccess97の環境だと取得できます。
どなたか御存知の方、お教えください。

以下にコーディング例を記述します。

' 対象ファイルのバージョン情報のサイズを取得
lngSizeOfVersionInfo = GetFileVersionInfoSize(argFileName,
lngDummyHandle)
' 対象ファイルのバージョン情報のサイズが取得できた場合は
If lngSizeOfVersionInfo > 0 Then
' ダミー変数の領域を確保
ReDim bytDummyVersionInfo(lngSizeOfVersionInfo - 1)
' 対象ファイルのバージョン情報を取得
lngWin32apiResultCode = GetFileVersionInfo(argFileName, _
0, _
lngSizeOfVersionInfo, _
bytDummyVersionInfo(0))
' 対象バージョン情報リソースのルートブロックを取得
lngWin32apiResultCode = VerQueryValue(bytDummyVersionInfo(0), _
"\", _
lngPointerVersionInfo, _
lngLengthVersionInfo)
' 取得したルートブロックをバージョン情報の構造体へ移動
Call MoveMemory(udtVSFixedFileInfo, lngPointerVersionInfo, Len
(udtVSFixedFileInfo))
' バージョン番号の取得
With udtVSFixedFileInfo
GetFileVersion = Format$((.dwFileVersionMS \ (2 ^ 16)) And
&HFFFF&) & "." & _
Format$(.dwFileVersionMS And &HFFFF&, "00")
& "." & _
Format$(.dwFileVersionLS)
End With
End If

10710Re:Accessのバージョンを得るには 解決しました!!西崎 隆雄 6/12-17:35
記事番号10705へのコメント
西崎 隆雄さんは No.10705「Accessのバージョンを得るには」で書きました。
>OS名:Windows95
>パソコン名:DynaBookSS3330
>ソフト名:VB6.0、Access2000
>VB6.0でWindowsのAPIを使ってAccessのバージョンを取得しようとしているのです
>が、VB6.0とAccess2000だとうまく取得できません。具体的に
>は、"GetFileVersionInfoSize"(バージョン情報のサイズを取得するAPI)で"0"が
>返される。
>別のパソコン(EQUIUM、Windows95)でVB6.0とAccess97の環境だと取得できます。
>どなたか御存知の方、お教えください。
>
>以下にコーディング例を記述します。
>
>' 対象ファイルのバージョン情報のサイズを取得
>lngSizeOfVersionInfo = GetFileVersionInfoSize(argFileName,
>lngDummyHandle)
>' 対象ファイルのバージョン情報のサイズが取得できた場合は
>If lngSizeOfVersionInfo > 0 Then
> ' ダミー変数の領域を確保
> ReDim bytDummyVersionInfo(lngSizeOfVersionInfo - 1)
> ' 対象ファイルのバージョン情報を取得
> lngWin32apiResultCode = GetFileVersionInfo(argFileName, _
> 0, _
> lngSizeOfVersionInfo, _
> bytDummyVersionInfo(0))
> ' 対象バージョン情報リソースのルートブロックを取得
> lngWin32apiResultCode = VerQueryValue(bytDummyVersionInfo(0), _
> "\", _
> lngPointerVersionInfo, _
> lngLengthVersionInfo)
> ' 取得したルートブロックをバージョン情報の構造体へ移動
> Call MoveMemory(udtVSFixedFileInfo, lngPointerVersionInfo, Len
>(udtVSFixedFileInfo))
> ' バージョン番号の取得
> With udtVSFixedFileInfo
> GetFileVersion = Format$((.dwFileVersionMS \ (2 ^ 16)) And
>&HFFFF&) & "." & _
> Format$(.dwFileVersionMS And &HFFFF&, "00")
>& "." & _
> Format$(.dwFileVersionLS)
> End With
>End If
>

ごめんなさい。解決しました。
"GetFileVersionInfoSize"にレジストリから取得したAccessのコマンドラインを渡していたのですが、
Access2000の場合レジストリの""c:\Program Files\Microsoft office\office\MSACCESS.EXE".....""と設
定されていたため(""が多い)エラーになっていたようです。Access97の場合は、"c:\Program
Files\Microsoft office\office\MSACCESS.EXE....."と設定されていたためエラーにならなかったようで
す。
どうも、お騒がせしました。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言