Ver Mensaje Individual
  #38 (permalink)  
Antiguo 02/06/2004, 02:06
Avatar de Eternal Idol
Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 9 meses
Puntos: 74
Aca tenes una version sin GetMenuString:

Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
'Private Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpmii As MENUITEMINFO) As Long
Private Const WM_COMMAND = &H111
Private Const MF_BYPOSITION = &H400&
Private Const MIIM_STRING = &H40
Private Const MFT_STRING = &H0
Private Const MIIM_TYPE = &H10

Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Public Ventana As Long
Public hMenu As Long
Private Sub Command1_Click()
Dim SubMenu As Long
Dim y As Long
Dim Item As Long

For y = 0 To List1.ListCount - 1
If List1.Selected(y) = True Then
SubMenu = GetSubMenu(hMenu, y)
End If
Next

For y = 0 To List2.ListCount - 1
If List2.Selected(y) = True Then

Item = GetMenuItemID(SubMenu, y)
SendMessage Ventana, WM_COMMAND, Item, 0
End If
Next
End Sub

Private Sub Form_Load()
Dim Total As Long
Dim MII As MENUITEMINFO
Shell "notepad", 1
Ventana = GetForegroundWindow
hMenu = GetMenu(Ventana)
Total = GetMenuItemCount(hMenu)
Dim X As Long
For X = 0 To Total - 1
'Dim buff As String
'buff = Space(256)
MII.cbSize = Len(MII)
MII.fMask = MIIM_TYPE
MII.fType = MFT_STRING
'GetMenuString hMenu, X, buff, Len(buff), MF_BYPOSITION
MII.dwTypeData = Space(512)
MII.cch = Len(MII.dwTypeData)
GetMenuItemInfo hMenu, X, True, MII
'List1.AddItem buff
List1.AddItem MII.dwTypeData
Next
End Sub

Private Sub List1_Click()
List2.Clear
Dim SubMenu As Long
Dim y As Long
Dim Total As Long
Dim MII As MENUITEMINFO

For y = 0 To List1.ListCount - 1
If List1.Selected(y) = True Then
SubMenu = GetSubMenu(hMenu, y)
End If
Next
Total = GetMenuItemCount(SubMenu)
For y = 0 To Total - 1
'Dim buff As String
'buff = Space(256)
MII.cbSize = Len(MII)
MII.fMask = MIIM_TYPE
MII.fType = MFT_STRING
'GetMenuString SubMenu, y, buff, Len(buff), MF_BYPOSITION
MII.dwTypeData = Space(512)
MII.cch = Len(MII.dwTypeData)
GetMenuItemInfo SubMenu, y, True, MII
List2.AddItem MII.dwTypeData
Next
End Sub
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO