- ベストアンサー
VBScriptを使用したActiveXコントロールのオブジェクト生成とメソッド呼び出しに関する問題
- サーバ上でActiveXコントロールのオブジェクトを生成し、VBScriptからメソッド呼び出しを行うためのプログラムを作成しました。
- しかし、クライアントからページを開くと応答がなくなります。VBScriptでTest.ocxのメソッドを使用している部分を削除すると、正常にレスポンスが帰ります。
- 設定等に問題があるのか、インスタンス生成に失敗しているように感じます。クライアントサイドでは同じことが正常に動作しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、下記のように試してみて <script language=vbscript runat="server"> Response.Write(Request.Form(input1)) Test1.TestCall(Request.Form(input1)) </script> を <script language=vbscript runat="server"> Response.Write(Request.Form(input1)) Set activexObject = CreateObject("ActiveXオブジェクトのクラスネーム") activexObject.TestCall(Request.Form(input1)) </script> に変更する
その他の回答 (2)
- songweichun
- ベストアンサー率100% (1/1)
サーバーエラーが出る原因はCreateObject("ActiveXオブジェクトのクラスネーム")のところに入れたクラスネームが正しくないと思います。CreateObject("ADODB.Connection")のようなクラスネームが入れると大丈夫と思います
- 0909union
- ベストアンサー率39% (325/818)
うん~~~~~~~。 もう一度、ASPなどのCGIを、おさらいしてください。ディレクティブされている所が、サーバー上で実行され置き換わります。 <% %> runat="server" で、サーバー上で実行された物は、クライアントにDLされた時にはただのHTMLファイルになっています。WinsockやSoapなどで通信しない限り、サーバー上のインスタンスと交信はできません。 クライアントにActiveXをDLするようにすれば、目的を達成できます。つまり、Test.ocxをFlashのように扱うわけです。
お礼
回答ありがとうございます。 <% %> runat="server" がサーバ上で実行されるのは理解していますが、ActiveXのオブジェクトもrunat="server"でサーバ上で生成されるので、結局サーバ上でスクリプトと通信できると思っていますが間違っているでしょうか? ActiveXはクライアントにダウンロードするのではなく、サーバ上で実行したいのです。 (サーバの他のプロセスと通信したいので) 実は、ここにあるサンプルと同様の事がしたいだけなのです。 http://www.newtone.co.jp/teechart/tc4ax/aspsample.html
お礼
実はCreateObjectが必要なのかと思ってやってみたのですが、サーバーエラーで「ActiveXオブジェクトを生成できません」と言われます。そもそも、ASPページ内に<object>タグで埋め込んだコンポーネントは、そのページがロードされる時にインスタンスが生成されると理解しているのですが。 実際、クライアントサイドであれば、ただ<object>タグで埋め込むのみで、そのページを読み込んだ際にコンポーネントのコンストラクタが走っています。