songweichunのプロフィール

@songweichun songweichun
ありがとう数1
質問数0
回答数2
ベストアンサー数
1
ベストアンサー率
100%
お礼率
0%

  • 登録日2010/03/18
  • サーバ上でActiveXコントロールのオブジェクトを生成し、VBScr

    サーバ上でActiveXコントロールのオブジェクトを生成し、VBScriptからメソッド呼 び出しを行うため、下記のようなプログラムを作成しました。 [test.asp] <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"/> <meta name="GENERATOR" content="Microsoft Visual Studio 6.0"/> </head> <body> <OBJECT id=Test1 style="LEFT: 0px; VISIBILITY: hidden; TOP: 0px" codeBase=Test.ocx#version=4,0,0,0 type=application/x-oleobject classid=clsid:XXXX runat="server"> </OBJECT> <script language=vbscript runat="server"> Response.Write(Request.Form(input1)) Test1.TestCall(Request.Form(input1)) </script> <script language=vbscript> Sub test1() Document.Testform.submit() End Sub </script> <form name="Testform" action="test.asp"method="POST"> <input style="width: 143px; height: 75px" type="button" name="button1" onclick="test1"/> <input type="hidden" name="input1" value=" "/> <!--ここにユーザ入力値を入れ る--> </form> </body> </html> Test.ocxは公開メソッドとして、ユーザ入力値を引数に持つ"TestCall"を持っていま す。 サーバ側でregsvr32 Test.ocxでレジストリ登録して、そのクラスIDを<OBJECT>タグ で指定しています。 これをクライアントから http://servername/test.asp で開くと、そのまま応答がなくなります。 VBScriptでTest.ocxのメソッドを使用している部分を削除すれば、普通にレスポンス が帰ってきます。 (Response.Write(Request.Form(input1))の結果が正しく表示されている) input1にはユーザ入力値を入れる処理をVBScriptで実装していますが、上記では省略 しています。 何か設定等足りないところがあるのでしょうか? Test.ocxのインスタンス生成に失敗しているような感じがします。 インスタンスはこのページがロードされたときにサーバ側で生成されるものと理解し ていますが、正しいでしょうか? なお、これと同じことをクライアントサイドで行った場合、正常にTest.ocxのメソッ ドをコールできています。 (<object>タグと<script>タグでrunat="server"を削除。) やりたいことは、ユーザーが入力したフォームデータをsubmit()して、サーバ上で ActiveXオブジェクトを生成して、VBScriptからActiveXの公開メソッドを呼び出し、 その中からさらにサーバ上の別プログラムを呼び出し、処理結果を受けてVBScriptへ 処理を戻し、結果をASPで処理してクライアントに返したいのです。 普通のWebアプリケーションとほぼ同じだと思いますが、ActiveXコントロールから別 のプログラム(レガシーアプリ)へはPostMessageで要求を投げているので、結果が 自身にPostされるまでSleepしてからVBScriptに処理を戻すという形にしようとして います。 サーバ環境はWindows Server 2003 + IIS6.0、クライアントはWindows XP Professional SP3 + IE6.0です。 リモートデバッグの仕方が分からず苦労しています。

  • サーバ上でActiveXコントロールのオブジェクトを生成し、VBScr

    サーバ上でActiveXコントロールのオブジェクトを生成し、VBScriptからメソッド呼 び出しを行うため、下記のようなプログラムを作成しました。 [test.asp] <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"/> <meta name="GENERATOR" content="Microsoft Visual Studio 6.0"/> </head> <body> <OBJECT id=Test1 style="LEFT: 0px; VISIBILITY: hidden; TOP: 0px" codeBase=Test.ocx#version=4,0,0,0 type=application/x-oleobject classid=clsid:XXXX runat="server"> </OBJECT> <script language=vbscript runat="server"> Response.Write(Request.Form(input1)) Test1.TestCall(Request.Form(input1)) </script> <script language=vbscript> Sub test1() Document.Testform.submit() End Sub </script> <form name="Testform" action="test.asp"method="POST"> <input style="width: 143px; height: 75px" type="button" name="button1" onclick="test1"/> <input type="hidden" name="input1" value=" "/> <!--ここにユーザ入力値を入れ る--> </form> </body> </html> Test.ocxは公開メソッドとして、ユーザ入力値を引数に持つ"TestCall"を持っていま す。 サーバ側でregsvr32 Test.ocxでレジストリ登録して、そのクラスIDを<OBJECT>タグ で指定しています。 これをクライアントから http://servername/test.asp で開くと、そのまま応答がなくなります。 VBScriptでTest.ocxのメソッドを使用している部分を削除すれば、普通にレスポンス が帰ってきます。 (Response.Write(Request.Form(input1))の結果が正しく表示されている) input1にはユーザ入力値を入れる処理をVBScriptで実装していますが、上記では省略 しています。 何か設定等足りないところがあるのでしょうか? Test.ocxのインスタンス生成に失敗しているような感じがします。 インスタンスはこのページがロードされたときにサーバ側で生成されるものと理解し ていますが、正しいでしょうか? なお、これと同じことをクライアントサイドで行った場合、正常にTest.ocxのメソッ ドをコールできています。 (<object>タグと<script>タグでrunat="server"を削除。) やりたいことは、ユーザーが入力したフォームデータをsubmit()して、サーバ上で ActiveXオブジェクトを生成して、VBScriptからActiveXの公開メソッドを呼び出し、 その中からさらにサーバ上の別プログラムを呼び出し、処理結果を受けてVBScriptへ 処理を戻し、結果をASPで処理してクライアントに返したいのです。 普通のWebアプリケーションとほぼ同じだと思いますが、ActiveXコントロールから別 のプログラム(レガシーアプリ)へはPostMessageで要求を投げているので、結果が 自身にPostされるまでSleepしてからVBScriptに処理を戻すという形にしようとして います。 サーバ環境はWindows Server 2003 + IIS6.0、クライアントはWindows XP Professional SP3 + IE6.0です。 リモートデバッグの仕方が分からず苦労しています。