- PR -

HTMLの中から、Managedコードを呼び出す方法について

投稿者投稿内容
和哉提督
常連さん
会議室デビュー日: 2002/07/17
投稿数: 21
投稿日時: 2002-10-13 18:22
こんばんわ。提督です。

今、ASP.Netで業務アプリケーションを作成中なのですが、
印刷で詰まってしまっています。
過去Logにも印刷関係のスレはたくさんありましたが、皆様のお知恵をお借りしたく思います。

ローカルPCでの印刷を考えておりまして、印刷ロジックは出来上がったのですが、
色々探してみても、.Netで作成されたDLLをHTML上から呼び出す方法だけが
わからない状況です。
もしかしたら、この方法はダメかなとも思いましたが、どこかによいサンプルなど
ご教授ねがえましたらと思います。

やはり、HTML上から呼び出すなら、Com Interopを利用するしかないのでしょうか?
また、印刷すべきデータは動的に生成されますが、それらの受け渡し方法についても
今、非常に悩んでおります。
サーバ側でしか参照できないDataSet/DataTable(の筈ですよね?)を参照できるように
するためには、いったんXMLファイルに落とす等の方法が必要でしょうか?

以上、よろしくお願い致します。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-10-15 10:54
引用:

和哉提督さんの書き込み (2002-10-13 18:22) より:

ローカルPCでの印刷を考えておりまして、印刷ロジックは出来上がったのですが、
色々探してみても、.Netで作成されたDLLをHTML上から呼び出す方法だけが
わからない状況です。
もしかしたら、この方法はダメかなとも思いましたが、どこかによいサンプルなど
ご教授ねがえましたらと思います。




http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2177&forum=7
これかな?

下の「プロファイル」から、私の過去発言を参照してください。そのものズバリを書いていたりますので。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-10-15 16:37
ごめんなさい、私、何か勘違いしているかもしれません。

 えと、サーバに「ASP.NET」でDBの処理をさせて、その結果をクライアントで印刷する、ですね。それでご質問は、
1.HTMLにDLL(これって、.NETで作成したモノですよね?)を埋め込む方法
2.ASP.NETのサーバ側からクライアントにデータを送る方法
の2つですね。

 このうち、私が答えられるのは、1の方です。

 クライアントに処理をさせるために、HTMLにDLLを埋め込む方法については、{OBJECT}タグを使えばOKです。このとき、クライアントは実行されるDLLに対して、印刷の許可を与える設定が必要です。また、クライアントはIE5以上、かつ.NET Frameworkランタイムがインストールされていることが前提となります。それはよろしいでしょうか。

{OBJECT id="Identifivation" Width=0 Height=0 ClassID="http:DLLへのパス#ネームスペース.クラス名}IE5以上を使用し、.NET Frameworkをインストールしてください。{/OBJECT}
#{}は、(半角の)<>にしてください
#ビジブルクラスしか作っていないので、アンビジブルなクラスについては不安



 2については、データベースの操作をするのであれば、アプリケーション階層を分けてみてはいかがでしょうか。(データサービス+ウェブサーバ+クライアント)
和哉提督
常連さん
会議室デビュー日: 2002/07/17
投稿数: 21
投稿日時: 2002-10-16 12:53
こんにちわ。てーとく@どつぼちゅうです。

引用:

 えと、サーバに「ASP.NET」でDBの処理をさせて、その結果をクライアントで印刷する、ですね。それでご質問は、
1.HTMLにDLL(これって、.NETで作成したモノですよね?)を埋め込む方法
2.ASP.NETのサーバ側からクライアントにデータを送る方法
の2つですね。



はい。そのとおりです。
関連スレ読ませていただきました。
非常に参考になりました。ありがとうございました。
いまさらながら、全クライアントにFrameworkインストールしておいて
よかったと感じた今日この頃です(苦笑)

和哉提督
常連さん
会議室デビュー日: 2002/07/17
投稿数: 21
投稿日時: 2002-11-13 23:48
こんばんわ。和哉提督@はまり中です。

古い話で申し訳無いのですが、またお知恵をお借りしたく思います。
結局印刷は、IEからDLLを呼び出すことにして、無駄ですがデータをWebServiceから
再度取得するようにしました。その節では色々有難うございました。

以前、下記の方法を教えて頂きましてから旨く言っていましたが、
仕様変更の都合で、プロジェクトから新しく起こし直しました。
で、依然と変わったのはDLLの名前・ネームスペース・クラス名でしたので、
HTML側の該当箇所を変更して、TestPGを走らせたところ、
「オブジェクトでサポートされていないプロパティ又はメソッドです」ばかり出まくり
になってしまいました・・・・。

引用:

{OBJECT id="Identifivation" Width=0 Height=0 ClassID="http:DLLへのパス#ネームスペース.クラス名}IE5以上を使用し、.NET Frameworkをインストールしてください。{/OBJECT}





そして、質問内容ですが・・・
1.下記のDLLへのパスは、物理ファイルの置き場所で良いですか?
2.NameSpace名・Class名は、IDEのクラスビューで見えてる通りの名前で良いですか?
3.NameSpace名・Class名は、大文字小文字含めて厳密に考えないといけないのでしょうか?

ソースを掲載できれば良いのかもしれませんが、全てを掲載するのは長すぎると
思われるので、ココでは割愛させていただきました。

必要と思われるところだけ掲載させていただきます。
不足が在るようでしたら、お知らせください。

まずHTMLに記述した部分
[OBJECT id="KImg" height="10" width="100" classid="http://hoge/aaaa/PrtKyuImg.dll#PrtKyuImg.KyujinImage" VIEWASTEXT]

DLL化されたクラスの名称定義部分
Public Class KyujinImage

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-11-14 09:00
こんにちは
引用:

「オブジェクトでサポートされていないプロパティ又はメソッドです」ばかり出まくり
になってしまいました・・・・。

{OBJECT id="Identifivation" Width=0 Height=0 ClassID="http:DLLへのパス#ネームスペース.クラス名}IE5以上を使用し、.NET Frameworkをインストールしてください。{/OBJECT}

そして、質問内容ですが・・・
1.下記のDLLへのパスは、物理ファイルの置き場所で良いですか?
2.NameSpace名・Class名は、IDEのクラスビューで見えてる通りの名前で良いですか?
3.NameSpace名・Class名は、大文字小文字含めて厳密に考えないといけないのでしょうか?

まずHTMLに記述した部分
{OBJECT id="KImg" height="10" width="100" classid="http://hoge/aaaa/PrtKyuImg.dll#PrtKyuImg.KyujinImage" VIEWASTEXT}

DLL化されたクラスの名称定義部分
Public Class KyujinImage


 えと、私のところで設定しているコードです。
コード:
{OBJECT id="banner" height=80 width=400
  classid="http:installed.dll#Installed.UserControl1" VIEWASTEXT}
    このメッセージが表示されている場合、
    インターネットエクスプローラを使用するか、
    .NET Frameworkをインストールしてください。
{/OBJECT}


クラスビューでは、{「ソリューションのアイコン」Installed「{}のアイコン」Installed「クラスのアイコン」UserControl1}となっています。HTMLとDLLを同じところにおいているのが実はミソかもしれません。

 あと、「アンマネージコードから呼び出されるのを許可する」か、そんな設定をAssemblyInfo.vbに設定しなければいけないかもしれません。
和哉提督
常連さん
会議室デビュー日: 2002/07/17
投稿数: 21
投稿日時: 2002-11-22 11:32
こんにちわ。提督@有難うございました。です

Unvisible Classでも、ちゃんと動いてますよ(笑)
きっちり印刷できてます(笑)(少なくともローカルLAN内では)
が、外からのアクセスで詰まってます・・・(苦笑)
いろいろすっきり行きませんねぇ・・・

また、Assenblyinfo.vbファイルは一切触ってませんが、
ローカルLAN内ではちゃんと動いてます。

とりあえず報告でした。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-11-22 16:18
引用:

和哉提督さんの書き込み (2002-11-22 11:32) より:

きっちり印刷できてます(笑)(少なくともローカルLAN内では)
が、外からのアクセスで詰まってます・・・(苦笑)
ローカルLAN内ではちゃんと動いてます。


 うまく動いているようで、ちょっと安堵、ですね。
 Windowsの「スタート→コントロールパネル→管理ツール→MS .NET Framework Wizards」で、「イントラネット」のセキュリティーを下げていると、印刷できます。その辺じゃないでしょうか。ただし、「外」のセキュリティーは下げてはいけません。そのために、「インストーラ」を用意して「セキュリティーポリシーを設定」します。このインストーラも、最新の注意を払って作成しないと、簡単にセキュリティーホールをつくってしまいます。

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