自作ActiveXのメンバ変数にアクセスするには – プログラミング – Home

自作ActiveXのメンバ変数にアクセ...
 
通知
すべてクリア

[解決済] 自作ActiveXのメンバ変数にアクセスするには


タフガイ
 タフガイ
(@タフガイ)
ゲスト
結合: 19年前
投稿: 30
Topic starter  

VC++6.0でActiveXを作成、同じくEXEを作成しActiveXを呼び出しています。

VCでのActiveXに関するHP等が非常に少なく、四苦八苦しながら作成しているのですが
EXEからActiveXのメンバ変数にアクセスするにはどうしたらよいのでしょうか?

クラスウィザードのオートメーションからメソッドを追加してメンバ変数に
値をセットしたり値を取得する事は出来たのですが
仕様としては直接やりとりするActiveXを作成しなければなりません。

int i = ActiveX.aaa

のような感じでプロパティ値を取ってくるような感じにしたいのですが
オートメーションからプロパティの追加をしてもEXE側から参照ができません。

ご存知の方がいらしたらよろしくお願いします。


引用未解決
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

> オートメーションからプロパティの追加をしてもEXE側から参照ができません。

この部分をもう少し詳しく。
どのように追加したのか、参照できないとはどういうことか。
できればコードも載せた方が良いでしょう。


返信引用
タフガイ
 タフガイ
(@タフガイ)
ゲスト
結合: 19年前
投稿: 30
Topic starter  

ありがとうございます。

実際のコードはうまく動かないので、現状は消しているのですが

オートメーションのプロパティの追加からインプリメンテーションをメンバ変数を選択し
外部名:aaa
タイプ:short
変数名:m_aaa

となっています。

これを呼出EXEから
ActiveX.aaa
という形で呼び出し・アクセスしたいのですが、うまくいきません。

このような説明で理解して頂けるでしょうか。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

VC++ 6.0が手元に無いので推測ですが、ActiveX.get_aaa(); ではどうでしょう?


返信引用
タフガイ
 タフガイ
(@タフガイ)
ゲスト
結合: 19年前
投稿: 30
Topic starter  

シャノンさん、ありがとうございます。

おっしゃる方法でやってみると
ActiveX.GetAaa();
のような形でアクセスできました。
なぜかAaaの様に大文字に変わっていました。

VC6.0からでは直接
ActiveX.aaa
のような形ではアクセスできないのでしょうか?

実際にActiveXを使用するEXEの開発環境はC#なのですが、そちらでは可能なのでしょうか?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

VCでやる場合は、VBでやるようなアクセスはできないと思います。
プログラム上から呼ぶ場合は、ActiveXを扱う為のラッパークラスが
自動的に作成されてそれを通して行なっていると思うのですが、
そのラッパークラスにそのようなメンバー変数は定義されていないと思います。

これはそういうものだと考えた方が良いと思います。
C#に関してはやった事がないので良く分からないです。
VBと同じような扱いが出来るなら出来てもおかしくないとは思いますけれど。
ちなみにC#の質問は掲示板が別に用意されているのでそちらでした方がよろしいかと。


返信引用
タフガイ
 タフガイ
(@タフガイ)
ゲスト
結合: 19年前
投稿: 30
Topic starter  

ラッパークラスというのは初めて知りました。
後ほど調べておきます。

やはりVC++では無理っぽいですね。
考えてみれば、通常のコントロールにしても基本的には関数でアクセスしていますし。

関数を使ってでもプロパティにアクセスできるようになっただけでも、大分テストが楽に
なりました。

後ほどC#掲示板で質問してみようと思います。

ありがとうございました。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

実際はC#で使うということですから余談ですけど。

うろ覚えですが
VCで
#importで
IDLを元にdeclspec propertyを付けたCOM(ActiveX)オートメーションの
ラッパークラスを作成していれば

ソースに
obj.aaa = obj.bbb;
と書くと
obj.SetAaa(obj.GetBbb());
としてコンパイルできるようになるんだけど

ActiveXオートメーションを作るほうでの
『プロパティの追加』の仕組みが違うのかな?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました