Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как шарить по чужим дочерным hwnd? Помогите! Добавлено: 20.04.06 00:06  

Автор вопроса:  Programmer
Я нахожу hwnd окна. Это я умею.
Дальше:
1. Найти все его дочерные hwnd.
2. Извлеч какое-нибудь свойство из дочерского окна(обьекта).
Например извлеч адрес из строки обозревателя.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 20.04.06 02:27
EnumChildWindows, SendMessage с WM_GETTEXT или т.п.

Ответить

Номер ответа: 2
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #2 Добавлено: 20.04.06 16:37
EnumChildWindows, SendMessage с WM_GETTEXT

Как эти функции использовать в данном случае?
Приведите, пожалуйста, код!

Ответить

Номер ответа: 3
Автор ответа:
 bess



Вопросов: 0
Ответов: 2
 Профиль | | #3 Добавлено: 22.04.06 23:05
а можно и так... если знаешь какой именно класс окна тебе нужОн...
Примерчик из давних разработок...
Получает дескриптор списка в диспетчере задач Windows...
А название класса нужного окна можно через Spy++ надыбать...

LRESULT CALLBACK SysMsgProc(

    int code, //код ловушки
    WPARAM wParam, // флаг
    LPARAM lParam) // адрес структуры
   
{
//Если открыто новое окно
if (code == HCBT_CREATEWND)
{
wnd = FindWindow("#32770", "Диспетчер задач Windows";); // сам диспетчер задач

//wnd=GetForegroundWindow(); //Берем дискриптор окна
if (curr_wnd!=wnd)
{
curr_wnd=wnd;
      
//if(::GetWindowText(wnd,str,500)!=0) //Берем имя нового окна
//{
//if (strncmp(name,str,23)==0)
//{
if (wnd!=0)
{
wnd = FindWindowEx(wnd, 0, "#32770", 0);
wnd = FindWindowEx(wnd, 0, "SysListView32", 0);

//Удаляем таймер
KillTimer(hwnd,IDEvent);

SetTimer(0,1,100,&AccessProc);
}
//}
//}
}
}
  return CallNextHookEx(SysHook, code, wParam, lParam);
}

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 23.04.06 06:54
1)

шмот с моей проги...
Private Function EnumElement_(ByVal hwnd As Long, ByVal lParam As Long) As Long 'CALLBACK !
'Перечесляет все элементы в указанном окне

Dim c As Byte, t As Integer
Dim sText As String
Dim sClass As String

        sClass = Space$(128)
        c = GetClassName(hwnd, sClass, 128)
        If c > 0 Then
            sClass = Left$(sClass, c)
                sText = Space$(128)
                t = GetWindowText(hwnd, sText, 128)
                ReDim Preserve TextBoxTxt(Counter)
                    TextBoxTxt(Counter) = "[" & sClass & "] = " & Chr(34) & Left$(sText, t) & Chr(34) & " (" & hwnd & ";)"
                    Counter = Counter + 1
            
        End If

EnumElement_ = 1
End Function

Public Sub EnumElement(hWndParent As Long)
'Перечесляет все элементы в указанном окне
    EnumChildWindows hWndParent, AddressOf EnumElement_, 0&
End Sub


API сам...

2)
тоже шмот кода...
Dim buffer As String, TextLength As Long
TextLength& = SendMessage(hwnd&, WM_GETTEXTLENGTH, 0&, 0&;)
buffer$ = String(TextLength&, 0&;)
Call SendMessageByString(hwnd&, WM_GETTEXT, TextLength& + 1, sText)
' В sText будет полученный текст


API и константы тоже сам...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам