• ベストアンサー

他アプリの操作(メニューバーの矢印)

現在、VB6.0を使用して市販のアプリケーションを操作するソフトを作成しております。 その市販のソフトで、メニューバーの操作をしたいのですが、通常メニューバーの項目については GetMenuやGetSubMenuやGetMenuItemCountなどのAPIを使用して操作できる所までは出来たのですがメニューの中に階層がある場合 (※メニューの項目で階層に分かれてて右端に▲が表示されている) の操作をどの様にしたらいいのかが判らず困っております。 何かいい方法があればご教示下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「GetSubMenuで取得したサブメニューのハンドルを使って、更にGetSubMenu」でサブメニューのメニューハンドルが取得できませんか? Dim hMenu As Long hMenu = GetMenu(hWnd) Dim hSubMenu As Long hSubMenu = GetSubMenu(hMenu, 1) Dim hSubSubMenu As Long hSubSubMenu = GetSubMenu(hSubMenu, 2)

Simanohito
質問者

お礼

ご回答ありがとうございます。 確認してみましたがサブメニューのハンドルは取得できず戻り値に0が返ってきました。 やり方がよくないのでしょうか?

Simanohito
質問者

補足

大変申し訳ございません。 再度確認してみましたところ、GetSubMenuの第2引数の指定を 間違えておりました。 ご教示頂いた内容で取得できる事が出来ました。 ありがとうございます。

関連するQ&A

  • 他アプリの操作(メニューバー)

    市販されているアプリケーションを自分で作成しているソフトで操作したいのですが、どの様に制御したらいいのか判りません。プログラムはVB6.0で作成しております。 したい事は他のアプリケーションでメニューバーの中の項目の 印刷項目を選択したいのですが、メニューバーのハンドルを取得 出来ず困っております。 そもそもメニューバーのハンドルって取得できるのでしょうか?

  • EXCELのメニュー操作アプリ(C#)

    アプリ作成で悩んでいます。 【やりたいこと】   EXCELを開くと、左上に[ファイル(F)],[編集(E)],[表示(V)]...   と並んでいるメニューがあり、   この中で[表示(V)]-[ツールバー(T)]を選択すると、   いくつかの項目にチェックが付いていると思います。   ※人によっては何もチェックが無い状態もあると思いますが・・・   ここで、私が作成したいアプリは、    「チェックされている箇所を判別して、         指定の箇所にチェックがなければ              指定の箇所にチェックを入れる」   です。 【試した方法】   通常のメモ帳や電卓等のメニューについては、   API(GetMenu、GetSubMenu、GetMenuItemInfo、SetMenuItemInfo等)   を用いて上記を実現できましたが、   EXCELはメニューの形式が異なるためなのか   GetMenuでウィンドウハンドルの取得が出来ませんでした。 下記はメモ帳のステータスバーチェック状態を調べて   チェックが無い場合にチェックするサンプルです。   EXCELのウィンドウハンドルからGetMenuを呼び出しても   メニューのウィンドウハンドルを取得することが   できませんでした。 //============================================== //フォームに紐づくメニューハンドル取得 //============================================== IntPtr hMenu = GetMenu(hWnd); //============================================== //サブメニューウィンドウハンドル取得 //============================================== IntPtr hSubMenu = GetSubMenu(hWnd,3); //============================================== //メニュー状態取得 //============================================== MENUITEMINFO mif = new MENUITEMINFO(); mif.cbSize = Marshal.SizeOf(typeof(MENUITEMINFO)); mif.fMask = MIIM_STATE; GetMenuItemInfo(hSubMenu,3,true,ref mif) //============================================== //チェック判定 //============================================== if(mif.fState != MFS_CHECKED) {//チェックなしの場合 //=========================== //メニュー状態変更 //=========================== MENUITEMINFO mif = new MENUITEMINFO(); mif.cbSize = Marshal.SizeOf(typeof(MENUITEMINFO)); mif.fMask = MIIM_STATE; mif.fState=MFS_CHECKED; SetMenuItemInfo(hSubMenu,3,true,ref mif) } 【開発言語】   C#(バージョン問わず) 大変困っています。 実現可能/不可能だけでも結構ですので、 もしご存知の方がいらっしゃいましたら ご教授の程、宜しくお願い致します。

  • VBA2003: 自作メニューバーを操作したい

    Application.CommandBars("Worksheet Menu Bar").Controls.Add このメソッドを使って Excelのメニューバーに自作メニューを追加しました。 メニューは階層構造になっています。 Excelのシート名によって、このメニューに定義したサブメニューやコマンドを Enabled = True/False で表示制御したいのですが、その方法がわかりません。 よろしくお願いします。

  • VB.NETでの他アプリケーションのメニュー項目編集方法

    VB.NETでメモ帳の様なアプリケーションのメニュー項目(ファイル⇒開くなど)を 表示しないようにする方法としてはどのようなものがありますでしょうか? 色々調べたところ、Win32APIにて、GetMenuItemInfoやRemoveMenuを 使用して行うのかな?と思っているのですが、他に方法はありますでしょうか? 例えば、.NET Frameworkのクラスを使用するとか。。。 ご存知の方がいらっしゃいましたらご教示願えれば幸いです。 よろしくお願い申し上げます。 以上です。

  • wordのメニューバーが操作できない。

    最近wordのメニューバーが正しく操作しなくなりました。メニューバーのそれぞれの項目(ファイル、編集、表示など)が開かなくなりました。かろうじてユーザー設定からアイコン表示をさせ、使っていますが、項目が開かないので、別保存などができず不便ですし、終了がショットカットでキー操作しないと終了できません。また初期設定すると「タイプ3エラー」がでて、word画面は突然閉じてしまいます。メモリーは768MBを所有しています。そこで再びwordを入れ直してみたのですが、同様の状態のままで改善しません。mac機種はG4でOS9.2でwordのバージョンは2001です。他にもいろんなソフトを入れていますが、そのようなことはありません。システムに何か支障が起きたのでしょうか?ちなみにマシーンにはインターネットを接続しています。macは比較的ウイルスに冒されることはないと聞いていたのですが、ウイルスにあったのでしょうか?予防用にノートンを取り入れていますが。wordは頻繁に使うので、早く解決できればと切望しています。

    • ベストアンサー
    • Mac
  • XChang-Viewerでメニューバーがでない

    現在、作成したPDFファイルをXChang-Viewerで開くとメニューバーがない画面になっており操作上大変不便です。最初はメニューバーに多数の操作欄が出ていたのですが、かたっぱしからチェックマークを入れ機能を止めていたのですが、今はそれらを復活したいのです。右クリックで操作アイコンが出るはずなのですが全く出ません。消えているメニューバーを画面に出すにはどうしたらいいでしょうか。どなたかご教示ください。

  • メニューバーの表示

    Microsoft Accessについての質問です。 アクセスでアプリケーションを作りたいのですが、いろんな人が使用するため操作に制限をかけたいのですが、[メニューバー/ツールバー]を表示・非表示させる方法を教えてください。

  • パワーポイントのメニューバーの編集メニューを復活させる方法

    Microsoft Powerpoint を操作していて、最上部のメニューバーから「編集」メニューを消してしまいました。 (たぶん、alt キーを押しながらメニューをドラッグしてしまったのだと思います) 編集に相当する項目をツールバーとして貼り付けることや、編集メニュー内の各項目(カット・コピー・ペースト)をメニューバーに埋め込むことは可能なのですが、「編集」プルダウンメニューをメニューバー内に再度埋め込む方法がわかりません。 ご存じのかたがおられましたらご教示お願いします。

  • ワードのメニューバー

    ワードで添え状を作成していたら、上部にあったメニューバー(ファイル、編集、表示など)が右端に移動してしまいました。 どうすれば上部に配置できるのですか。

  • 他のアプリケーションのメニューバーを制御したい。困ってます。

    他のアプリケーションの機能にアクセスする為のプログラミングをしています。 構造は単純で ・あるアプリケーションをアクティブにする。 ・メニューバーのキーコードをSendInputで送信する(例えばAlt→F) ・メニューバーからアクセスを実行する。 ですが、Lunascape4Liteやエクスプローラーの二階層になるメニューになるとそこで止まってしまいます。例えば、 エクスプローラーで 表示(V)→ツールバー(T)→ユーザー設定(C) でユーザー設定(C)のダイアログは表示されず、標準のボタン(S)で止まってしまいます。これはSendInputの問題なんでしょうか?回答お願いします。 ソースコードはこちらです http://www.interq.or.jp/dragon/crw/Lunascape4Exporthtml.lzh OSはWinodwsXPでSP2です。