Обьясните как ипользовать функции EnumChildWindows и EnumChildProc.

Тема в разделе "WASM.BEGINNERS", создана пользователем asmic, 19 фев 2007.

  1. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Мне нужно получить хендл адресной строки в IE. Мне подсказали что нужно получить хендл IE. Ну а потом искать с помощью EnumChildWindows. Дак вот я не понимаю как их использовать ( столькнулся с этим первый раз ). Я прошу помогите мне. Обьясните ( желательно подробнее ). Ну а если кому не лень то, пожалуйста напишите мне исходник получения хендла адресной строки в IE. Заранее спасибо.
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Для твоей задачи необязателен EnumChildWindows. Но если просишь:

    Код (Text):
    1. //phwnd - дескриптор родительского окна
    2. //lpEnumChildWindowsProc - указатель на EnumChildWindowsProc
    3. //х1 - пользовательский параметр, передаваемый EnumChildWindowsProc как lParam
    4. EnumChildWindows (phwnd, lpEnumChildWindowsProc, x1);
    5.  
    6. long EnumChildWindowsProc (long hwnd, long lParam){
    7.  //делаешь, что надо с полученным в hwnd дескриптором
    8.  return 1;
    9. }
     
  3. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Да, если можно то напишите мне в стиле MASM. Ну очень нужно! Горю!!!!!!!!!
     
  4. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    RamMerLabs спасибо тебе. Но не мог бы ты обьяснить мне и другой способ. Пожалуйста.
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Подводишь мышь к нужному контролу и смотришь его хендл :))
     
  6. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    В общем все понятно,но...
    long EnumChildWindowsProc (long hwnd, long lParam){
    Какой здесь написть код ( какие функции и.д. ) желательно подробнее
    return 1;
    }
     
  7. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    С помощью WinSpy я тоже могу узнать:))))) Но мне бы самому......
     
  8. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Ну помогите же кто нибудьььььььььььььь
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Ну например
    Код (Text):
    1. BOOL GetWindowInfo(          HWND hwnd,    PWINDOWINFO pwi);
    2. hwnd
    3. [in] Handle to the window whose information is to be retrieved.
    4. pwi
    5. [out] Pointer to a WINDOWINFO structure to receive the information. Note that you must set WINDOWINFO.cbSize to sizeof(WINDOWINFO) before calling this function.
    где
    Код (Text):
    1. typedef struct {
    2.     DWORD cbSize;
    3.     RECT rcWindow;
    4.     RECT rcClient;
    5.     DWORD dwStyle;
    6.     DWORD dwExStyle;
    7.     DWORD dwWindowStatus;
    8.     UINT cxWindowBorders;
    9.     UINT cyWindowBorders;
    10.     ATOM atomWindowType;
    11.     WORD wCreatorVersion;
    12. } WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
    13. cbSize
    14. The size of the structure, in bytes. The caller must set this to sizeof(WINDOWINFO).
    15. rcWindow
    16. Pointer to a RECT structure that specifies the coordinates of the window.
    17. rcClient
    18. Pointer to a RECT structure that specifies the coordinates of the client area.
    19. dwStyle
    20. The window styles. For a table of window styles, see CreateWindowEx.
    21. dwExStyle
    22. The extended window styles. For a table of extended window styles, see CreateWindowEx.
    23. dwWindowStatus
    24. The window status. If this member is WS_ACTIVECAPTION, the window is active. Otherwise, this member is zero.
    25. cxWindowBorders
    26. The width of the window border, in pixels.
    27. cyWindowBorders
    28. The height of the window border, in pixels.
    29. atomWindowType
    30. The window class atom (see RegisterClass).
    31. wCreatorVersion
    32. The Microsoft® Windows® version of the application that created the window.
    Ну и опознаёшь контрол по его свойствам ;)
     
  10. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Y_Mur спасибо! Если не трудно не мог бы ты с EnumChildProc по подробнеее... Пожалуйста....
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ну блин. Читал же ведь наверно, что посты типо: горю, срочно - будут удаляться.
    Вызываешь в цикле EnumChildWindows, пока она будет возвращать true. А в EnumChildWindowsProc, тебе будет передаваться хендл дочернего окна, вот и вызывай GetWindowText с этим хендлом.
    Но для твоей задачи тебе надо сначало найти наверно контрол в котором нах-ся этот адресный эдит. так что смотри вначале в WinSpy. А также IMHO через GetWindowLong надо будет смотреть какой ты получаешь класс окна, тебе скорее всего нужен EDIT.
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    EnumChildWindows будет вызывать твою EnumChildProc пока не кончаться дочерние контролы указанного окна или до тех пок пока ты не найдёшь нужный тебе :) Как найдёшь его вместо return True, возвращаешь return False и перечисления закончатся.
     
  13. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Booster
    Не EnumChildWindows в цикле не надо, она сама цикл перечислений организует. И GetWindowLong не катит. На счёт едит это верно, но только в новом IE есть ещё едит искалки :)
    asmic
    А в исходник ГетСет всё таки загляни там много интересного :)
     
  14. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Y_Mur
    >А в исходник ГетСет всё таки загляни там много интересного :)

    А на фига ему туда заглядывать ? Не имеет отношения к заданному вопросу.
    К тому же GetDlgCtrlID в этом спайчике гарантирует ошибку для top-level окон.
     
  15. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Парни спасибо вам!!!!!!!!!! Я во всём разобрался!!!!!!!!!
     
  16. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Все-таки насчет Get&Set

    Y_Mur
    >А в исходник ГетСет всё таки загляни там много интересного :)

    ГетСет - сплошное недоразумение.
    Вы не это имели в виду ?
     
  17. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    :)