質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Mono

Monoは、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群です。Linux、Mac OS X、Windowsなど多くのプラットフォームで動作します。その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

2078閲覧

Linux上でMonoを使ったGUIアプリ開発で使えるBrowserコントロール

y.minori

総合スコア15

Mono

Monoは、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群です。Linux、Mac OS X、Windowsなど多くのプラットフォームで動作します。その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

1クリップ

投稿2019/08/07 02:08

編集2019/08/07 02:13

Linux で使える XML-RPC API を用いて投稿してくれる WYSIWYG エディタのあるブログクライアントを探したところ blogilo があることが分かったのですが、 ubuntu では既にパッケージから削除されており、かつ、現在もパッケージの存在するディストリビューション( Fedora など)でも、 WYSIWYG エディタが機能せず、エラーも多数発生することが分かり、 既存のクライアントの使用を断念せざるを得ませんでした。

そのため、自作しようと試みています。 .Net と C# を用いてフォームベースの GUI アプリケーションとして作成しようと考えています。

手始めに、 webbrowser コントロールをフォームに貼り付けて、 URL 開いて表示することのできるサンプルアプリを作ろうとしました。

JetBeans Rider を使って開発しようと思ったのですが、 Linux では .Net, .Net Core 共に GUI アプリケーションが作れないことが分かりましたので、 Mono を使った GUI アプリケーションを作成しようとしました。しかし、 Rider は Mono での GUI アプリケーション作成の機能が存在しないことが分かり断念しました。

そこで、代わりになる開発環境を探しましたが、 .Net の System.Windows.Forms を使ってフォームベースのGUIアプリをデザインモードで開き開発できる開発環境が一つも存在しないことが分かり、デザインモードの使用も断念せざるを得ませんでした。

デザインモードの使用を諦めれば、 MonoDevelop という開発環境であれば System.Windows.Forms を用いたフォームベースのGUIアプリケーションの開発が可能と分かりました。そこで、 Form1 を作成し、

C#

1 2form1.cs 3namespace wbctrltest1 4{ 5 public partial class Form1 : Form 6 { 7 public Form1() 8 { 9 InitializeComponent(); 10 } 11 private void Form1_Load(object sender, EventArgs e) 12 { 13 string url = "http://sample.url/"; 14 webBrowser1.Navigate(url); 15 } 16 } 17} 18 19form1.designer.cs 20namespace wbctrltest1 21{ 22 partial class Form1 23 { 24... 25 #region Windows フォーム デザイナーで生成されたコード 26 private InitializeCompopnent() 27 { 28 this.webBrowser1 = new System.Windows.Forms.WebBrowser(); 29 ... 30 this.Controls.Add(this.webBrowser1); 31 this.Load += new System.EventHandler(this.Form1_Load); 32 this.ResumeLayout(false); 33 } 34 #endregion 35 private System.Windows.Forms.WebBrowser webBrowser1; 36 } 37} 38 39program.cs 40namespace wbctrltest1 41 static class Program 42 { 43 [STAThread] 44 static void Main() 45 { 46 Application.EnableVisualStyles(); 47 Application.SetCompatibleTextRenderingDefault(false); 48 Application.Run(new Form1()); 49 } 50 } 51}

のように記述しました。ところが、デバッグ実行をすると、一瞬でアプリケーションが終了してしまいました。

MonoDevelop の「アプリケーション出力」を見ると、

libgluezilla not found. To have webbrowser support, you need libgluezilla installed

となっていました。これが原因で即時終了してしまうのは分かるのですが、

$ sudo apt-cache search libgluezilla

libmono-webbrowser4.0-cil - Mono Web Browser library (for CLI 4.0)

と表示される libmono-webbrowser4.0-cil は下のようにインストール済みです。

$ sudo apt-get install libmono-webbrowser4.0-cil

libmono-webbrowser4.0-cil is already latest version (6.0.0.313-0xamarin3+ubuntu1804b1)
upgraded: 0 , installed: 0, removed: 0, pending: 39.

ということは、もしかして、 Linux では、 Mono の Sysytem.Windows.Forms.WebBrowser は、未実装、つまり、「はじめから使えません」なのでしょうか?(ちなみに、上記コードの Navigate() 行をコメントアウトすると問題なくフォーム「だけ」表示されました。)

もし、 Mono が Linux platform では WebBrowser コントロールを実装していないのであれば、何か代わりになるブラウザコントロールが必要です( url を指定して表示するだけでなく、 WYSIWYG 編集も可能なもの。)が、現在開発継続中でおすすめな .Net で開発できる WebBrowser コントロールがあるでしょうか。 Mono.WebBrowser が代わりに使えますか?

IE の WebBrowser コントロールは Linux 版は無さそうですが、 firefox の Gecko エンジンや Chrome のエンジンなどが、 Linux 上で .Net 上で開発できる WebBrowser コントロールとしても用意されていればそれらでよさそうですが・・・。

追記:
一応、もし Linux の Mono の WebBrowser コントロールが使えない(未実装)だったときのためにネットで検索してみました。

awesomium というものがあるようでした(これは Chrome のエンジンを使っているようです)が、 .Net 用と書いてあるのですが、なぜか .Net 用のバイナリが見つからず、なぜか、C++用のライブラリがリンク先にあり、なぜか、ページに書いてあるとおりにサンプルを cmake でビルドしてみても、同じディレクトリに libUltralightCore.so がビルドされて存在しているにも関わらず、

./Browser: error while loading shared libraries: libUltralightCore.so: cannot open shared object file: No such file or directory

のように、すべてのサンプルが同じ .so ファイルが無いというエラーで起動しませんでした。(起動したとしても、 .Net と C# で開発する予定ですので、このC++ライブラリを使用するつもりはないのですが・・・。)

OpenWebKit というものもあるようですが、かなり古いようで、10年ほど前に開発を終了してしまっているようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Linux では Sysytem.Windows.Forms.WebBrowser が Navigate() を呼び出すと、なぜ「libgluezilla not found. To have webbrowser support, you need libgluezilla installed 」のエラーになるかは依然不明です。

が、原因が分からない間の時間がもったいないので、 .Net の System.Windows.Form を用いるのはやめて、 gtk#2.0 を用いて WebKit2-sharp パッケージを使用することで、 url の示す内容を表示することができました。

追記:
しばらく待ってみましたが、特におわかりの方もおられないようなので、 ligqluezilla についてのエラーの原因は不明、代替として WebKit2-sharp を使う、ということで自己解決といたします。

投稿2019/08/07 07:24

編集2019/08/08 11:30
y.minori

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問