Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с окнами, найти IE 
:(
    Опции темы
DESert
Дата 11.6.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

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



Привет всем!
Подскажите, как организовать сканирование всех окон и выделить из них именно окно Internet Explorer...
я делаю так:
Код

//....
int i=0;
while(i!=1)
    {
        if (FindWindow(0, "Microsoft Internet Explorer") !=0) 
        {
                 i=1;
                          //........
        }
    }
//.......

Но такой код не находит окно, которое уже загруженно до запуска программы...
А далее необходимо из этого окошка выделить:
1) адрес странички, на которой открыт IE
2) текст странички
Подскажите пожалуйста, как это сделать... а то уж сил нет моих более...
Заранее спасибо! 
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
Dray
Дата 11.6.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

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



Я вот писал небольшую шуточную программку, которая работает в фоновом режиме и как только пользователь запускает косынку отлавлевает эту попытку и вырубает ее. Она как раз работает через поиск окна, на WinAPI функциях вот код:
Код
#include "stdafx.h"
#include <string>
using namespace std;

BOOL CALLBACK IsWindowDenied(HWND hwnd, LPARAM lParam)
{
    int n = GetWindowTextLength (hwnd);
    char *Caption = new char [n+1];
    GetWindowText (hwnd, Caption, n+1);
    string StrCapt(Caption);
    if (StrCapt == "Косынка")
    {
        SendMessage (hwnd, WM_CLOSE, 0, 0);
        delete[] Caption;
        return FALSE;
    };
    delete[] Caption;
    lParam++;
    return TRUE;
};


int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    long c = 0;
    while (true)
    {
        EnumWindows (IsWindowDenied, c);
        Sleep (1000);
    };

    return 0;
}

Работает след. образом EnumWindows перечисляет все окна и для каждого выполняет функцию которая подставляется в качестве параметра в данном случае IsWindowDenied. Надеюсь моц пример поможет smile   

Это сообщение отредактировал(а) Dray - 11.6.2006, 21:33


--------------------
忍者

user posted image
PM MAIL   Вверх
DESert
Дата 11.6.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

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



Dray , спасибо большое  smile 
Но к сожалению мне твой пример не во всём помог разобраться  smile 
Я не могу разобраться в том, как вызватить класс IE, а оттуда его методы, чтобы иметь доступ к свойствам содержания интернет-странички 
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
ILAgent
Дата 12.6.2006, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вторым параметром функции FindWindow является заголовок искомого окна. Обрати внимание: заголовок окна ИЕ представляет собой "имя страницы - Microsoft Internet Explorer". Поэтому нужно перебрать все окна и те, чьи заголовки (см. GetWindowText) оканчиваются на Microsoft Internet Explorer являются окнами ИЕ.

У найденного окна просматриваешь все дочерние окна ( см. FindWindowEx ). Если тест окна (см. GetWindowText) начинается на "http://", то это текст - адрес. А как получит код страницы по адресу - поищи в сети. Я, помнится, быстро нашёл  smile 

Ну а как изменить содержимое... Можно закрыть это окно и открыть другое с нужной страницей  smile 

Думаю, это будет работать, хотя я только что это всё придумал. smile  
PM MAIL   Вверх
Dray
Дата 12.6.2006, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

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



Цитата(ILAgent @  12.6.2006,  00:39 Найти цитируемый пост)
Поэтому нужно перебрать все окна и те, чьи заголовки (см. GetWindowText) оканчиваются на Microsoft Internet Explorer являются окнами ИЕ.
Именно поэтому лучше использовать EnumWindows. smile  


--------------------
忍者

user posted image
PM MAIL   Вверх
ILAgent
Дата 12.6.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dray @ 12.6.2006,  01:01)
Именно поэтому лучше использовать EnumWindows. smile

А никто и не спорит   smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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