- - PR -
IEで管理されるアプリケーションについて
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-04-05 23:01
こんにちは。
ためしにWindowsFormのEXEを作成して、EXEがあるフォルダをWeb共有名「IEHOST」で設定し EXEがあるフォルダ上にtop.htmを配置しました。Top.htmの中身は次の通り。 <html><body> <OBJECT ID="obj" CLASSID="windowsforms.exe" HEIGHT="300" WIDTH="300"></OBJECT> </body></html> ブラウザからはURLに「http://localhost/IEHOST/top.htm」を実行しました。 画面上には指定したサイズ枠が表示された状態でずーっとブラウザの下のプログレスバーが 先に進みません。 もしかしてEXEはIEにホストできないのでしょうか? 過去ログを見るとみんなDLLだったんですが、どうなんでしょうか? ちなみに ブラウザからはURLに「http://localhost/IEHOST/windowsforms.exe」は実行できました。 | ||||
|
投稿日時: 2003-04-07 10:41
こんにちは。
オブジェクトの指定が完全ではないからだと思います。そこに表示するオブジェクト(クラス)を指定してやると、どうなりますか? | ||||
|
投稿日時: 2003-04-07 13:42
jittaさん、こんにちは。
<html><body> <OBJECT ID="obj" CLASSID="windowsforms.exe#DBViewer" HEIGHT="300" WIDTH="300"></OBJECT> </body></html> または <html><body> <OBJECT ID="obj" CLASSID="windowsforms.exe#DBViewer.Main" HEIGHT="300" WIDTH="300"></OBJECT> </body></html> どちらの指定もだめでした。 ブラウザ上でURLを指定して実行すると、ブラウザ上に表示領域が表示されるのですが、その領域の高さは1cmほどで横の長さは10cmぐらいです。 その他のブラウザ画面上は真っ白です。 「HEIGHT="300" WIDTH="300"」 に問題ありでしょうか? 「HEIGHT="100%" WIDTH="100%"」 にしても横の長さが広がるだけで、縦は変わらず、その他はやはり真っ白でした。 ちなみにDBViewer.exeとは自作アセンブリDLLを参照していて、SQLサーバーに接続して画面上にDB名、テーブル名、データを表示する簡易なWindowsFormアプリケーションです。 | ||||
|
投稿日時: 2003-04-07 13:59
こんにちは。
残念ながら、まだ不完全だと思います。 <OBJECT ID="obj" CLASSID="windowsforms.exe#*DBViewer" HEIGHT="300" WIDTH="300"> 「*」のところに、名前空間の指定が必要かと思います。名前空間については、ソース中に記載されていなくても、プロジェクトエクスプローラでプロジェクトファイルを右クリック→プロパティで表示されるプロパティーシートで、「ルート名前空間」というものが指定されています。ここから指定してみてください。また、デフォルト(引数なし)のコンストラクタも必要です。 また、EXEですが、DLLとして動作します。このことの仕組みは、2つの実行可能プロジェクトのあるソリューションを作成し、一方が他方を『参照』して取り込み、確認してください。 | ||||
|
投稿日時: 2003-04-07 14:16
jittaさん、こんにちは。
ルート名前空間は「DBViewer」でしたので以下のように修正し実行しました。 <OBJECT ID="obj" CLASSID="windowsforms.exe#DBViewer.DBViewer" HEIGHT="300" WIDTH="300"> 結果は変わらずでした。 また、デフォルトコンストラクタは存在しております。ただデフォルトコンストラクタ内に処理を記述しております。もしかしてこれが原因でしょうか? .NET Framework SDKみてもこのあたりは詳しく載っていないですね(涙) | ||||
|
投稿日時: 2003-04-07 17:39
こんにちは。
過去ログを見直して気がついたのですが、 <OBJECT ID="obj" CLASSID="http:windowsforms.exe#DBViewer.DBViewer" HEIGHT="300" WIDTH="300"> では? | ||||
|
投稿日時: 2003-04-07 21:27
jittaさん、こんにちは。
試してみましたが、同じ現象で駄目でした。 んー何が足りないのだろうか・・・? 色々と試してみますが、またご助言いただければ幸いです。 | ||||
|
投稿日時: 2003-04-08 00:43
こんにちは。
過去ログを見つけました。(なかなか検索で条件入れても引っかからないものですね !汗!) 「WebアプリケーションにWindows Formsのコントロールを表示する方法」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1833&forum=7&9 この中で以下のbiacさんによる発言を発見しました。 1.System.Windows.Forms.Controls を継承したクラスであること。 ただし、Form は除く。 2.引数無しのコンストラクタが定義されていること。 3.サイズは明示的に指定すること。 (コンストラクタまたは <object> タグ内) 4.呼び出せるのは、そのクラスで定義したメソッド/プロパティのみ。 (継承元にあるだけでは、呼び出せないみたい。) 5.通信できるのは、HTML のある URL だけ。 それも HTTP(S) だけ。 6.ローカルリソースにはアクセス不可。 ただし、コモンダイアログでユーザが引き渡したファイルストリームなどは別らしい。 印刷も、コモンダイアログを使えば可能らしい。 この中で1番の「ただしFormは除く」とありますが、WindowsコントロールのみIE上で表示できるが、WindowsFormは表示できないということなのでしょうか? そうであれば私が今やろうとしてエラーになっているのは、ある意味正しいということに。 ちなみに ※ ごくごく簡単なサンプルを次に置いてあります。 f(^^; http://nadia.kabe.to/test/WinFormControlOnHTML/MyTextBox.html の通りにサンプルを作成してやってみたが、IEに表示されない。なんでだろう? 【HTML】 <html><body>aaa<br><div> <OBJECT ID="RepMgr1" CLASSID="IeHostDll.DLL#IeHostDll" HEIGHT="40" WIDTH="200"></OBJECT> </div></body></html> 【IeHostDll.cs】 using System; namespace IeHostDll { /// <summary> /// Class1 の概要の説明です。 /// </summary> public class IeHostDll:System.Windows.Forms.TextBox { public IeHostDll() { this.Multiline = true; this.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; } public string TextReverse { set { char[] str = value.ToCharArray(); Array.Reverse(str); this.Text = new String(str); } } } } ちなみにサンプルのまま新規クラスライブラリープロジェクトを作成してcsファイルに貼り付けても怒られましたので、参照の追加でSystem.Windows.Form.dllを追加しました。 ビルドはこれでOKでしたが、IEに表示されない。なぜだろう・・・? |
1|2|3
次のページへ»