- - PR -
HTMLの中から、Managedコードを呼び出す方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-10-13 18:22
こんばんわ。提督です。
今、ASP.Netで業務アプリケーションを作成中なのですが、 印刷で詰まってしまっています。 過去Logにも印刷関係のスレはたくさんありましたが、皆様のお知恵をお借りしたく思います。 ローカルPCでの印刷を考えておりまして、印刷ロジックは出来上がったのですが、 色々探してみても、.Netで作成されたDLLをHTML上から呼び出す方法だけが わからない状況です。 もしかしたら、この方法はダメかなとも思いましたが、どこかによいサンプルなど ご教授ねがえましたらと思います。 やはり、HTML上から呼び出すなら、Com Interopを利用するしかないのでしょうか? また、印刷すべきデータは動的に生成されますが、それらの受け渡し方法についても 今、非常に悩んでおります。 サーバ側でしか参照できないDataSet/DataTable(の筈ですよね?)を参照できるように するためには、いったんXMLファイルに落とす等の方法が必要でしょうか? 以上、よろしくお願い致します。 | ||||||||
|
投稿日時: 2002-10-15 10:54
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2177&forum=7 これかな? 下の「プロファイル」から、私の過去発言を参照してください。そのものズバリを書いていたりますので。 | ||||||||
|
投稿日時: 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-10-16 12:53
こんにちわ。てーとく@どつぼちゅうです。
はい。そのとおりです。 関連スレ読ませていただきました。 非常に参考になりました。ありがとうございました。 いまさらながら、全クライアントにFrameworkインストールしておいて よかったと感じた今日この頃です(苦笑) | ||||||||
|
投稿日時: 2002-11-13 23:48
こんばんわ。和哉提督@はまり中です。
古い話で申し訳無いのですが、またお知恵をお借りしたく思います。 結局印刷は、IEからDLLを呼び出すことにして、無駄ですがデータをWebServiceから 再度取得するようにしました。その節では色々有難うございました。 以前、下記の方法を教えて頂きましてから旨く言っていましたが、 仕様変更の都合で、プロジェクトから新しく起こし直しました。 で、依然と変わったのはDLLの名前・ネームスペース・クラス名でしたので、 HTML側の該当箇所を変更して、TestPGを走らせたところ、 「オブジェクトでサポートされていないプロパティ又はメソッドです」ばかり出まくり になってしまいました・・・・。
そして、質問内容ですが・・・ 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 | ||||||||
|
投稿日時: 2002-11-14 09:00
こんにちは
えと、私のところで設定しているコードです。
クラスビューでは、{「ソリューションのアイコン」Installed「{}のアイコン」Installed「クラスのアイコン」UserControl1}となっています。HTMLとDLLを同じところにおいているのが実はミソかもしれません。 あと、「アンマネージコードから呼び出されるのを許可する」か、そんな設定をAssemblyInfo.vbに設定しなければいけないかもしれません。 | ||||||||
|
投稿日時: 2002-11-22 11:32
こんにちわ。提督@有難うございました。です
Unvisible Classでも、ちゃんと動いてますよ(笑) きっちり印刷できてます(笑)(少なくともローカルLAN内では) が、外からのアクセスで詰まってます・・・(苦笑) いろいろすっきり行きませんねぇ・・・ また、Assenblyinfo.vbファイルは一切触ってませんが、 ローカルLAN内ではちゃんと動いてます。 とりあえず報告でした。 | ||||||||
|
投稿日時: 2002-11-22 16:18
うまく動いているようで、ちょっと安堵、ですね。 Windowsの「スタート→コントロールパネル→管理ツール→MS .NET Framework Wizards」で、「イントラネット」のセキュリティーを下げていると、印刷できます。その辺じゃないでしょうか。ただし、「外」のセキュリティーは下げてはいけません。そのために、「インストーラ」を用意して「セキュリティーポリシーを設定」します。このインストーラも、最新の注意を払って作成しないと、簡単にセキュリティーホールをつくってしまいます。 |