IWebBrowser2
От: cls  
Дата: 12.04.05 17:26
Оценка:
как, имея объект сабжа, установить для него прокси, юзерагента, и аццепт-лэнгвидж, так, чтобы при кликах на странице эти парметры сохранялись.

при изпольхзовании заголовков при клике заголовки возыращаются в прежнее значение.

пока что мне приходится менять эти параметры в реестре, но должен быть более гуманный путь, я думаю.
Re: IWebBrowser2
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 12.04.05 19:25
Оценка:
Здравствуйте, cls, Вы писали:

cls>как, имея объект сабжа, установить для него прокси, юзерагента,


То и другое можно сделать с помощью UrlMkSetSessionOption.

cls>и аццепт-лэнгвидж, так, чтобы при кликах на странице эти парметры сохранялись.


С этим вроде как посложнее, но в принципе ничто не мешает перехватить событие BeforeNavigate2 и добавлять свой хидер Accept-Language в каждый исходящий запрос.
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
Re[2]: IWebBrowser2
От: cls  
Дата: 13.04.05 11:12
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, cls, Вы писали:


cls>>как, имея объект сабжа, установить для него прокси, юзерагента,


F>То и другое можно сделать с помощью UrlMkSetSessionOption.


cls>>и аццепт-лэнгвидж, так, чтобы при кликах на странице эти парметры сохранялись.


F>С этим вроде как посложнее, но в принципе ничто не мешает перехватить событие BeforeNavigate2 и добавлять свой хидер Accept-Language в каждый исходящий запрос.


спасибо огромное, функция интересная, но как мне приплести её к текущей сессии IWebBrowser2 ?

аццепт-лэнгвидж я в реестре меняю — это меня устраивает.

а вот юзерагента через реестр менять фигово
там он из нескольких параметров складывается, поэтому не всякий юзер-агент таким образом можно получить.

про хук BeforуNavigate2 думал, но нет нагладного примера, как использовать.
для меня это наверное будет самый оптимальный способ, т.к. я перехватываю весь запрос и париться с реестром не надо.

подкиньте пожалуйста пример.
Re[3]: IWebBrowser2
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.04.05 12:39
Оценка:
Здравствуйте, cls, Вы писали:

F>>То и другое можно сделать с помощью UrlMkSetSessionOption.


cls>спасибо огромное, функция интересная, но как мне приплести её к текущей сессии IWebBrowser2 ?


Вызвать с нужными параметрами. Она как раз применяется к текущей сессии.
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
Re: IWebBrowser2
От: nen777w  
Дата: 13.04.05 12:55
Оценка:
Вот тебе два метода используемых в моей программе:

CString IE_Exetension::GetCurInetConnection()
{
const int RAS_MAXENTRYNAME = 256;
const int RAS_RASCONNSIZE = 412;

RASCONN udtRasConn[255];
DWORD countConn = 0;
udtRasConn[0].dwSize = RAS_RASCONNSIZE;
DWORD size = RAS_MAXENTRYNAME * udtRasConn[0].dwSize;

if(!RasEnumConnections(&udtRasConn[0], &size, &countConn) && countConn > 0)
return udtRasConn[0].szEntryName;
else
return _T("");
}

bool IE_Exetension::SetIEProxy(CString strServerAddress, UINT nServerPort)
{
CString buffer;
buffer.Format(_T("%s:%d"), strServerAddress, nServerPort);
LPCTSTR proxy_full_addr = buffer.GetBuffer(buffer.GetLength());

CString connection_name = GetCurInetConnection();

//conn_name: active connection name.
//proxy_full_addr : eg "210.78.22.87:8000"
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
// Fill out list struct.
list.dwSize = sizeof(list);
// NULL == LAN, otherwise connectoid name.
list.pszConnection = (LPSTR)connection_name.GetBuffer(connection_name.GetLength());
// Set three options.
list.dwOptionCount = 3;
list.pOptions = new INTERNET_PER_CONN_OPTION[3];
// Make sure the memory was allocated.
if(NULL == list.pOptions)
{
// Return FALSE if the memory wasn't allocated.
OutputDebugString("failed to allocat memory in SetConnectionOptions()");
return FALSE;
}
// Set flags.
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
PROXY_TYPE_PROXY;

// Set proxy name.
list.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
list.pOptions[1].Value.pszValue = (LPSTR)proxy_full_addr;//"http://proxy:80";

// Set proxy override.
list.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
list.pOptions[2].Value.pszValue = "local";

// Set the options on the connection.
bReturn = InternetSetOption(NULL,
INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);

// Free the allocated memory.
delete [] list.pOptions;
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);

return bReturn;
}

bool IE_Exetension::ResetProxy()
{
CString connection_name = GetCurInetConnection();

//conn_name: active connection name.
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
// Fill out list struct.
list.dwSize = sizeof(list);
// NULL == LAN, otherwise connectoid name.
list.pszConnection = (LPSTR)connection_name.GetBuffer(connection_name.GetLength());
// Set three options.
list.dwOptionCount = 1;
list.pOptions = new INTERNET_PER_CONN_OPTION[list.dwOptionCount];
// Make sure the memory was allocated.
if(NULL == list.pOptions)
{
// Return FALSE if the memory wasn't allocated.
OutputDebugString("failed to allocat memory in DisableConnectionProxy()");
return FALSE;
}
// Set flags.
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT ;
// Set the options on the connection.
bReturn = InternetSetOption(NULL,
INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
// Free the allocated memory.
delete [] list.pOptions;
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);

return bReturn;
}

bool IE_Exetension::SetIEProxy2NonChangeFeaturesOfColumnist(CString strServerAddress, UINT nServerPort)
{
CString buffer;
buffer.Format(_T("%s:%d"), strServerAddress, nServerPort);

INTERNET_PROXY_INFO InetProxyInfo;
InetProxyInfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
InetProxyInfo.lpszProxy = buffer;
InetProxyInfo.lpszProxyBypass = _T("");

return S_OK == UrlMkSetSessionOption(INTERNET_OPTION_PROXY, (LPVOID)&InetProxyInfo, sizeof(INTERNET_PROXY_INFO),0);
}
Posted via RSDN NNTP Server 1.9
Re[4]: IWebBrowser2
От: cls  
Дата: 13.04.05 16:05
Оценка:
вобщем вот код.


    IWebBrowser2 *m_browser;
    HRESULT hr;
        
     hr = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, (void**)&m_browser);
    
    m_browser->put_Visible(TRUE);
    _bstr_t p;

    string m_url = (string)"http://localhost/";
    string m_referer = (string)"http://ya.ru";
    string m_headers;

    m_headers = "Referer: " + m_referer;
    m_headers += "\n\r";


    p=_bstr_t((LPCSTR)m_url.c_str());
    _variant_t q;
    _variant_t v_headers(m_headers.c_str());
    

    m_browser->Navigate((BSTR)p.copy(), &q, &q, &q, &v_headers);


как мне приплести сюда DWebBrowserEvents2::BeforeBavigate2 ?
и как с ним работать, то есть изменять параметры запроса, хэдэры, в частности?

я НИ РАЗУ этих вещей не делал и представления не имею как что работает,
форум смотрел, частично что-то написано и всё непонятно

да, и пишу без мфц...
Re[5]: IWebBrowser2
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.04.05 16:40
Оценка:
Здравствуйте, cls, Вы писали:

[]

cls>как мне приплести сюда DWebBrowserEvents2::BeforeBavigate2 ?

cls>и как с ним работать, то есть изменять параметры запроса, хэдэры, в частности?

Я еще раз повторю: поиск по сайту работает, на сайте есть статьи — что толку пережевывать в сотый раз то, что уже описано? Неужели так сложно взять и посмотреть вот это, например: http://www.rsdn.ru/article/inet/dhtmlspy.xml
Автор(ы): Тимофей Чадов


Или вот здесь поискать: http://www.rsdn.ru/?search/?q=DISPID_BEFORENAVIGATE2&mode=rank&group=N

Как видите — масса информации.
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
Re[6]: IWebBrowser2
От: cls  
Дата: 13.04.05 17:26
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, cls, Вы писали:


F>[]


cls>>как мне приплести сюда DWebBrowserEvents2::BeforeBavigate2 ?

cls>>и как с ним работать, то есть изменять параметры запроса, хэдэры, в частности?

F>Я еще раз повторю: поиск по сайту работает, на сайте есть статьи — что толку пережевывать в сотый раз то, что уже описано? Неужели так сложно взять и посмотреть вот это, например: http://www.rsdn.ru/article/inet/dhtmlspy.xml
Автор(ы): Тимофей Чадов


F>Или вот здесь поискать: http://www.rsdn.ru/?search/?q=DISPID_BEFORENAVIGATE2&mode=rank&group=N


F>Как видите — масса информации.


первая статья имеет не много полезной для меня информации...
а в поиске в основном вопросы тех, кто понимает как работает механизм, но в процессе его реализации возникли ошибки

я же НЕ понимаю, как работает механизм... неужели трудно дать исходник.
Re[7]: IWebBrowser2
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.04.05 18:10
Оценка:
Здравствуйте, cls, Вы писали:

[]

cls>первая статья имеет не много полезной для меня информации...

cls>а в поиске в основном вопросы тех, кто понимает как работает механизм, но в процессе его реализации возникли ошибки

Ну если вам мало полезной информации в статье, тогда я даже не знаю, что и сказать... И даже поиск не помог, видимо

cls>я же НЕ понимаю, как работает механизм... неужели трудно дать исходник.


Готовый исходник не принесет понимания механизма работы. Понимание механизма работы Connection points принесет изучение соответствующих разделов MSDN. Успехов!
Удобный способ просмотра балансов и курсов валют! Специальное предложение для exUSSR: http://www.showmestat.com/swrus.php
Re[8]: IWebBrowser2
От: cls  
Дата: 13.04.05 20:37
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, cls, Вы писали:


F>[]


cls>>первая статья имеет не много полезной для меня информации...

cls>>а в поиске в основном вопросы тех, кто понимает как работает механизм, но в процессе его реализации возникли ошибки

F> Ну если вам мало полезной информации в статье, тогда я даже не знаю, что и сказать... И даже поиск не помог, видимо


cls>>я же НЕ понимаю, как работает механизм... неужели трудно дать исходник.


F>Готовый исходник не принесет понимания механизма работы. Понимание механизма работы Connection points принесет изучение соответствующих разделов MSDN. Успехов!


я не понимаю именно то, как события перехватывать...

у меня нет времени на "изучение"
мне проект сдавать через 2 дня.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.