プロが教えるわが家の防犯対策術!

エクセル2003VBAにて、ppostmessageでメニューボタンを押したいのですが、
メニューボタンのハンドルを取得する方法がわかりません。

SendKeys "%(F)", Trueで、他のアプリケーションを動かしていたのですが、
時々実行されないままプログラムが次へ進んでしまいます。

postmessageでメニューのファイルを押したいのですが、ハンドルの取得方法がわかりません。
どなたか教えていただけませんでしょうか。
お手数をおかけしますがどうぞよろしくお願いします。
'ボタンのハンドルを取得して押す
Dim hButton As Long
'hButton = GetDlgItem(hwindow, 0)
hButton = FindWindowExA(hwindow, vbNull, vbNullString, "ファイル(&F)")
MsgBox hButton
'Call PostMessageA(hButton, WM_LBUTTONDOWN, MK_LBUTTON, 0)
'Call PostMessageA(hButton, WM_LBUTTONUP, MK_LBUTTON, 0)
コードをどう修正すればうまくいくのでしょうか。

A 回答 (1件)

このご質問は、OkWaveのOfficeカテゴリに2ch のような挑戦的な題材を書いているような気がしてきます。

あえて他の初歩的な方法でできるのにに、なぜ、できるか分からないような難しい方法で、出来ないから教えてくれ、というのでは誰も回答しません。

それに、何をしたいのか、目的が書かれていません。

>hButton = FindWindowExA(hwindow, vbNull, vbNullString, "ファイル(&F)")
これで取れるわけがないです。C++やVB6に入っている spy.exe などお持ちではないのですか? ツールで調べれば、ハンドルが取れるか一目瞭然だと思います。

Win32APIが使いこなせているなら分かるはずですし、VBAが分かるなら、そのようなコードは使いません。Excelでマクロにしたいなら、CommandBars から、取り出すしかありません。これは、初歩的なものだと思います。

Set Cmdb = Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)")
ここから、命令を取り出します。

それが嫌なら、外部ツール(キーボードマクロ)を用いるしかありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
「spy++のしょぼいの」というフリーソフトをインストールしました。
クラス名・キャプションがわかり、ウィンドウハンドルを取得することができました。
助かりました。

お礼日時:2010/11/02 10:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!