[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/02/24(Thu) 19:32
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
Windowsのバージョン情報を取得(簡便方法) サンプルについて
こんにちは。分からないことがあるので投稿してみました。
Win2000 で VB6.0 SP6 を使っています。

こちらのサンプル「Windowsのバージョン情報を取得(簡便方法) 」だけの
Exeファイルを作り、ディストリビューションウィザードでパッケージを作り、
Win98のパソコンにインストールしてみました。
実行したところ、「With CreateObject("SysInfo.SYSINFO")」の行で
"エラー 429:ActiveXコンポーネントを作成できません"とエラーが出てしまいました。
インストール先のパソコンにはVBは入っていなく、「パッケージの他にランタイムが必要?」
と思い、インターネット上のいろんな「VB6ランタイム」を追加で入れてたのですが結果は変わりませんでし
た。
他には、「WindowsScriptingRuntime」の最新版を入れてみたり、「IE6の修復」なんかもやってみたのです
が、駄目でした。

ただ、VB6SP6が入っているWin98のパソコンではエラーは出ないのです。

この「CreateObject」に関する解決策をご存知の方、どなたかいらっしゃいませんでしょうか。
「このファイルを入れれば」とか「こうすれば」とか、情報をお持ちの方、よろしくお願いします。

投稿時間:2005/02/24(Thu) 19:57
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Windowsのバージョン情報を取得(簡便方法) サンプルについて
Microsoft SysInfo Control 6.0 (SysInfo.ocx) コントロールをFormに貼り付けて、
それを一緒に配布して頂ければ解決すると思います。

通常のランタイムの中に含まれていないので。

Private Sub Command1_Click()
    With SysInfo1
        Debug.Print .OSPlatform
        Debug.Print .OSBuild
        Debug.Print .OSVersion
    End With
End Sub

投稿時間:2005/02/24(Thu) 21:15
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: Windowsのバージョン情報を取得(簡便方法) サンプルについて
> 実行したところ、「With CreateObject("SysInfo.SYSINFO")」の行で

その手法はあまりお勧めできません。フォームがあるアプリなら、
システム情報コントロール(SysInfo)を貼り付けて使った方が良いですよ。


> インターネット上のいろんな「VB6ランタイム」を追加で入れてたのですが

SYSINFO.OCX があるだけでは駄目なんですよ。(REGSVR32で登録してあったとしても)

CreateObjectして使う方法というのは、実行時ライセンス(ランタイムライセンス)ではなく、
開発時ライセンス(デザインタイムライセンス)が要求されるようになっています。

まぁ、VBの開発環境(もしくはそれに類する物)がインストール済みの環境であれば、
CreateObjectでも作成できますけれど、普通はそういうわけにも行かないでしょうから、
素直に、コントロールを貼られる事をおすすめします。


もし、どうしても動的に生成したいなら、下記のようにして下さい。


Option Explicit
Const LicenseKey As String = "ライセンスキーなので、この部分は掲示板には書けません(^^;)"

Private Sub Form_Load()
    Licenses.Add "SysInfo.SYSINFO", LicenseKey
    With Controls.Add("SysInfo.SYSINFO", "X").object
        Label1.Caption = "OSPlatform: " & CStr(.OSPlatform) & vbCrLf _
                       & "OSBuild   : " & CStr(.OSBuild) & vbCrLf _
                       & "OSVersion : " & CStr(.OSVersion)
    End With
    Controls.Remove "X"
    Licenses.Remove "SysInfo.SYSINFO"
End Sub

# まっさらの環境の Win2000 Pro環境(on Virtual PC 2004)で動作確認。


上記の方法を使えば、開発環境が無い状態でも、SysInfoを動的に生成して利用できます。
なお、必要なライセンスキーについては、開発環境から
   Debug.Print Licenses.Add("SysInfo.SYSINFO")
にて調査してください。

投稿時間:2005/02/27(Sun) 16:13
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
Re^2: Windowsのバージョン情報を取得(簡便方法) サンプルについて
レスが遅くなりました。すみませんでした。。

花ちゃんさん、魔界の仮面弁士さん>
お返事ありがとうございました。
安直にやろうと思っていたのですが、実は奥が深かった?のですね。。

お二人からは、Sysinfoコントロールをフォームに貼り付けた方法を勧めてもらったので、
その方法でやってみようかなぁと思います。
実は、SysInfoコントロールがあることを知りませんでした。。。

ただ、魔界の仮面弁士さんが教えていただいた「動的な生成方法」も捨て難いので
こちらもやってみたいと思います。
SysInfo.ocxって、ただあるだけではだめなんですねぇ。知らなかった・・・!

どうもありがとうございました!