Часто задаваемые вопросы и ответы по программированию на VB
Последнее обновление: 28.03.03
Q: Как изменить меню в каком-либо не своем приложении?
А (ego): Приведенный далее код пункт "Создать" из меню "Файл" делает затененным, а пункт "Вставить" из меню "Правка"
удаляется.
Option Explicit
Private Const MF_GRAYED = &H1&
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal _
wEnable As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Declare Function FlashWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As Any, _
ByVal lpWindowName As Any) As Long
Private Sub Command1_Click()
Dim hwnd&, hMenu&, hSubMenu&, hMenuItem&
hwnd = FindWindow("Notepad", CLng(0))
If hwnd = 0 Then
MsgBox "Запустите NotePad!", vbExclamation
Else
hMenu = GetMenu(hwnd)
hSubMenu = GetSubMenu(hMenu, 0)
hMenuItem = GetMenuItemID(hSubMenu, 0)
EnableMenuItem hMenu, hMenuItem, MF_GRAYED
hSubMenu = GetSubMenu(hMenu, 1)
hMenuItem = GetMenuItemID(hSubMenu, 4)
DeleteMenu hMenu, hMenuItem, 0
FlashWindow hwnd, 1
Sleep 500
FlashWindow hwnd, 0
End If
End Sub
FAQ составлен по материалам Форума на Исходниках.Ру.
Составитель:
Crew
Copyright © 2002 by Sources.ru. All rights
reserved.