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

投稿時間:2007/06/26(Tue) 19:16
投稿者名:ゴン太
Eメール:
URL :
タイトル:
他アプリのボタンのフォーカス移動
初めまして、こんばんは。
初書込みなので少々緊張しております。

只今、他のアプリケーションが表示するメッセージボックスの「いいえ」ボタンを自動で押下
する常駐プログラムを作成しています。
AppActivate とSendKeys を使用して作成しているのですが、「いいえ」ボタンにフォーカスが
ある場合は良いのですが、「いいえ」ボタン以外のボタンにフォーカスがある場合に上手く「
いいえ」ボタンを押下する事ができません。
このような場合に「いいえ」ボタンにフォーカスを移動させる事は出来るのでしょうか?
(ちなみに、ボタンにはショートカットはありません)

解決方法をご存知の方、ご教授よろしくお願い致します。

投稿時間:2007/06/26(Tue) 19:50
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 他アプリのボタンのフォーカス移動
> このような場合に「いいえ」ボタンにフォーカスを移動させる事は出来るのでしょうか?
> (ちなみに、ボタンにはショートカットはありません)
TAB キーを送って見ては。

投稿時間:2007/06/26(Tue) 21:06
投稿者名:ゴン太
Eメール:
URL :
タイトル:
Re^2: 他アプリのボタンのフォーカス移動
> TAB キーを送って見ては。
ご回答ありがとうございます。
TAB キーを送る場合ですが、ボタンのキャプション(今回の場合は「いいえ」)を指定して
送る事はできるのでしょうか?

投稿時間:2007/06/26(Tue) 21:58
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 他アプリのボタンのフォーカス移動
> TAB キーを送る場合ですが、ボタンのキャプション(今回の場合は「いいえ」)を指定して
> 送る事はできるのでしょうか?

指定する事はできません、あるいはボタンのハンドルを取得すればできるかも?

試してみたら、できるようです。

メッセージボックスのウィンドウのハンドルを取得して、その子ウインドウ
(いいえのボタン)を取得する

下記のような感じでできるかと。

    'キャプション名を与えてウインドウのハンドルを取得
    hTargetWindow = FindWindowEx(0, 0, vbNullString, "メッセージボックスのタイトル")
    'クラス名を与えてハンドルを取得する場合
    'hTargetWindow = FindWindowEx(0, 0, "Scicalc", vbNullString)
    If hTargetWindow = 0 Then Exit Sub
    '子ウインドウのハンドルを取得(8のボタン)
    hChildWindow = FindWindowEx(hTargetWindow, 0, vbNullString, "いいえ")
    If hChildWindow = 0 Then Exit Sub
    '子ウインドウをアクティブにする
    lngResult = SendMessage(hChildWindow, WM_ACTIVATE, 1, ByVal 0&)
    '子ウインドウをクリックする
    lngResult = SendMessage(hChildWindow, BM_CLICK, 0, ByVal 0&)

投稿時間:2007/06/27(Wed) 00:01
投稿者名:ゴン太
Eメール:
URL :
タイトル:
Re^4: 他アプリのボタンのフォーカス移動
花ちゃんさん、こんばんは。
ご回答、ありがとうございます。
早速、お教えいただいた方法でやってみたいと思います。

投稿時間:2007/06/27(Wed) 10:18
投稿者名:ゴン太
Eメール:
URL :
タイトル:
Re^4: 他アプリのボタンのフォーカス移動
花ちゃんさん、おはようございます。
タイトルの件ですが、教えていただいた方法で解決いたしました。
今回は、本当にありがとうございました。
また、ご質問する事があるかも知れませんが、その際は宜しくお
願い致します。