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

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

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

Re[5]: dllへのアクセス


(過去ログ 33 を表示中)

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

■16061 / inTopicNo.1)  dllへのアクセス
  
□投稿者/ ロック (8回)-(2008/03/27(Thu) 16:24:09)

分類:[VB.NET/VB2005] 

2008/03/28(Fri) 15:54:15 編集(投稿者)

以下の環境で開発しております。
・アプリ(A)・・・VB.NET
・dll  ・・・VB6

アプリ(A)または別のアプリ(B)内のイベントからdllへのアクセス(dllのデータを変更する)方法はあるのでしょうか?

知恵をお貸し下さい。


引用返信 編集キー/
■16072 / inTopicNo.2)  Re[1]: dllへのアクセス
□投稿者/ やじゅ (269回)-(2008/03/27(Thu) 17:53:46)
No16061 (ロック さん) に返信
> 以下の環境で開発しております。
> ・アプリ(A)・・・VB.NET
> ・dll  ・・・VB6
>
> アプリ(A)または別のアプリ(B)内のイベントからdllへのアクセス(dllのデータを変更する)方法はあるのでしょうか?
>

「.Net VB6 dll」で検索してみてください。
引用返信 編集キー/
■16074 / inTopicNo.3)  Re[1]: dllへのアクセス
□投稿者/ Jitta on the way (69回)-(2008/03/27(Thu) 18:44:10)
No16061 (ロック さん) に返信
> 以下の環境で開発しております。
> ・アプリ(A)・・・VB.NET
> ・dll  ・・・VB6
>
> アプリ(A)または別のアプリ(B)内のイベントからdllへのアクセス(dllのデータを変更する)方法はあるのでしょうか?
>
> 知恵をお貸し下さい。
>
>

DLL の、どんなデータを変更するのでしょう?
DLL を経由して、プロセス間通信もどきをしたいのなら、できません。
(よね?)
引用返信 編集キー/
■16079 / inTopicNo.4)  Re[2]: dllへのアクセス
□投稿者/ 囚人 (291回)-(2008/03/27(Thu) 20:07:08)
>「.Net VB6 dll」で検索してみてください。

それで有効な情報が何か出ますか?


>アプリ(A)または別のアプリ(B)内のイベントからdllへのアクセス(dllのデータを変更する)方法はあるのでしょうか?

>DLL の、どんなデータを変更するのでしょう?
>DLL を経由して、プロセス間通信もどきをしたいのなら、できません。

「DLL のデータ」という概念はないですよ。DLL はあくまで定義(実行可能コード)です。


・プロセスA が Z.DLL をロードしている。
・プロセスB が Z.DLL をロードしている。

この状態で、Z.DLL に定義してある何か(クラスとか構造体とか)を使ってできたデータがプロセスA空間にでき、それをプロセスBと共有したいってことかな?

メモリマップドファイルを使うのが常套かなって気がしますが、.NET なら .NET リモーティングなんてどうでしょうか。
同一マシンの話なので、プロトコルは IPC で(あんまり詳しくないですけど)
http://msdn2.microsoft.com/ja-jp/library/system.runtime.remoting.channels.ipc.aspx

アプリケーション側でそのようなコードを書いてください。DLL が VB6 でできてるとか .NET でできてるとかは今回は関係ないかな。

引用返信 編集キー/
■16081 / inTopicNo.5)  Re[3]: dllへのアクセス
□投稿者/ シャノン (348回)-(2008/03/27(Thu) 20:44:48)
No16079 (囚人 さん) に返信
> 「DLL のデータ」という概念はないですよ。DLL はあくまで定義(実行可能コード)です。

<余談>

実はある。
DLL は関数と同じように、変数をエクスポートできたりする。
ま、VB6 の ActiveX DLL では無理だから関係ない話だけれど。

</余談>
引用返信 編集キー/
■16085 / inTopicNo.6)  Re[4]: dllへのアクセス
□投稿者/ 囚人 (292回)-(2008/03/27(Thu) 21:07:48)
>実はある。
>DLL は関数と同じように、変数をエクスポートできたりする。
>ま、VB6 の ActiveX DLL では無理だから関係ない話だけれど。


いや、そういう意味じゃない。
「データ」はないでしょうと。ファイルが書き換わるわけじゃないし。
引用返信 編集キー/
■16087 / inTopicNo.7)  Re[5]: dllへのアクセス
□投稿者/ 囚人 (293回)-(2008/03/27(Thu) 21:17:38)
あー、共有変数のエクスポートの事かな。だったら、DLL のデータと言ってもいいかも。
引用返信 編集キー/
■16096 / inTopicNo.8)  Re[6]: dllへのアクセス
□投稿者/ Jitta (459回)-(2008/03/27(Thu) 23:15:47)
Jitta さんの Web サイト
No16087 (囚人 さん) に返信
> あー、共有変数のエクスポートの事かな。だったら、DLL のデータと言ってもいいかも。

エクスポートしていない変数。の意でした。
えっと、、、その後に書いている、「プロセス間通信もどき」。
A プロセスから B プロセスへ、DLL を共有して、同じメモリを参照するのかな、と。


結局伝えたかったことは、
状況とやっていることを説明しないと、ウェブの向こうの人には伝わらない、って事。
ええ加減、一般知識化してほしい。。。常識になってくれ、頼む(だれに?)
引用返信 編集キー/
■16106 / inTopicNo.9)  Re[3]: dllへのアクセス
□投稿者/ やじゅ (270回)-(2008/03/28(Fri) 01:36:32)
やじゅ さんの Web サイト
No16079 (囚人 さん) に返信
> >「.Net VB6 dll」で検索してみてください。
>
> それで有効な情報が何か出ますか?
>

VB6で作成したDLLをVB.netで使う方法くらいは
出てきます。
それが質問者の意図しているのと違のか・・・
私の読解力が足りないのかもしれません。
引用返信 編集キー/
■16129 / inTopicNo.10)  Re[4]: dllへのアクセス
□投稿者/ ロック (10回)-(2008/03/28(Fri) 15:52:41)
ご意見くださった方々ありがとうございます。

並びに説明不足ですみません。

DLLのデータですが、DLLは複数クラス(互いにネストしている)で構成されており、その中のメンバの値をアプリが参照してます。

今回はこのメンバをアプリから変更することができるかという意味です。

DLLは通信機能と解析を行っており、アプリはDLL内より呼び出されます。


引用返信 編集キー/
■16157 / inTopicNo.11)  Re[5]: dllへのアクセス
□投稿者/ ネタ好き (4回)-(2008/03/28(Fri) 22:15:16)
2008/03/28(Fri) 23:38:25 編集(投稿者)
2008/03/28(Fri) 23:31:55 編集(投稿者)
2008/03/28(Fri) 22:17:26 編集(投稿者)

No16129 (ロック さん) に返信
> ご意見くださった方々ありがとうございます。
>
> 並びに説明不足ですみません。
>
> DLLのデータですが、DLLは複数クラス(互いにネストしている)で構成されており、その中のメンバの値をアプリが参照してます。
>
> 今回はこのメンバをアプリから変更することができるかという意味です。
>
> DLLは通信機能と解析を行っており、アプリはDLL内より呼び出されます。
>
>

私の間違いかもしれませんが、DLLからアプリを呼び出すというのはちょっとよくないと思います。
アプリがDLL参照するだけにするか、DLLをWinサービスにして、データはDB等に別保管したほうが良いかと思います。
何故データを別にした方が良いのかと申しますと、本当にDLLに持つべきデータなのか疑問に思うからです。
というのも、参照関係が必要以上に複雑になっていると感じるからです。
文章からさっするに、おそらく、通信データに応じてそれに適したアプリを立ち上げるので、
複数起動を防ぐ為に変数を変更したり、ユーザ入力を受け取り処理を判断する為に変数を変更すると思うのですが、
起動するクラスと変数を持つクラスが別々である事などを考慮すると、難しい処理をしておられると思いますので、
設計の見直しをお勧めします。
通信解析用Windowsサービス、各種データ編集用アプリ、アプリ起動用Windowsサービス、通信データストア用DBにしては如何でしょうか?
引用返信 編集キー/
■16158 / inTopicNo.12)  Re[5]: dllへのアクセス
□投稿者/ はつね (545回)-(2008/03/28(Fri) 22:36:43)
No16129 (ロック さん) に返信
> DLLのデータですが、DLLは複数クラス(互いにネストしている)で構成されており、
> その中のメンバの値をアプリが参照してます。
> 今回はこのメンバをアプリから変更することができるかという意味です。
> DLLは通信機能と解析を行っており、アプリはDLL内より呼び出されます。

アプリとDLLがどのような関係になっているか想像できません。
DLLはVB6で作成されているんですから、ActiveXDLLですよね?
だとしたら、VB.NETで作成されたアプリじゃないとしたら、このActiveX DLLはどこから呼ばれているんでしょうか。

ActiveX DLLからVB.NETで作成したアプリを呼び出しているというのが本当だったとすれば、呼び出し先からの復帰値のような感じじゃないと変更はできないと思います。
つまり、「ActiveX DLLが持っている値をアプリから変更」ではなく「アプリからの戻り値をActiveX DLL側で取得して自分が持っている値を変更」というような図式です。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -