Hola me gustaría saber si podriais decirme como guardar la posicion de un menu de una aplicación que ejecutado con una shell. En este programa lo que quiero es poder moverme en las cuatro direcciones por el menu de cualquier aplicacion de windows(trabajo con visual basic 6.0 y con mis queridas APIS). Tal vez os sirva de ayuda saber que guardo las opciones en orden en una listbox(para tener informacion), a ver si con eso podeis ayudarme un poco el codigo es este:
Dim i As Long
Dim j As Long
Dim hMenu As Long
Dim hwnd As Long
Dim subhwnd As Long
Dim ret2 As Long
Dim cont2 As Long
Dim cont As Long
Dim total As Long
total = 0
cont = 0
cont2 = 0
'prueba'
'Dim lngid As Long
Dim lgRet As Long
Dim stBuffer As String * 80
'la prueba hasta aqui'
'Form1.Label5.Caption = hMenu
'obtiene el handle de la ventana activa'
hwnd = GetForegroundWindow()
Form1.Label1.Caption = hwnd
'obtiene el contexto del dispositivo de la ventana activa'
ret2 = GetAsyncKeyState(p.vkCode)
'obtener el handle del menu
hMenu = GetMenu(hwnd)
Form1.Label8.Caption = hMenu
cont = GetMenuItemCount(hMenu)
Form1.Label4.Caption = cont
For i = 0 To cont - 1
'pruebas
lpItemInfo.cbSize = 44
lpItemInfo.dwTypeData = stBuffer & Chr$(0)
lpItemInfo.fType = MF_STRING
lpItemInfo.cch = 80
lpItemInfo.fState = MFS_DEFAULT
lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
'Form1.Text3.Text = lpItemInfo.fMask
lgRet = GetMenuItemInfo(hMenu, i, True, lpItemInfo)
lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
Form1.lst1.AddItem lpItemInfo.dwTypeData
'hasta aqui
subhwnd = GetSubMenu(hMenu, i)
'lngid = GetMenuItemID(hMenu, i)
cont2 = GetMenuItemCount(hMenu)
total = total + cont2
'mas pruebas'
For j = 0 To cont2 - 1
' Mise à niveau de la structure
lpItemInfo.cbSize = 44
lpItemInfo.dwTypeData = stBuffer & Chr$(0)
lpItemInfo.fType = MF_STRING
lpItemInfo.cch = 80
lpItemInfo.fState = MFS_DEFAULT
lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
' Récupère le contenu du sous-menu
lgRet = GetMenuItemInfo(subhwnd, j, True, lpItemInfo)
lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, _
Chr$(0), vbNullString)
' Affiche le menu dans le contrôle ListBox
Form1.lst1.AddItem Space$(8) & lpItemInfo.dwTypeData
Next j
'aqui acaba prueba'
Next i
Form1.Label7.Caption = total
me he ayudado de una api que encontre en esta pàgina francesa:
http://docvb.free.fr/apidetail.php?idapi=11
A ver si alguien puede ayudarme, os doy las gracias de antemano y espero vuestra respuesta.
Un saludo de Alberto.