Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск пункта меню по тексту в этом пункте... 
:(
    Опции темы
I_Am_Rock
Дата 20.1.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Добрый вечер.

Как, используя API, найти пункт меню по тексту в этом пункте?

Вот, к примеру, здесь

Код

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim hOkno As Long,

Private Sub Form_Load()
  hOkno = FindWindow("Notepad", "Безымянный - Блокнот")
End Sub

Private Sub cmdStart_Click()
  ' Здесь должен быть код поиска пункта меню по тексту в этом пункте
End Sub


Заранее спасибо!
PM MAIL WWW   Вверх
I_Am_Rock
Дата 20.1.2008, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Нашел в инете вот эти две функции - кажется, то, что надо.
Но никак не получается увязать их с куском кода, размещенном в предыдущем сообщении
Может, кто поможет?


Код

'получение позиции команды меню
Public Function GetMenuPos(ByVal hMenu As Long, ByVal Caption As String) As Long
Dim i As Long
Dim max As Long
Dim lres As Long
Dim Result As Long
Dim sData As String
Dim sdLen As Long
Result = -1
max = GetMenuItemCount(hMenu)
If max = 0 Then GetMenuPos = -1: Exit Function
For i = 0 To max - 1
sData = String$(256, 32)
sdLen = Len(sData) + 1
lres = GetMenuString(hMenu, i, sData, sdLen, MF_BYPOSITION)
If LCase$(Left$(sData, lres)) = LCase$(Caption) Then Result = i: Exit For
Next i
GetMenuPos = Result
End Function

'Получение манипулятора меню
Public Function SearchMenu(ByVal hMenu As Long, ByVal Caption As String) As Long
Dim i As Long
Dim lres As Long
Dim max As Long
Dim Result As Long
lres = GetMenuPos(hMenu, Caption)
If lres <> -1 Then SearchMenu = hMenu: Exit Function
Debug.Print max
max = GetMenuItemCount(hMenu)
For i = 0 To max - 1
lres = GetMenuItemID(hMenu, i)
If lres = -1 Then Result = SearchMenu(GetSubMenu(hMenu, i), Caption)
Next i
SearchMenu = Result
End Function

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.