Acrobat Readerのバージョンは?

解決


たくまま  2004-10-05 14:18:15  No: 85904  IP: [192.*.*.*]

Acrobat Readerのバージョンを知りたいのですが
どのように取得できるのかわかりません。

環境:
Windows2000
VB6.0
AcrobatReader5.0

また存在チェックで
AcrobatReader5.0がインストールされている場合に
Set obj= CreateObject("PDF.PdfCtrl.5")
とやろうとすると
「AcriveXコンポーネントはオブジェクトを作成できません」
といわれてしまうのはどの設定が必要なのでしょうか?

基本的なことだとおもうのですがわかりません。
お力を貸してください。

編集 削除
よし  2004-10-05 14:34:56  No: 85905  IP: [192.*.*.*]

もし、EXEのバージョンを調べるだけだったら
GetFileVersionInfoを使えば出来ると思います。

編集 削除
たくまま  2004-10-05 15:40:52  No: 85906  IP: [192.*.*.*]

よし さん
すばやいお返事ありがとうございました。

>GetFileVersionInfoを使えば出来ると思います。
確かにバージョンを確認できました。

恥ずかしながら存在チェックについては
"5"と指定しないでいたのでエラーになってました(汗)

さらに質問なのですが
CreateObjectだとパスの指定が不要なのですが
APIだとEXEのフルパスの指定が必要になりますよね?

EXEの場所が可変なのでフルパスの指定は避けたいかと・・・・
ほかになにか方法はありませんでしょうか?

編集 削除
よし  2004-10-05 19:22:02  No: 85907  IP: [192.*.*.*]

ちょっと自分のPCでしか調べていませんが
もし固定のアプリ(今回の場合AcrobatReader)でしたら
レジストリを調べるのも手だと思います。
ちなみに自分の環境では(バージョン4.0)ですが
HKEY_CURRENT_USER
 └Software
    └Adobe
       └Acrobat Reader
          └4.0
             └InstallPath
の中にexeのフルパスが入っていました。
そのパスを取得しGetFileVersionInfoを使えば
出来るのではないでしょうか。

編集 削除
たくまま  2004-10-13 12:13:22  No: 85908  IP: [192.*.*.*]

返事が遅くなりすいません

レジストリエディタでは確認できました。

コードよりGetSetting関数を使用してレジストリの取得を
試みたのですが第3引数になる[Key]が(標準)となっていた場合、
何を渡せばよいのでしょうか?

文字列= GetSetting("Adobe", "InstallPath", ???)

編集 削除
よし  2004-10-15 19:39:44  No: 85909  IP: [192.*.*.*]

とりあえず自分の環境では下のソースで
パスが取得できました。
いろんなバージョンやいろんなインストール先の
環境が無いのでなんともいえませんが、
レジストリのキーの指定を
5.0とかいろいろ変えてみるとかして
汎用的になるようにしてはいかがでしょうか

Dim KeyName As String
Dim lngHandle As Long
Dim ValueName As String
Dim strValue As String * 1024
Dim lngLength As Long
Dim lngResult As Long

KeyName = "Software\Adobe\Acrobat Reader\4.0\InstallPath"
ValueName = ""
lngResult = RegOpenKeyEx(HKEY_CURRENT_USER, KeyName, 0, _
            KEY_QUERY_VALUE, lngHandle)
lngLength = Len(strValue)
lngResult = RegQueryValueEx(lngHandle, ValueName, _
            ByVal 0, ByVal 0, ByVal strValue, lngLength)
Label1.Caption = Left(strValue, InStr(strValue, vbNullChar) - 1)
lngResult = RegCloseKey(lngHandle)

編集 削除
たくまま  2004-10-28 17:19:03  No: 85910  IP: [192.*.*.*]

返事が遅くなってしまってすいません。

>レジストリのキーの指定を
>5.0とかいろいろ変えてみるとかして
>汎用的になるようにしてはいかがでしょうか
まちがってたらごめんなさい。
バージョンがUPするごとに
EXEを修正しないといけないですよね?
レジストリでは対応が難しそうです。

ありがとうございました。
とても勉強になりました。

編集 削除