tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル子HWNDが存在しない!?
記事No16144
投稿日: 2015/06/12(Fri) 07:03
投稿者通りすがれなかった太陽
いつもお世話になります。知恵をお貸しください。

現在VBAから会社の業務アプリを操作させようとしていますが、HWNDの取得について困っております。
やりたい操作としては業務アプリ内のテキストボックスに値をポストし、OKボタンをクリックするという自動化なのですが、
その業務アプリをwinfo.exeやUIspy.exeで調べてみても親ウィンドウのHWNDやクラス名しか検出されず、
APIのEnumChildwindow関数で全検索しても子ウィンドウのHWNDが出てきません。
これはどうしてもHWNDを取得することは不可能なのでしょうか?

気になる点が一つありますが、この業務アプリは通常のユーザーでの起動ではないように思えます。
例えば、業務アプリから出力したファイルを保存する際に出るコモンダイアログ中において
実際には存在しない『ローカルディスク(C:)』がトップに挙がってきており、
実際に存在するドライブは『ローカルディスク([ユーザー名]上のC:)』としてその他のシステムフォルダー扱いとなっております。
また、IMEも現在IME2010を入れておりますが、IME95(?)時代のような古いデザインのものになっています。
もしかするとこの業務アプリは仮想ユーザーを作成してそこで稼働しているのでしょうか?
(画像が投稿できれば一番伝わりやすいと思いますが…)

この業務アプリをSendkeyで操作することにも失敗していますので、Sendmessageしか方法を知りません。
解決策についてアドバイスを頂けないでしょうか?
どうぞ宜しくお願い致します。

[ツリー表示へ]
タイトルRe: 子HWNDが存在しない!?
記事No16145
投稿日: 2015/06/12(Fri) 09:24
投稿者魔界の仮面弁士
> 現在VBAから

どの VBA でしょうか?
とりあえず、ユーザーの多そうな Excel VBA と仮定して回答します。


> これはどうしてもHWNDを取得することは不可能なのでしょうか?

そもそも、HWND が存在しないのです。

HWND (ウィンドウハンドル)は、その名の通り「ウィンドウ」に対する識別子です。
『ウィンドウレスコントロール』には、ウィンドウハンドルがありません。


MSForms の場合、テキストボックスさえもウィンドウレスです。
(VB6 のテキストボックスはウィンドウですが)
MSForms でウィンドウと呼べるのは、「フォーム」と「リストボックス」、
それに、「(コンボボックスの)ドロップダウンリスト部」ぐらいでしょうか。


> OKボタンをクリックするという自動化なのですが、
であれば、UIAutomation あるいは IAccesible で OK ボタンを取得し、
DoDefaultAction メソッドを呼び出せばクリックできますよ。


> この業務アプリをSendkeyで操作することにも
Sendkey ではなく
SendKeys ですよね。


> 気になる点が一つありますが、この業務アプリは通常のユーザーでの起動ではないように思えます。
MetaFrame/XenApp とか?

[ツリー表示へ]
タイトルRe^2: 子HWNDが存在しない!?
記事No16146
投稿日: 2015/06/15(Mon) 07:06
投稿者通りすがれなかった太陽
ご返信いただき有難うございます。

>とりあえず、ユーザーの多そうな Excel VBA と仮定して回答します。
これは失礼しました。ご予想の通りExcel VBAです。VB6の掲示板への書き込みで恐縮です。
また業務アプリはVBAで作成されたものではありません。外注にて作成されたアプリです。

> 『ウィンドウレスコントロール』には、ウィンドウハンドルがありません。
プログラムを作成した環境で変わるということでしょうか?
プログラミングを専門としている者ではないのでわかりません。

> MSForms の場合、テキストボックスさえもウィンドウレスです。
業務アプリはMSFormsではないかもしれませんが、問題の内容としては同じですね。

> であれば、UIAutomation あるいは IAccesible で OK ボタンを取得し、
> DoDefaultAction メソッドを呼び出せばクリックできますよ。
>
> MetaFrame/XenApp とか?

問題解決のためのヒントをいくつか頂きましたので、調べて挑戦してみたいと思います。
魔界の仮面弁士様、有難うございました。

[ツリー表示へ]
タイトルRe^2: 子HWNDが存在しない!?
記事No16147
投稿日: 2015/06/15(Mon) 07:17
投稿者通りすがれなかった太陽
追記します。

> > 気になる点が一つありますが、この業務アプリは通常のユーザーでの起動ではないように思えます。
> MetaFrame/XenApp とか?

このキーワードで検索したところ、当社の業務アプリ制作社名が出てきましたので間違いなさそうです。
もう少し調べてみたいと思います。
有難うございます!

[ツリー表示へ]