C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: DLLからメソッドを送る


(過去ログ 119 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■69926 / inTopicNo.1)  DLLからメソッドを送る
  
□投稿者/ よしおか (5回)-(2014/02/12(Wed) 13:01:00)

分類:[C#] 

MEFを使ってC#のプログラムを作っています。

DLL側のメソッドとして
public bool ブーリアン(){
    return true;
}
public string ストリングス(){
return "文字列";
}

のような、戻り値をDLLからメインに送ることはできるのですが、




public void ナビ(int a){
webBrowser1.Navigate(http・・・・);

if(a==2){a=a+1}
Thread.Sleep(a);

}//webBrowser1はメインにある


このような処理をDLLに入れようとすると、当たり前ですが「DLLの中にwebBrowser1」なんてないぞ
っと怒られてしまいます。

どのように渡せばよいのでしょうか?
引用返信 編集キー/
■69929 / inTopicNo.2)  Re[1]: DLLからメソッドを送る
□投稿者/ shu (484回)-(2014/02/12(Wed) 16:32:29)
No69926 (よしおか さん) に返信
>
> このような処理をDLLに入れようとすると、当たり前ですが「DLLの中にwebBrowser1」なんてないぞ
> っと怒られてしまいます。

MEFは使ったことがないのですがそういう状況ならwebBrowser1を引数とかプロパティとかで渡せば良いと
思うのですがそういうことは出来ませんか?
引用返信 編集キー/
■69930 / inTopicNo.3)  Re[2]: DLLからメソッドを送る
□投稿者/ よしおか (6回)-(2014/02/12(Wed) 17:52:09)
試しに、
using System.Windows.Controls;

public void ナビ(webBrowser webBrowser1, int a){
 webBrowser1.Navigate("http・・・・");
 Thread.Sleep(a);
}
を入力してみましたが、

型または名前空間名 'webBrowser' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
というエラーが検出されました。
引用返信 編集キー/
■69931 / inTopicNo.4)  Re[3]: DLLからメソッドを送る
□投稿者/ WebSurfer (182回)-(2014/02/12(Wed) 19:19:45)
No69930 (よしおか さん) に返信
> 型または名前空間名 'webBrowser' が見つかりませんでした。

webBrowser ではなくて WebBrowser のはずですが。

開発者なら、大文字小文字、全角半角の区別はコンパイラ並みに敏感でないとダメです。
引用返信 編集キー/
■69932 / inTopicNo.5)  Re[4]: DLLからメソッドを送る
□投稿者/ Hongliang (164回)-(2014/02/12(Wed) 19:29:09)
それから、DLLの方のプロジェクトに、
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.webbrowser.aspx
で挙げられているアセンブリを追加する必要があります。
// 多分芋づる式にもう2, 3の追加するアセンブリがありますが、コンパイルエラーを見て判断して下さい。
引用返信 編集キー/
■69935 / inTopicNo.6)  Re[5]: DLLからメソッドを送る
□投稿者/ (報告) (1回)-(2014/02/13(Thu) 07:03:26)
こんなの見つけた。
http://okwave.jp/qa/q8471761.html

質問文も同じ
ついた解答も同じのがスゲー

引用返信 編集キー/
■69978 / inTopicNo.7)  Re[6]: DLLからメソッドを送る
□投稿者/ よしおか (7回)-(2014/02/16(Sun) 08:41:55)
ずいぶん時間を空けてしまってすみません。今日からまたがんばります!

僕なりの解釈ですが、
DLL側にはWebBrowserがないので、 webBrowserクラスをabstractでつくり、
DLLを読み込んだ際は、メインの webBrowserを参照させるということでしょうか?
引用返信 編集キー/
■69981 / inTopicNo.8)  Re[7]: DLLからメソッドを送る
□投稿者/ WebSurfer (186回)-(2014/02/16(Sun) 11:31:09)
No69978 (よしおか さん) に返信

まず、先の私のレス、

> webBrowser ではなくて WebBrowser のはずですが。

は理解されているでしょうか。コンパイラは大文字・小文字、全角・半角の区別をするの
で、webBrowser ではコンパイラが理解できないことはわかりますか?


> DLL側にはWebBrowserがないので、 webBrowserクラスをabstractでつくり、
> DLLを読み込んだ際は、メインの webBrowserを参照させるということでしょうか?

上記は。「参照の追加」をどうすればいいかという事に関するあなたの理解ですか? 
であれば違います。

参照の追加とは、以下のページの図4、図8のようなことです。

Microsoft Visual C# 2005 Express Edition プログラミング入門
http://msdn.microsoft.com/ja-jp/library/ms379606(v=vs.80).aspx

ここには dll を作成して exe で使う例が出ていますので、そのあたりも参考になる
と思います。
引用返信 編集キー/
■69982 / inTopicNo.9)  Re[7]: DLLからメソッドを送る
□投稿者/ よしおか (9回)-(2014/02/16(Sun) 11:45:37)
2014/02/16(Sun) 11:55:13 編集(投稿者)
2014/02/16(Sun) 11:55:09 編集(投稿者)

上記の方法でなんとかできました。インターフェイス・DLLともにリビルド完了です。

しかし、呼び出す側の
    ナビ(○○)
の、引数がどう書けばいいかわかりません。
映し出したい
abstractを使っているので、本来表示したいウェブブラウザを指定することはわかるのですが、思い当たる書き方をしてもヒットしません。
教えていただけないでしょうか?









引用返信 編集キー/
■69983 / inTopicNo.10)  Re[8]: DLLからメソッドを送る
□投稿者/ よしおか (10回)-(2014/02/16(Sun) 11:50:13)
すみません、ページを更新せず書き込んでしまったのでレスがあることに気づきませんでした。

>>コンパイラは大文字・小文字、全角・半角の区別をするので、webBrowser ではコンパイラが理解できないことはわかりますか?
理解し、WebBrowserに変換しました。


>>上記は。「参照の追加」をどうすればいいかという事に関するあなたの理解ですか?であれば違います。

ビルドが通ったのでいけるかと思ったのですが、間違った方向に行っていたのですかね。張ってもらったリンクよんで再チャレンジしていきます!
引用返信 編集キー/
■69985 / inTopicNo.11)  Re[9]: DLLからメソッドを送る
□投稿者/ WebSurfer (188回)-(2014/02/16(Sun) 12:06:47)
No69983 (よしおか さん) に返信
> ビルドが通ったのでいけるかと思ったのですが、間違った方向に行っていたのですかね。張ってもらったリンクよんで再チャレンジしていきます!

頑張ってください。

あと、マルチポストは止めましょうね。マナー的に問題が多いです。
引用返信 編集キー/
■69986 / inTopicNo.12)  Re[10]: DLLからメソッドを送る
□投稿者/ よしおか (11回)-(2014/02/16(Sun) 13:33:20)
No69985 (WebSurfer さん) に返信
> ■No69983 (よしおか さん) に返信
>>ビルドが通ったのでいけるかと思ったのですが、間違った方向に行っていたのですかね。張ってもらったリンクよんで再チャレンジしていきます!
>
> 頑張ってください。
>
> あと、マルチポストは止めましょうね。マナー的に問題が多いです。


ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -