none
別アプリのコントロールの値取得 RRS feed

  • 質問

  • 初めて質問させて頂きます。
    アプリA(新規システム)とアプリB(既存システム)があります。
    アプリAでアプリBのコントロール(テキストボックス、ラベル等)の値を取得したいのですが、
    良い方法がありましたらご教示ください。
    2009年4月12日 10:33

回答

  • 対象のウィンドウによってアプローチが変わるかもしれません。
    基本的にはウィンドウハンドルを取得して、そのウィンドウハンドルを使ってGetWindowTextというAPIを使うものだと思って下さい。

    対象のウィンドウで、コントロールIDが変わらないのであればGetDlgItemを使えばウィンドウハンドルを取得できます。
    コントロールIDが取れない、あるいは毎回変わるようなことがあれば、そのウィンドウ内で目的のコントロールを絞り込む工夫が必要ですが、そのあたりは一概には言えないと思います。(ぱっとは出せないので割愛します)


    但し、対象によっては画面に絵として描画しているために、取得する術がない可能性もあります。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク PikaruCo 2009年4月14日 7:04
    2009年4月13日 14:48
    モデレータ

すべての返信

  • 対象のウィンドウによってアプローチが変わるかもしれません。
    基本的にはウィンドウハンドルを取得して、そのウィンドウハンドルを使ってGetWindowTextというAPIを使うものだと思って下さい。

    対象のウィンドウで、コントロールIDが変わらないのであればGetDlgItemを使えばウィンドウハンドルを取得できます。
    コントロールIDが取れない、あるいは毎回変わるようなことがあれば、そのウィンドウ内で目的のコントロールを絞り込む工夫が必要ですが、そのあたりは一概には言えないと思います。(ぱっとは出せないので割愛します)


    但し、対象によっては画面に絵として描画しているために、取得する術がない可能性もあります。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク PikaruCo 2009年4月14日 7:04
    2009年4月13日 14:48
    モデレータ
  • > アプリAでアプリBのコントロール(テキストボックス、ラベル等)の値を取得したいのですが、
    > 良い方法がありましたらご教示ください。

    アプリAで DB などに値を保存して、アプリBで DB から保存された値を取得するのではダメ
    ですか?
    2009年4月13日 14:49
  • 以下のスレッドが参考になるかもしれません。あとはWCF(昔の.NET Remoting)なんかでもいいかもしれません。

    WinAP間の通信方法は?
    http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/88e37fd4-da4f-4494-b877-2f2aee6c49c8/


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年4月14日 5:24
    モデレータ
  • >Azuleanさん

    参考になりました。
    現在別件で立て込んでしまい、すぐには試せませんがやってみようと思います。
    ご提案ありがとうございました。

    2009年4月14日 7:07
  • >SurferOnWwwさん

    アプリBは手が入れられないのでその方法は使えません。
    また仮に出来たとしても、AはBから照会条件を取得しなければならずこの方法は実現できません。
    ご提案ありがとうございました。
    2009年4月14日 7:09
  • >trapemiyaさん

    WinAP間の通信方法は?
    http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/88e37fd4-da4f-4494-b877-2f2aee6c49c8/

    上記方法ですと、アプリBに手を加えないといけないので、この方法は使えません。
    双方向での通信ではなく、アプリAがアプリBのスレッド内にあるコントロールの情報を取得出来るのがベストと考えております。
    イメージとしては、VisualStudio.Net ツールの 「Spy++」のようにスレッド内のコントロールのプロパティを取得出来ればと思います。
    ご提案ありがとうございました。

    2009年4月14日 7:27