- - PR -
DDE通信
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-26 16:09
VB6のプログラムをC#に書き換えたいと考えています。
ところがVB6はDDE通信のみ対応している古いアプリケーションと テキストボックス経由でDDE通信しています。(下記参照) VB6 TextBox1.LinkTopic = "xxxx" & "|" & "xxxxDDE" TextBox1.LinkItem = "DDESourceBox" TextBox1.LinkMode = vbLinkAutomatic MSDNによると正攻法ではC#(およびVB.NET)はDDE非対応なので無理(リンク先参照) ですが、回避する妙案を探しています。妙案はないでしょうか? Q1. C#にDDE通信機能を追加する方法はありますか? 例えばWindowsFormにDDE通信機能を追加するコントロールなどご存知ですか? Q2. 大部分をC#で記述し、DDE通信部分だけをVB6で記述しゲートウェイの役割を持たせることができないかとも考えています。その場合、C#プロセスとVB6プロセス間の通信をどう実現しますか? | ||||||||
|
投稿日時: 2008-08-26 17:15
.NET から Windows API の中の DDE の関数を呼び出すしかないと思います。Microsoft からは提供していないと思います。 自分でライブラリーを作るのはかなり大変ですが、すでにどなたかが作られたライブラリーとしてはつぎのものがあります。 NDde http://www.codeplex.com/ndde DdeUtils http://www7b.biglobe.ne.jp/~motta/tools.html ほかにも探せばいくつかあるとは思いますが、私もそれほど良くは知りません。 それほどたくさんはないとも思います。よりどりみどりというわけでもないので、ライセンス形態で自分にあったものを見つけるのには苦労するかもしれません。 余談ですが、いまどきまだ DDE を使う数少ないアプリケーションとしては、楽天証券が使っているツール RSS(Realtime Spread Sheet)が有名です。(RDF Site Summary とは関係ありません。) これらの名前で検索するという方法もあります。
VB6 で昔ながらの ActiveX Control として作って、それを C# で使えば良いという手は思いつきます。 | ||||||||
|
投稿日時: 2008-08-31 22:52
ご回答ありがとうございます。
ライブラリとどちらにしようか迷いましたが、 結局ActiveXで対処しました。 余談ですが... やっつけ仕事だったでVirtual PCで開発しました。 こういう時仮想マシンが便利ですね。 | ||||||||
|
投稿日時: 2008-09-06 20:16
ActiveX(VB6)の作成でつまずいてしまいました。
作成方法に問題があると思われます。 質問内容が本題と離れてしまうので、スレを立て直しました。 VB6に関わりが深いことなので、VB研の会議室のほうが適切かと思い、 そちらにけいさいさせていただきました。 ActiveX(VB6)のコンストラクタ http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46310&forum=36&0 | ||||||||
|
投稿日時: 2008-09-06 20:33
追記
C#からVB6で作成したラッパーアプリケーション(EXE)経由で、VB6で作成したActiveXコントロールを一応は呼び出すことはできました。C#アプリとVB6アプリとではファイルで情報伝達しています。 C#アプリ(EXE)→VB6アプリ(EXE)→VB6 ActiveXコントロール(OCX) DDE通信 しかし、これではあまりにもまだるっこしいので、 C#から直接ActiveXコントロールを呼び出そうとすると、 ActiveXのコンストラクタの定義が認識できない問題に直面しました。 C#アプリ(EXE)→VB6 ActiveXコントロール(OCX) DDE通信 | ||||||||
|
投稿日時: 2008-09-07 00:16
C#からActiveXの直接呼出しも解決できました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46310&forum=36&3 ありがとうございました。 |
1