ActiveX.EXEからよびだし元の変数は利用できるの?

解決


おこじょ番町  2003-07-28 23:52:46  No: 78813

タイトルの通りです。これができたらプログラムは大幅に改善できるのですが・・、今はわざわざDDEを使ったり、ファイルを介したりと大変です。もしできるの
であればどなたか教えて下さい.


魔界の仮面弁士  2003-07-29 04:02:41  No: 78814

どのような動作を期待しているのかが見えないのですが、
データの受け渡しなら、プロパティなり、イベントなりを公開して、
そこでやりとりすれば良いのでは無いでしょうか。


おこじょ番町  2003-07-29 11:02:34  No: 78815

イベントを公開してというのはWith  eventを使ってやろうとしたのです
が、たくさんアウトプロセスを呼ぶので、うまく宣言できず断念しました。
プロパティを公開するというのはそれとは違う方法なのでしょうか?よろしければ
もう少し詳しく教えていただけるとうれしいです。
(やりたい事は、Javaみたいにマルチスレッドでも、メインのプロセスの変数
を扱えるようにしたいのです)


イトウ  2003-07-30 20:28:03  No: 78816

…ActiveX側のプロシージャの引数をByRefにするとか?
参照渡しでするとこんがらかるけれど相手を参照できるはずです。
変数が多い場合は、クラスや定義型にまとめるとかする方法がありますが、
定義型は外部に渡せない気がしますので、オブジェクトを渡すのがいいとおもいます。

ファイト。


おこじょ番町  2003-08-02 00:05:53  No: 78817

イトウさん。ありがとうございます。
イトウさんのおっしゃる方法でやると、Activex側の関数呼び出しでオブ
ジェクトを渡して、関数が呼び出し終わっても、参照は続くのでしょうか?
(C言語のポインタみたいに)、質問ばかりですいませんがお願いします。


イトウ  2003-08-04 22:15:15  No: 78818

返信送れてすいません。
参照は続くはずです。
もし、参照先が気になるのであれば、次のコードを試してください。

'for VB6(or VB5?)
Private Declare Sub MoveMemory Lib "KERNEL32" Alias "RtlMoveMemory" (Dest As Any, Source As Any, ByVal length As Long)

Sub a()
Dim i As Long
Dim u As New StdFont
Dim p As Object
Set p = u

MoveMemory i, p, 4
Debug.Print VarPtr(i), VarPtr(u), VarPtr(p)
Debug.Print i, ObjPtr(u), ObjPtr(p)
End Sub

参照が続いているかどうかを判別するために、
気になるところで目的のオブジェクト型の「参照値」をObjPtrやCopyMemoryで
実験してみてください。

それでは。


おこじょ番町  2003-08-08 00:43:01  No: 78819

本当に申し訳ないのですが、具体的にどんなオブジェクトを渡せばいいのでしょうか?、ただ変数を共有したいだけなのですが、あと、上のコードは何をする物
でしょうか?すいません、あまりAPIとか詳しくなくて。


おこじょ番町  2003-08-08 14:14:56  No: 78820

できました。マジで感動です。ByRefで渡せば参照が続くものなのですね。
せっかくなので、手順を残しておこうと思います。(ネットでこの情報がぜんぜん
なかったし)
1、必要な変数を書いたclsをDLLにする。
2、共有したいプロジェクトでそれぞれ、それを参照設定する。
3、共有したい相手にpublicな関数を書き、クラスを渡して、それを参照できる
ようにする。
public function func(ByRef cls as class1) ←class1はDLLのクラス名
  set tcls=cls
のような感じで、
4、最初にオブジェクトを作った側から、オブジェクトを渡してあげる。
  set a = new class1
  call outexe.func(a)
(outexe)はActivex.exeの中のクラス名
5、あとは、それぞれ好き勝手に、クラスの中の変数を変えれば、参照した他の
プログラムから変数の値を使っても一緒になる。共有できる!!
以上。おこじょ番町奮闘記でした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加