- PR -

ASP.NET2.0とActiveXコントロール

投稿者投稿内容
貴水
会議室デビュー日: 2008/11/18
投稿数: 8
投稿日時: 2008-12-01 23:30
OS:WindowsXP, Vista
ASP.NET2.0
対象ブラウザ:IE6.0以降のみ

クライアントには あるDLLがインストール済みであること、イントラ内での使用であること、新たにインストール作業は出来るだけ行わないことなどの条件により、ブラウザ経由でActiveXコントロールで クライアントにインストール済みのDLLのAPIをコールし、サーバにデータを送信しようとしています。

現在、HTMLに<OBJECT>タグで、ActiveXコントロールを組み込み、その中でローカルDLLのAPIを呼び出し、データを取得するところまでは成功しております。

このデータ(具体的には数バイトの文字列)を、エンドユーザが操作をすることなく(inputタグのボタン押下など無く)、サーバーに送信し、データ受信完了のページへ遷移したいと思っています。
<OBJECT>タグのあるHTMLの置き場所、データの送信先、遷移後のページはすべて同じサーバです。

こういった場合、ActiveXコントロールからどのようにして、データ送信・画面遷移を起こさせるのでしょうか。

Webが絡む開発は初めてでして、自分なりに以下の方法を考えてみましたが、下記の方法で可能なのでしょうか。

(案1)ActiveXコントロールにhttp通信の機能を持たせてサーバにデータを送信する。
(案2)ActiveXコントロールからブラウザに通知し、ブラウザがサーバにPOSTする。
案1ですとサーバでデータ取得はできると思いますが、結果表示画面への遷移方法がわかりません。案2ですとPOSTすることで結果表示はできそうですが、ActiveXコントロールでローカルのデータ取得ができたことをブラウザ側で検知する方法がわかりません。

他にも方法がある、あるいはそもそもActiveXじゃなくてもブラウザからローカルリソースにアクセスできる等ありましたら、ご教授ください。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-12-02 01:57
引用:

案2ですとPOSTすることで結果表示はできそうですが、ActiveXコントロールでローカルのデータ取得ができたことをブラウザ側で検知する方法がわかりません。



ActiveX コントロールでイベントを発生すればよろしんじゃないでしょうか。

その代わり、イベントを受けてページ遷移を行うためには、クライアントサイドでのスクリプトも必要です。
貴水
会議室デビュー日: 2008/11/18
投稿数: 8
投稿日時: 2008-12-02 02:15
引用:

ActiveX コントロールでイベントを発生すればよろしんじゃないでしょうか。

その代わり、イベントを受けてページ遷移を行うためには、クライアントサイドでのスクリプトも必要です。



渋木宏明さん、ありがとうございます。
つまり、
ActiveXコントロールでデータ取得後イベント発生

表示しているHTML内のスクリプト(IEだとJScriptでしょうか)でイベントを検知

なんらかの方法でActiveX内のデータを取得してPOST
ということですね。
イベントというヒントをいただけたので、調べてみます。ありがとうございます。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-12-02 03:03
引用:

なんらかの方法でActiveX内のデータを取得してPOST
ということですね。



データの件数などにもよりますが、ActiveX コントロールからデータを引き出して、input 要素に値を設定するような場合にもクライアントサイドでスクリプトを使用することになります。
貴水
会議室デビュー日: 2008/11/18
投稿数: 8
投稿日時: 2008-12-02 18:36
ActiveXコントロールにイベントを登録し、データ作成でイベント発生、
Scriptでイベントを検知して、ストックプロパティに設定したデータを取得、サーバーへPOSTまで、無事完成しました。
ありがとうございました。

あとはこのMFC ActiveXコントロールの配布だけになりました。
これレジストリに登録しないといけないんですよねぇ…
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-12-02 19:24
引用:

あとはこのMFC ActiveXコントロールの配布だけになりました。
これレジストリに登録しないといけないんですよねぇ…



CAB を作れば、サーバに配置するだけで自動配布することができます。
(クライアント設定で拒絶するようになっていたらダメですが)
貴水
会議室デビュー日: 2008/11/18
投稿数: 8
投稿日時: 2008-12-11 18:27
引用:

CAB を作れば、サーバに配置するだけで自動配布することができます。
(クライアント設定で拒絶するようになっていたらダメですが)



成功してから書き込もうと思ってたら遅くなりました。
セットアッププロジェクトでOCXをCABにして、開発環境の入ってないPCでも
MFC ActiveXコントロールを実行できるようになりました。
ありがとうございました。
オウオウ
常連さん
会議室デビュー日: 2008/11/26
投稿数: 38
投稿日時: 2008-12-11 18:41
(利用規約違反のため削除いたしました。@ITクラブメンバーシップセンター)

スキルアップ/キャリアアップ(JOB@IT)