お世話になっております。
VB6SP5を使用しております。
別ソフトを制御するソフトを作っているのですが、コマンドを送る判断に
ある特定のメニュー項目が有効な状態であるか、無効な状態なのかを取得したいのです。
メニューハンドルと、項目のIDの取得までは出来ております。
ファイル(&F)
→開く
→名前を付けて保存 ・・・この項目の状態
→終了
設定(&S) ・・・(出来れば)この項目の状態
→通信設定
GetMenuItemInfo APIのfStateでも状態の変化を取得する事が出来ませんでした・・。
宜しくお願い致します。
他プロセスからの呼び出しで上手く行くのかどうかはわかりませんが、
GetMenuItemInfoを用いるときは、あらかじめ、MENUINFO.cbSizeと
fMaskに有効な値を入れる必要がありますが、ここは大丈夫なの
でしょうか?
それでも駄目なのであれば、GetMenuStateを使ってみるとか。
アドバイスありがとうございます。
テストしてみましたところ、
----->
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
でした・・。
うーん・・・
あ、MIIM_CHECKMARKSの宣言は余計でした。
では、上記のAPI関数を他プロセスで使って情報を得ることは
おそらくできない、と考えるべきなのでしょう。
お返事遅くなりましてすみません。
残念ですが、わかりました。
ありがとうございました。
ツイート | ![]() |