Мне нужно получить хендл адресной строки в IE. Мне подсказали что нужно получить хендл IE. Ну а потом искать с помощью EnumChildWindows. Дак вот я не понимаю как их использовать ( столькнулся с этим первый раз ). Я прошу помогите мне. Обьясните ( желательно подробнее ). Ну а если кому не лень то, пожалуйста напишите мне исходник получения хендла адресной строки в IE. Заранее спасибо.
Для твоей задачи необязателен EnumChildWindows. Но если просишь: Код (Text): //phwnd - дескриптор родительского окна //lpEnumChildWindowsProc - указатель на EnumChildWindowsProc //х1 - пользовательский параметр, передаваемый EnumChildWindowsProc как lParam EnumChildWindows (phwnd, lpEnumChildWindowsProc, x1); long EnumChildWindowsProc (long hwnd, long lParam){ //делаешь, что надо с полученным в hwnd дескриптором return 1; }
В общем все понятно,но... long EnumChildWindowsProc (long hwnd, long lParam){ Какой здесь написть код ( какие функции и.д. ) желательно подробнее return 1; }
Ну например Код (Text): BOOL GetWindowInfo( HWND hwnd, PWINDOWINFO pwi); hwnd [in] Handle to the window whose information is to be retrieved. pwi [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): typedef struct { DWORD cbSize; RECT rcWindow; RECT rcClient; DWORD dwStyle; DWORD dwExStyle; DWORD dwWindowStatus; UINT cxWindowBorders; UINT cyWindowBorders; ATOM atomWindowType; WORD wCreatorVersion; } WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO; cbSize The size of the structure, in bytes. The caller must set this to sizeof(WINDOWINFO). rcWindow Pointer to a RECT structure that specifies the coordinates of the window. rcClient Pointer to a RECT structure that specifies the coordinates of the client area. dwStyle The window styles. For a table of window styles, see CreateWindowEx. dwExStyle The extended window styles. For a table of extended window styles, see CreateWindowEx. dwWindowStatus The window status. If this member is WS_ACTIVECAPTION, the window is active. Otherwise, this member is zero. cxWindowBorders The width of the window border, in pixels. cyWindowBorders The height of the window border, in pixels. atomWindowType The window class atom (see RegisterClass). wCreatorVersion The Microsoft® Windows® version of the application that created the window. Ну и опознаёшь контрол по его свойствам
Ну блин. Читал же ведь наверно, что посты типо: горю, срочно - будут удаляться. Вызываешь в цикле EnumChildWindows, пока она будет возвращать true. А в EnumChildWindowsProc, тебе будет передаваться хендл дочернего окна, вот и вызывай GetWindowText с этим хендлом. Но для твоей задачи тебе надо сначало найти наверно контрол в котором нах-ся этот адресный эдит. так что смотри вначале в WinSpy. А также IMHO через GetWindowLong надо будет смотреть какой ты получаешь класс окна, тебе скорее всего нужен EDIT.
EnumChildWindows будет вызывать твою EnumChildProc пока не кончаться дочерние контролы указанного окна или до тех пок пока ты не найдёшь нужный тебе Как найдёшь его вместо return True, возвращаешь return False и перечисления закончатся.
Booster Не EnumChildWindows в цикле не надо, она сама цикл перечислений организует. И GetWindowLong не катит. На счёт едит это верно, но только в новом IE есть ещё едит искалки asmic А в исходник ГетСет всё таки загляни там много интересного
Y_Mur >А в исходник ГетСет всё таки загляни там много интересного А на фига ему туда заглядывать ? Не имеет отношения к заданному вопросу. К тому же GetDlgCtrlID в этом спайчике гарантирует ошибку для top-level окон.
Все-таки насчет Get&Set Y_Mur >А в исходник ГетСет всё таки загляни там много интересного ГетСет - сплошное недоразумение. Вы не это имели в виду ?