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

投稿時間:2007/06/19(Tue) 10:55
投稿者名:ゆう
Eメール:
URL :
タイトル:
他アプリのメニューを実行する
はじめまして。ゆうと申します。

現在、アプリケーションの設定を補助するプログラムを作成しています。
自アプリより他アプリの設定画面を開き決められた値をテキストボックスに入れて行き設定を保存するような事を考えています。

他アプリのテキストボックスに値を入力したりボタンをクリックする事は出来るのですが、メニューを実行したりツールバーのボタンを実行する方法が判らず困っています。

メニューのハンドルはGetMenu, GetSubMenuで取得できたのですが実行させる方法が判りません。
また、ツールバーのハンドルは取得できるのですがそのボタンのハンドルを取得する方法と実行する方法がわかりません。

メニューの実行もしくはツールバーのボタンの実行のどちらかが出来ればと悩んでいます。
ご存知の方がおられましたらご教授頂ければと思います。
宜しくお願いします。

投稿時間:2007/06/21(Thu) 11:42
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 他アプリのメニューを実行する
アプリケーション といっても色々あるので、やり方も色々あります。

メニューを実行するだけなら、アクティブにしておいてショートカットキーを送れば
実行できるし、子ウィンドウのハンドルを取得して、BM_CLICK を送る方法もあるし
(ここのサンプルNo.231 のように)Win32API FindWindowEx 、SendMessage 等参照

又、Excel や IE なら違った方法もあるだろうし。

投稿時間:2007/06/22(Fri) 18:24
投稿者名:ゆう
Eメール:
URL :
タイトル:
Re^2: 他アプリのメニューを実行する
フォーカスをアクティブにしてと言うのは出来ればやりたく無いのです。
(操作する側に介入される可能性があるので…)

テキストとかCommandボタンならSendMessageでメッセージを送る事で操作はできたのですが、
ウィンドウメニューについてSendMessageを送ることが出来なかったのですが可能なのでしょうか?

例えば、OE(Outlook Express)の [ツール] - [オプション]を実行してオプションウィンドウを
開くとか…
同様にOEのToolBarの[アドレス]ボタンを実行するとかは可能でしょうか?
(ToolBarってハンドルはToolBarで取られていると思うのですが、中に設定されている
ボタン単位にハンドルは取得できるのでしょうか?)

投稿時間:2007/06/22(Fri) 19:44
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 他アプリのメニューを実行する
> フォーカスをアクティブにしてと言うのは出来ればやりたく無いのです。
> (操作する側に介入される可能性があるので…)
具体的にどのような不具合が?


>
> テキストとかCommandボタンならSendMessageでメッセージを送る事で操作はできたのですが、
> ウィンドウメニューについてSendMessageを送ることが出来なかったのですが可能なのでしょうか?

アクティブにしないでもできたのですか?

>
> 例えば、OE(Outlook Express)の [ツール] - [オプション]を実行してオプションウィンドウを
> 開くとか…

http://hanatyan.sakura.ne.jp/vbhlp/SendInput.htm

投稿時間:2007/06/23(Sat) 08:14
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re^3: 他アプリのメニューを実行する

> 例えば、OE(Outlook Express)の [ツール] - [オプション]を実行してオプションウィンドウを
> 開くとか…

 こんな感じで開かないですか

    Dim lngHwndOE As Long
    Dim lngReturnValue As Long
    
    lngHwndOE = FindWindow("Outlook Express Browser Class", vbNullString)
    lngReturnValue = PostMessage(lngHwndOE, WM_COMMAND, &H9D0C&, ByVal 0&)

投稿時間:2007/06/25(Mon) 09:37
投稿者名:ゆう
Eメール:
URL :
タイトル:
Re^4: 他アプリのメニューを実行する
花ちゃんさん、Starfishさんありがとうございました。
解決しました。

メニューに対してSendMessage,PostMessageを送るときのハンドルはメニューのハンドル
で無くウィンドウのハンドルに送るのですね。
ありがとうございました。