• ベストアンサー

c言語で作成したデータをwindowsのアプリ(VB6で作成)で読み取りたいのですが

VBで作成したアプリの中の変数の値をC言語で作成したプログラムで参照したり、C言語の変数(メモリの値)をVBのアプリで参照したいのですが、どのようにすればいいのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

>このAのプロパティをCコンパイラ の「LSI C-86試食版」で作成したプログラムBから読み書きしたいのです。この方法を教えていただけませんか。 C言語からでもCOMを利用することは可能ですが、LSI CはもともとMS-DOSやコンソール用のアプリケーション開発ソフトなので、もしかするとCOMの利用はできないかもしれません(私自身LSI-Cの知識がないのでわかりません)。 VCなどwindowsプログラミングに対応しているものの方がいいかもしれません。 VCでは #import "progid:aaa.bbb.1" no_namespace, named_guids void Test() {  long n;  Ibbb* pBbb;  CoInitialize(NULL);  CoCreateInstance(&CLSID_bbb,NULL,CLSCTX_INPROC, &IID_Ibbb,(void **)&pBbb);  n = pBbb->lpVtbl->プロパティ;  pBbb->lpVtbl->Release(pBbb);  CoUninitialize(); } のようにします(もしかするともう少し修正する必要があるかもしれません)。このときaaaやbbbはCOMによって異なります。LSI-Cでは#importは動かないと思いますので自分でCOM用のヘッダーを書く必要があります。またCoInitializeのようなWindowsAPIもPlatformSDKからヘッダーを持ってくるなどして使えるようにする必要があると思います。

miya2003
質問者

お礼

ご回答ありがとうございます。 方法はあるんですね。VCは初めてですので、勉強してみます。ありがとうございました。

miya2003
質問者

補足

C++ の勉強を始めています。結果が報告できなくて残念ですが、締切期限がきましたので締め切らせていただきます。ありがとうございました。

その他の回答 (2)

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.3

LSI-C86はMS-DOS用ですので、Win16やWin32のプログラムを作成できません。MS-DOSでいうcomモデルとはCP/M86互換モードのことで、exeではなく、comの拡張子を持ったプログラムのことです。また、LSI-C86試食版はスモールモデル(exeですがcomと同じ64kB制限があります)専用です。 以下に無償版のWin32対応Cコンパイラを挙げておきます。 ボーランド Borland C++ Compiler 5.5 http://www.borland.co.jp/cppbuilder/freecompiler/ マイクロソフト .NET Framework SDK Version 1.1 http://www.microsoft.com/downloads/details.aspx?FamilyId=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=ja 以下は英語リソースです。 Microsoft Microsoft Visual C++ Toolkit 2003 http://msdn.microsoft.com/visualc/vctoolkit2003/ SciTech Software Open Watcom 1.3 http://www.openwatcom.com/ この中でOpen Watcomだけが統合環境がついています。それ以外はコンパイラのみです。

miya2003
質問者

お礼

貴重な情報をありがとうございます。 LSI-C86しか使用したことがありませんでしたし,教えていただいたことは何も知りませんでした。早速,調べてみます。ありがとうございました。

miya2003
質問者

補足

Borland C++ Compiler 5.5をダウンロードし勉強を始めています。結果が報告できなくて残念ですが、締切期限がきましたので締め切らせていただきます。ありがとうございました。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

A.あるプログラム B.あるプログラムの変数を参照したいプログラム としたときにAが変数を外部から参照できるように作っていないといけません。これはAやBがVBやVCのどちらで開発されていても同じです。 ※実際にはAに参照できるようにするための機能がなくても、メモリ内容を覗き見て参照してしまうことも可能ですが、普通はAに外部から参照するための機能を作っておきます。 参照できるようにするための方法はたくさんあります。 1番簡単なのはAが変数の値をファイルやレジストリに書き出して、Bはその書き出されたファイルやレジストリを読み出す、という方法です。 最近の質問 http://okweb.jp/kotaeru.php3?q=1251865 にあるCreateFileMappingのような方法を使ってもいいです。この質問での場合は4バイト程度のメモリ(変数)を共有しています。 AがDLLのように関数をエクスポートしてもいいと思います。関数の戻り値としてデータを返せばいいわけです。 1番スマート(だけど1番面倒)なのはAにインターフェースを公開させる(COMとして作る)方法です。BはVBScriptで作られていてもAのデータを簡単に参照できるほど汎用性が高いです。 ほかにも色々な方法がありますが、どれも一長一短です。データを参照する目的などを考えて方法を選ぶといいと思います。

miya2003
質問者

お礼

ご回答ありがとうございました。 実は、ACTIVEX作成の本を購入してきまして、AのプログラムはCOMとして作成しました。 このAのプロパティをCコンパイラ の「LSI C-86試食版」で作成したプログラムBから読み書きしたいのです。この方法を教えていただけませんか。 一応、COMを作りましたが,COMについての知識は余りありませんのでよろしくお願いします。

関連するQ&A

  • VBからFortran、Cを呼び出すことはできますか。

    PCフォートラン・C言語で作成したアプリケーションがあるのですが、VBのユーザーインターフェース機能を生かして、対話型のプログラムにしたいと思います。 VBとフォートラン・C言語をリンクして、できれば変数の受け渡しもできるようなプログラム(メニューをVBで作成して、処理をフォートランに渡す)をイメージしています。 上記のような処理を経験された方、又は知識を有しておられる方がおられましたら、よろしくお願い致します。

  • VB6.0とC言語

    VB6.0とC言語 見習い中の見習いプログラマーです。 VB.NETのコードを読めるくらいしか知らないのですが、 外注のVB6.0とC言語を使用した仕事をしています。 プログラムの世界は、こういうものなのですよね。。。 自分の知識の無さに、気持ちがめいってます。。。

  • エクセルのセルからVB等で作成したアプリの変数を参照するには

    エクセルのセルからVB等で作成したアプリの変数を参照する方法がわかりません。 また、そのアプリで変数が更新された際に自動的にセルの内容が変わるといった仕組みは無いでしょうか。 楽天証券のリアルタイムスプレッドシートは、セルで"=app|code!field"のような形で情報を参照できるので、何らかの方法があると思っています。 また、上記の式をエクセルに入力すると、「APP.EXEを起動しますか」といったメッセージが出ますので、参照はできるのだと思います。 VBのアプリからセルをいじると、パフォーマンスが悪く困っています。 アプリはVBにはこだわっておりません。 また、ヒントとなるような情報だけでもかまいません。 よろしくお願いします。

  • VBとC言語について

    こんにちは。 VBとC言語は参考書などで自宅で独学で勉強したら自由にプログラムを書けますか?。 独学で勉強したら何年もかかる気がします。 独学の一年で自由に書けるようになりますか?。

  • Accessで作ったアプリをC言語でつくり直し?

    現状、Access2003で業務用のアプリケーションを 作成しています。 しかし、上司から、C言語で作りかえるよう指示が ありました。 理由は、パソコン環境に依存しないから で、私もそれほどC言語に詳しくのないので 調べて見ましたが、 テキストベースのプログラムの書き方や変数の宣言 などの情報はあるのですが、 じゃあ、Accessで作った入力用のフォームとか 入力した内容を印刷するための帳票(レポート)などは どのようにしてC言語で実現するのかが、わかりません。 C言語でGUI環境を作り出し、なおかつデータベース機能を 持たせることはできるのでしょうか

  • C言語の知識をVBに活かすには?

    C言語の基礎を勉強しました。 さぁ、これで、プログラミング言語の基礎はできたから他の言語でも意外とすんなり取り組めるはず・・・・(希望) と思ったのですが、ExcelでのVBすらうまくできません。 データベースから引っ張ってきて、対象のデータをSQLのように別表にするプログラムを書く、というようなことをしたいのですが、これもできず。 別言語を習得するときにコツっところがあれば教えてほしいです。 また、C言語でプログラムをかけることを求職時のウリにしたいのですが、アピールとなるようなプログラムの問題を出してほしい、もしくはそんなHPがあれば教えてほしいです。 よろしくお願い致します。

  • C言語のStatic変数について

    現在、C言語の勉強しながらゲームプログラムにチャレンジしています。 二つの関数で利用する変数を作りたかったので、Static宣言された変数を容易しました。 ですが、この変数、一度処理が終わると当面使わない変数なのです。 (ただし、処理途中は何度も呼び出されるので値は保持しなければいけません) よって、メモリ上に延々居座られるのが邪魔に思えて仕方ありません。 実際、大したことないだろうとは思うのですが。 このStaticで宣言された変数を、自分の好きなタイミングでメモリ上から解放するような処理はできませんか? もしくはメモリ上に居座ることのない処理の仕方などありましたら、 考え方を教えていただけるとうれしいです。よろしくお願いします。

  • C言語(またはC++言語)についての質問です。

    C言語(またはC++言語)において、以下の変数x、ポインタ変数(*p,**pp, ***ppp)のメモリ上のイメージを記述しなさい。 int x, *p, **pp, ***ppp; x=10; p=&x; pp=&p; pppp=&pp; という問題なのですが、わからなくて困っています。 このプログラムはどのようなものなのでしょうか。 詳しい回答をよろしくお願いします。

  • C++開発アプリとDLLとで同じ領域のデータを共有するには

    お世話になっています。 ただいまC++でアプリ開発をしていますが、C++で作成したアプリと、DLLとで同じ領域のデータを共有して使いたいと思っています。 C++で外部で宣言した変数(構造体)のデータをDLLで参照して、内容を変更、C++アプリで変更した内容を参照して処理すると言う具合です。 DLLの方は既に作成済みで、引数としてC++アプリのデータを渡すことが出来ないので、どうにかしてC++で宣言した変数を参照したいのですが。 よろしくお願いします。

  • VB.NETからC言語への乗りかえについて。

    プログラミング未経験者のものです。 これから、新たにプログラム言語を習得したいと考えています。 そこで、数ある言語の中から、選択に迷ったのですが、奥も深くて比較的入り口も入りやすいというVB.NETからはじめようかとも考えました。 しかし、将来的には、高い仕様を具えるC/C++言語を習得してみたいとも考えています。 この場合、VBからCに移行するというのは、かなりたいへんなことなのでしょうか。よく聞く話なのですが、どれかひとつの言語を習得すれば、プログラムの考え方はどれも似ているので、他の言語を学ぶときにもそれほどの障壁はないという話も聞きますが、ほんとうでしょうか。実際には、かなり、文法上の相違があって、覚えるのはそうとうたいへんなのではないでしょうか。 まあ、英語を習得したあと、スペイン語を習得するほど困難ではないかもしれませんが。 また、多少本を読んで独学しているものの、演算子、条件判断、繰り返し、配列、ファイルの入出力など、基本的な作り方なども知ったのですが、プログラミングの難しさってどういうところにありますか。 たいていの人は難しくて脱落してしまうのでしょうか。 年齢的にも30代で、仕事をしながらですので、時間的なゆとりもあまりありません。 ずっとVBだけでいいのならともかく、後々、CやC++もマスターしてみたいと思っていますので、それなら、最初からCをやったほうがいいのでしょうか。 でも、VBはVBでフォームも簡単に描けますし、コントロールを貼り付けるという操作はたいへんわかりやすく、初心者がプログラミングの楽しさを味わうのにはうってつけの言語だとも思います。 ただ、VBにあまりどっぷりつかっても、Cを一から勉強する際、Cの文法に違和感を感じしてしまい、挫折してしまうかもしれません。 それならいっそのこと、初めからCをやったほうがいいのかなとも思うわけです。 また、このふたつの言語の特徴をいいますと、どのようなことがいえるでしょうか。機能的なこととか、将来性とか、いろんな角度からでも結構です。 VB.NETはOSや、ネットワークに強いとも聞いています。 でも、Cは、ポインタなどもありますし、CPU・ハードを直接操作できる強みもあるようですね。ハードに関与する場面というのがどれほどあるのかはよくわかりませんが。 どなたか、もしアドバイスを頂けましたらありがたく感謝致します。

専門家に質問してみよう