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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хочу избавиться от циклов 
:(
    Опции темы
rattick
Дата 18.7.2012, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. такой вопрос. Есть сторонняя программа. Пытаюсь расширить ее  функционал. При выборе в комбобоксе выскакивает моя форма. Проблема  в том, у большинства контролов отсутствуют имена, поэтому приходится искать перебором хендлов. Более того на форме есть кнопки при которых меняется содержание одних и тех же контролов, поэтому поиск нужного идет по изменившемуся содержанию.


Код

' Module
Option Explicit
Public cmbHandle as Long
' перебираем контролы на родительской форме
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
    Dim h2 As Long
     sClass = Space$(mconMAXLEN)
      h2 = iGetClassName(hwnd, sClass, mconMAXLEN)
    sClass = Left$(sClass, h2)
    If sClass = "ThunderRT6ComboBox" Then start(hwnd)
    EnumChildProc = 1
 
Function start(cmbH As Long)' смотрим содержит ли этот комбобокс нужную нам строку
    Dim strFind As String
    strFind = "<Tag>"
    res = SendMessage(cmbH, CB_FINDSTRING, 0, ByVal strFind)
    If res >= 0 Then cmbHandle = cmbH
End Function

'Form1

'ищем нужный хендл
Dim handl as Long ' хендл родительского окна
 Dim index As Long, textin As Long
 Dim st As String
Do While cmbHandle = 0
        Sleep (100)
        EnumChildWindows handl, AddressOf EnumChildProc, ByVal 0&
    Loop

akk:
        index = SendMessage(cmbHandle, CB_GETCURSEL, 0, 0)
          Select Case index

           Case 0     ' Поле Tag находится на первой позиции
                  'Form1.Visible = True
            Case Else
                GoTo akk
        End Select


Все работает, но жрет дофига памяти и грузит проц. Нет ли  какого-нибудь способа избежать перебора (например аналог эвентс из С++)?

Это сообщение отредактировал(а) rattick - 18.7.2012, 15:13
PM MAIL   Вверх
Megas
Дата 30.7.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно повесить хуки на нужные сообщения чужего процесса, но для это нужно сначала внедрить специальную библеотеку в память процесса, которая будет переадрессовывать сообщения на ваш процесс.
Вот ссылочка от куда можно начать копание по теме: http://www.xakep.ru/post/55795/
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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