dポイントプレゼントキャンペーン実施中!

VB6で画面のハードコピーを取るのに下記のような関数を作成して動作させています。
今回、windows 2003 Serverで初めて使用したのですが、エラーが出力されます。

Public Sub xxxxxx()
 Dim OsVer As Single
 Clipboard.Clear
 OsVer = CreateObject("SysInfo.SYSINFO").OSVersion
  If OsVer < 5 Then
 '画面全体のスナップショットを取得する(Win98SE/Win95)
   Call keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_EXTENDEDKEY, 0)
   Call keybd_event(VK_SNAPSHOT, 1, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
Else
   '画面全体のスナップショットを取得する(WinXP)
   Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0)
   Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
 End If
End Sub

エラーの内容は
ErrNO=429
ActiveX コンポーネントはオブジェクトを作成できません。
と言うエラーなのですが、2003 serverではkeybd_eventの使い方がXp等と違うのでしょうか?
何処が悪いのかおわかりの方ご教示頂けないでしょうか?

宜しくお願いいたします。

A 回答 (1件)

>ActiveX コンポーネントはオブジェクトを作成できません。


これはオブジェクトが生成できない時のエラーです。
CreateObject("SysInfo.SYSINFO")
ここでエラーになっているはずです。

バージョンを調べる方法は幾つかあるんですが、一番簡単なのは
GetVersionというWinAPIを使う方法です。戻り値の下位8ビットが
メジャーバージョンです。

Declare Function GetVersion Lib "KERNEL32" () As Long

Public Sub xxxxxx()
== 略 ==
OsVer = GetVersion Mod &H10
If OsVer < 5 Then
== 以下略 ==

この回答への補足

nda23様

本日確認を行い無事エラーが出力されなくなりました。
どうもありがとうございました。

補足日時:2010/03/27 17:12
    • good
    • 0
この回答へのお礼

nda23様

回答有り難うございます、明日か明後日に一度ご教示頂いた方法でエラーが無くなるか試して見ようと思います。

お礼日時:2010/03/26 17:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!