Acrobat Readerのバージョンを知りたいのですが
どのように取得できるのかわかりません。
環境:
Windows2000
VB6.0
AcrobatReader5.0
また存在チェックで
AcrobatReader5.0がインストールされている場合に
Set obj= CreateObject("PDF.PdfCtrl.5")
とやろうとすると
「AcriveXコンポーネントはオブジェクトを作成できません」
といわれてしまうのはどの設定が必要なのでしょうか?
基本的なことだとおもうのですがわかりません。
お力を貸してください。
もし、EXEのバージョンを調べるだけだったら
GetFileVersionInfoを使えば出来ると思います。
よし さん
すばやいお返事ありがとうございました。
>GetFileVersionInfoを使えば出来ると思います。
確かにバージョンを確認できました。
恥ずかしながら存在チェックについては
"5"と指定しないでいたのでエラーになってました(汗)
さらに質問なのですが
CreateObjectだとパスの指定が不要なのですが
APIだとEXEのフルパスの指定が必要になりますよね?
EXEの場所が可変なのでフルパスの指定は避けたいかと・・・・
ほかになにか方法はありませんでしょうか?
ちょっと自分のPCでしか調べていませんが
もし固定のアプリ(今回の場合AcrobatReader)でしたら
レジストリを調べるのも手だと思います。
ちなみに自分の環境では(バージョン4.0)ですが
HKEY_CURRENT_USER
└Software
└Adobe
└Acrobat Reader
└4.0
└InstallPath
の中にexeのフルパスが入っていました。
そのパスを取得しGetFileVersionInfoを使えば
出来るのではないでしょうか。
返事が遅くなりすいません
レジストリエディタでは確認できました。
コードよりGetSetting関数を使用してレジストリの取得を
試みたのですが第3引数になる[Key]が(標準)となっていた場合、
何を渡せばよいのでしょうか?
文字列= GetSetting("Adobe", "InstallPath", ???)
とりあえず自分の環境では下のソースで
パスが取得できました。
いろんなバージョンやいろんなインストール先の
環境が無いのでなんともいえませんが、
レジストリのキーの指定を
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)
返事が遅くなってしまってすいません。
>レジストリのキーの指定を
>5.0とかいろいろ変えてみるとかして
>汎用的になるようにしてはいかがでしょうか
まちがってたらごめんなさい。
バージョンがUPするごとに
EXEを修正しないといけないですよね?
レジストリでは対応が難しそうです。
ありがとうございました。
とても勉強になりました。
ツイート | ![]() |