[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/12/20(Tue) 18:32
投稿者名:ちり
Eメール:
URL :
タイトル:
他アプリのオブジェクトの所得
 他アプリのMSHFlexGridWndClassのオブジェクトを所得したいのですが、
vbで可能なのでしょうか?


vb内であれば、
    Dim mshFG As MSHFlexGrid
    Set mshFG = MSHFlexGrid1
    MsgBox mshFG.TextMatrix(1, 1)
とすれば、(1,1)の値を所得できるのですが、他アプリの場合は、
2行目をどのように処理して良いのか分かりませんでした。


    Dim mshFG As Object
    Set mshFG = GetObject("C:\aaa.exe")
と、他アプリを実行しても、
実行時エラー '432':

オートメーションの操作中にファイル名またはクラス名を見つけられませんでした。
と表示されて、所得できませんでした。

また、
    Set mshFG = GetObject(, "MSHFlexGridWndClass")
も同様にエラーが発生してダメでした。


    r = SendMessage(tgt_hWnd, WM_GETTEXTLENGTH, 0&, 0&)
    r = SendMessage(tgt_hWnd, WM_GETTEXT, tmpR, ByVal tgt_Caption)
としましたが、MSHFlexGridWndClassのcaptionは""なので所得できませんでした。


MSHFlexGridオブジェクトを所得して、mshFG.TextMatrix(1, 1)でセルの内容を所得する。
もしくは別の方法でMSHFlexGridWndClassの任意のセルの値の所得出来れば
目的は達成できます。なにか良い方法があればよろしくお願いします。


winXP,vb6(SP5)

投稿時間:2005/12/21(Wed) 09:23
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 他アプリのオブジェクトの取得
> MSHFlexGridオブジェクトを所得して、mshFG.TextMatrix(1, 1)でセルの内容を所得する。
> もしくは別の方法でMSHFlexGridWndClassの任意のセルの値の所得出来れば
> 目的は達成できます。なにか良い方法があればよろしくお願いします。

私の知る限りでは、簡単な事では取得(所得ではない)出来ないでしょうね。
それより、表示しているデータファイルを取得した方がいいのでは。
又は、そのMSHFlexGridのソフト事態にそのような処理を組み込めば可能でしょうが。

又、なぜそのような処理が必要なのですか、貴方が考えている方法以外でも実現できる
方法があるかも知れません。

投稿時間:2005/12/21(Wed) 09:45
投稿者名:ちり
Eメール:
URL :
タイトル:
Re^2: 他アプリのオブジェクトの取得
レスありがとうございます。

> 私の知る限りでは、簡単な事では取得(所得ではない)出来ないでしょうね。
そうですか。簡単ではないですか。ということは難しいけど出来るかもしれない
ということですね。がんばって探してみます。

> それより、表示しているデータファイルを取得した方がいいのでは。
> 又は、そのMSHFlexGridのソフト事態にそのような処理を組み込めば可能でしょうが。
自作の別アプリならば、データベースを共有するとか、通信させるとかの方法で、
データのやりとりは可能ですが、自作アプリではないので処理を組み込むことは不可能なのです。

そのアプリに表示してある表のデータがまるごと欲しかったのですが、
コピーペースト等の機能がなかったので、オブジェクトの収得か、
SendMessageによるテキストの所得を試みたのですが無理でしたので
他の方法のヒントが欲しかったので書き込みました。

もう少し調べてみて、うまく行ったら報告します。
ありがとうございました。