powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GetMenuItemInfo - не возвращает значений
4 сообщений из 4, страница 1 из 1
GetMenuItemInfo - не возвращает значений
    #34118856
beobachter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу проанализировать свойства меню ЛЮБОГО приложения.
Пытаюсь использовать API функцию GetMenuItemInfo. Куски кода примерно такие(на деле разбросаны в разных местах):
*/////////////////////////////////////////////////////////////////////////////////////

#define MF_BYCOMMAND 0x00000000
#define MF_BYPOSITION 0x00000400
#define MF_STRING 0x00000000

DECLARE integer GetMenu IN WIN32API ;
integer hWnd

DECLARE integer GetMenuItemInfo IN WIN32API ;
integer hMenu,;
integer uItem,;
integer fByPosition,;
string @ MENUITEMINFO

DECLARE integer GlobalAlloc IN WIN32API ;
integer uFlags, ;
integer dwBytes

DECLARE integer GlobalFree IN WIN32API ;
integer hGlobal

Структура 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
*!* hbmpItem As Long


cdwTypeData = SPACE(254)
nlendwTypeData = LEN(cdwTypeData )
this.nGlobaldwTypeData = GlobalAlloc(GPTR,nlendwTypeData )
=SYS(2600, this.nGlobaldwTypeData , nlendwTypeData, cdwTypeData )


*MII - переменная, в которой формируем структуру MENUITEMINFO
MII=SPACE(48)
cbSize = 48 && размер структуры 12*4
fMask=0
fType =MF_STRING
fState =0
wID =0
hSubMenu =0
hbmpChecked=0
hbmpUnchecked=0
dwItemData =0
dwTypeData = this.nGlobaldwTypeData
cch = 254
hbmpItem =0

MII = BINTOC(cbSize , '4RS') &&cbSIZE
MII =MII+BINTOC(fMask, '4RS' )
MII =MII+BINTOC(fType , '4RS' )
MII =MII+BINTOC(fState , '4RS' )
MII =MII+BINTOC(wID , '4RS' )
MII =MII+BINTOC(hSubMenu , '4RS' )
MII =MII+BINTOC(hbmpChecked , '4RS' )
MII =MII+BINTOC(hbmpUnchecked , '4RS' )
MII =MII+BINTOC(dwItemData , '4RS' )
MII =MII+BINTOC(dwTypeData , '4RS' )
MII =MII+BINTOC(cch , '4RS' )
MII =MII+BINTOC(hbmpItem , '4RS' )


**get the handle of the current menu
hMenu = GetMenu(lhWnd)


resMII =GetMenuItemInfo(hMenu ,1 ,MF_BYPOSITION ,@MII)

IF resMII #0

cbSize =CTOBIN(SUBSTR(MII,1,4),'4RS')
fMask=CTOBIN(SUBSTR(MII,5,4),'4RS')
fType =CTOBIN(SUBSTR(MII,9,4),'4RS')
fState =CTOBIN(SUBSTR(MII,13,4),'4RS')
wID =CTOBIN(SUBSTR(MII,17,4),'4RS')
hSubMenu =CTOBIN(SUBSTR(MII,21,4),'4RS')
hbmpChecked =CTOBIN(SUBSTR(MII,25,4),'4RS')
hbmpUnchecked= CTOBIN(SUBSTR(MII,29,4),'4RS')
dwItemData =CTOBIN(SUBSTR(MII,33,4),'4RS')
*nGlobaldwTypeData =STRCONV( (SUBSTR(MII,37,4)),6)

cch =CTOBIN(SUBSTR(MII,41,4),'4RS')
hbmpItem =CTOBIN(SUBSTR(MII,44,4),'4RS')
nGlobaldwTypeData =ALLTRIM(SYS(2600, CTOBIN(SUBSTR(MII,37,4),'4RS'), cch ))

endif


=GlobalFree(this.nGlobaldwTypeData)

*/////////////////////////////////////////////////////////////////////////////////////

Как результат хочу получить наименование пункта меню под номером 1 в переменной nGlobaldwTypeData. Получаю - пустую строку (то, что я положил туда при создании структуры SPACE(254))

Где я ошибаюсь, подскажите?
...
Рейтинг: 0 / 0
GetMenuItemInfo - не возвращает значений
    #34118865
beobachter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
работаю с XP
...
Рейтинг: 0 / 0
GetMenuItemInfo - не возвращает значений
    #34119673
beobachter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не пойму - я некорректно работаю с функцией, структурами в фоксе или какие могут причины быть?
...
Рейтинг: 0 / 0
GetMenuItemInfo - не возвращает значений
    #34122950
beobachter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Цель задачи - инвентаризация меню существующих приложений.
Так вот в ситуации, когда пункты меню формирует пользовательская функция, результат- пустая строка. Понятно, что вопрос непосредственно к фоксу не относится, но может кто прорабатывал вопрос?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GetMenuItemInfo - не возвращает значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]