別プログラムのメニュー項目の有効/無効を取得するには?

解決


たうお  2006-05-09 22:27:58  No: 95301

お世話になっております。
VB6SP5を使用しております。

別ソフトを制御するソフトを作っているのですが、コマンドを送る判断に
ある特定のメニュー項目が有効な状態であるか、無効な状態なのかを取得したいのです。

メニューハンドルと、項目のIDの取得までは出来ております。

ファイル(&F)
  →開く
  →名前を付けて保存        ・・・この項目の状態
  →終了
設定(&S)                    ・・・(出来れば)この項目の状態
  →通信設定

GetMenuItemInfo APIのfStateでも状態の変化を取得する事が出来ませんでした・・。

宜しくお願い致します。


K.J.K.  2006-05-10 19:05:56  No: 95302

他プロセスからの呼び出しで上手く行くのかどうかはわかりませんが、
GetMenuItemInfoを用いるときは、あらかじめ、MENUINFO.cbSizeと
fMaskに有効な値を入れる必要がありますが、ここは大丈夫なの
でしょうか?

それでも駄目なのであれば、GetMenuStateを使ってみるとか。


たうお  2006-05-12 01:09:49  No: 95303

アドバイスありがとうございます。
テストしてみましたところ、
----->
Public Const MIIM_CHECKMARKS = &H8  'hbmpCheckedとhbmpUncheckedメンバ
Public Const MIIM_STATE = &H1       'fStateメンバ

Public Const MF_BYCOMMAND = &H0     'メニュー項目のID
----->
    Dim hwnd As Long
    Dim lpmii As MENUITEMINFO

    lpmii.cbSize = Len(lpmii)
    lpmii.fMask = MIIM_STATE
    '関数の実行
    hwnd = GetMenuItemInfo(メニューのハンドル, 項目のID, MF_BYCOMMAND, lpmii)
        →【有効/無効に関わらず】戻り値:hwnd = 0
        →【有効/無効に関わらず】戻り値:lpmii.fState = 0
----->
    hwnd = GetMenuState(メニューのハンドル, 項目のID, MF_BYCOMMAND)
        →【有効/無効に関わらず】戻り値:hwnd = -1

でした・・。
うーん・・・


たうお  2006-05-12 01:10:24  No: 95304

あ、MIIM_CHECKMARKSの宣言は余計でした。


K.J.K.  2006-05-12 17:44:48  No: 95305

では、上記のAPI関数を他プロセスで使って情報を得ることは
おそらくできない、と考えるべきなのでしょう。


たうお  2006-05-15 23:16:06  No: 95306

お返事遅くなりましてすみません。
残念ですが、わかりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加