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

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

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

Re[3]: 作成したDLLアプリケーションの呼出し


(過去ログ 163 を表示中)

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

■94367 / inTopicNo.1)  作成したDLLアプリケーションの呼出し
  
□投稿者/ VB初心者 (1回)-(2020/04/06(Mon) 15:17:43)

分類:[VB.NET/VB2005 以降] 

はじめまして
複数あるEXEから一つのDLL画面を呼び出したいのですが、やり方がわからない状態です。
イメージとしては、複数の処理からログイン画面(DLL)を呼び出そうとする感じです。
ログイン画面をフォーム作成し、アプリケーションの種類を「クラスライブラリ(DLL)」にしてDLLを作成しました。
現在、以下の項目に関してが分からないです。
@作成したDLLは呼出元のアプリケーションから参照設定で登録行う形でよいか
A呼出元でDLL内に設定した変数を参照して値をセット可能か
Bそもそもどのように呼び出せばよいのか

以上3点です。
Bで呼び出した時、Aで変数にセットした値をそのまま画面に表示するなどを行いたいです。

大変お手数ではありますが、ご教授いただければと思います。
引用返信 編集キー/
■94368 / inTopicNo.2)  Re[1]: 作成したDLLアプリケーションの呼出し
□投稿者/ 魔界の仮面弁士 (2668回)-(2020/04/06(Mon) 15:27:49)
No94367 (VB初心者 さん) に返信
> @作成したDLLは呼出元のアプリケーションから参照設定で登録行う形でよいか

はい、そのような形となります。
たとえば、WinForms ではなくコンソール アプリケーションなプロジェクトから
  System.Windows.Forms.MessageBox.Show("Hello")
を実行する場合、コンソール アプリケーションのプロジェクトに対して、
System.Windows.Forms.dll を参照設定に加える必要がありますが、それと同じです。


> A呼出元でDLL内に設定した変数を参照して値をセット可能か

できますが、設計上好ましくありません。

外部から変数を直接読み書きするのではなく、DLL 側で提供した Form あるいはクラスにて、
その変数を「プロパティ」として公開するようにします。

あるいはコンストラクタやメソッドの引数などを通じて値をセットしても良いでしょう。
(InputBox や MsgBox 関数も、引数で情報を受け渡す設計になっていますよね)


> Bそもそもどのように呼び出せばよいのか

画面があるのなら、その DLL には恐らく Form が既にあるでしょうから、
それが Public Class であるのなら、参照設定した側からもそのまま呼び出せます。
 Dim f As New Form1()
 f.Show()

ただし、DLL のプロジェクトのプロパティで、[アプリケーション]タブの
[ルート名前空間]が空っぽで無かった場合には、呼び出し側は
 Dim f As New DLLの名前空間.Form1()
のように記述する必要があります。
引用返信 編集キー/
■94369 / inTopicNo.3)  Re[2]: 作成したDLLアプリケーションの呼出し
□投稿者/ VB初心者 (3回)-(2020/04/06(Mon) 16:36:46)
No94368 (魔界の仮面弁士 さん) に返信
> ■No94367 (VB初心者 さん) に返信
>>@作成したDLLは呼出元のアプリケーションから参照設定で登録行う形でよいか
>
> はい、そのような形となります。
> たとえば、WinForms ではなくコンソール アプリケーションなプロジェクトから
>   System.Windows.Forms.MessageBox.Show("Hello")
> を実行する場合、コンソール アプリケーションのプロジェクトに対して、
> System.Windows.Forms.dll を参照設定に加える必要がありますが、それと同じです。
>
>
>>A呼出元でDLL内に設定した変数を参照して値をセット可能か
>
> できますが、設計上好ましくありません。
>
> 外部から変数を直接読み書きするのではなく、DLL 側で提供した Form あるいはクラスにて、
> その変数を「プロパティ」として公開するようにします。
>
> あるいはコンストラクタやメソッドの引数などを通じて値をセットしても良いでしょう。
> (InputBox や MsgBox 関数も、引数で情報を受け渡す設計になっていますよね)
>
>
>>Bそもそもどのように呼び出せばよいのか
>
> 画面があるのなら、その DLL には恐らく Form が既にあるでしょうから、
> それが Public Class であるのなら、参照設定した側からもそのまま呼び出せます。
>  Dim f As New Form1()
>  f.Show()
>
> ただし、DLL のプロジェクトのプロパティで、[アプリケーション]タブの
> [ルート名前空間]が空っぽで無かった場合には、呼び出し側は
>  Dim f As New DLLの名前空間.Form1()
> のように記述する必要があります。

@Bに関しては問題なさそうですが、Aに関して、
「DLL 側で提供した Form あるいはクラスにて、その変数を「プロパティ」として公開」の部分を調べているのですが、
DLL画面側でどのように定義すれば、EXE側で参照が行えるのか、がよくわからない状態です。
大変お手数ではありますが、ご教授いただければと思います。
引用返信 編集キー/
■94370 / inTopicNo.4)  Re[3]: 作成したDLLアプリケーションの呼出し
□投稿者/ VB初心者 (4回)-(2020/04/06(Mon) 18:07:15)
No94369 (VB初心者 さん) に返信
> ■No94368 (魔界の仮面弁士 さん) に返信
>>■No94367 (VB初心者 さん) に返信
> >>@作成したDLLは呼出元のアプリケーションから参照設定で登録行う形でよいか
>>
>>はい、そのような形となります。
>>たとえば、WinForms ではなくコンソール アプリケーションなプロジェクトから
>>  System.Windows.Forms.MessageBox.Show("Hello")
>>を実行する場合、コンソール アプリケーションのプロジェクトに対して、
>>System.Windows.Forms.dll を参照設定に加える必要がありますが、それと同じです。
>>
>>
> >>A呼出元でDLL内に設定した変数を参照して値をセット可能か
>>
>>できますが、設計上好ましくありません。
>>
>>外部から変数を直接読み書きするのではなく、DLL 側で提供した Form あるいはクラスにて、
>>その変数を「プロパティ」として公開するようにします。
>>
>>あるいはコンストラクタやメソッドの引数などを通じて値をセットしても良いでしょう。
>>(InputBox や MsgBox 関数も、引数で情報を受け渡す設計になっていますよね)
>>
>>
> >>Bそもそもどのように呼び出せばよいのか
>>
>>画面があるのなら、その DLL には恐らく Form が既にあるでしょうから、
>>それが Public Class であるのなら、参照設定した側からもそのまま呼び出せます。
>> Dim f As New Form1()
>> f.Show()
>>
>>ただし、DLL のプロジェクトのプロパティで、[アプリケーション]タブの
>>[ルート名前空間]が空っぽで無かった場合には、呼び出し側は
>> Dim f As New DLLの名前空間.Form1()
>>のように記述する必要があります。
>
> @Bに関しては問題なさそうですが、Aに関して、
> 「DLL 側で提供した Form あるいはクラスにて、その変数を「プロパティ」として公開」の部分を調べているのですが、
> DLL画面側でどのように定義すれば、EXE側で参照が行えるのか、がよくわからない状態です。
> 大変お手数ではありますが、ご教授いただければと思います。

すみません
いろいろやっていたらうまくいきました。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -