|
|
|
GetMenuItemInfo - не возвращает значений
|
|||
|---|---|---|---|
|
#18+
Хочу проанализировать свойства меню ЛЮБОГО приложения. Пытаюсь использовать 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)) Где я ошибаюсь, подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 11:48 |
|
||
|
GetMenuItemInfo - не возвращает значений
|
|||
|---|---|---|---|
|
#18+
работаю с XP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 11:49 |
|
||
|
GetMenuItemInfo - не возвращает значений
|
|||
|---|---|---|---|
|
#18+
не пойму - я некорректно работаю с функцией, структурами в фоксе или какие могут причины быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:39 |
|
||
|
GetMenuItemInfo - не возвращает значений
|
|||
|---|---|---|---|
|
#18+
Цель задачи - инвентаризация меню существующих приложений. Так вот в ситуации, когда пункты меню формирует пользовательская функция, результат- пустая строка. Понятно, что вопрос непосредственно к фоксу не относится, но может кто прорабатывал вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 10:25 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34118865&tid=1590403]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 480ms |

| 0 / 0 |
