...
LONG nCount;
pSW->get_Count( &nCount); // pSW указатель на IShellWindows
for (int i=0; i<nCount; i++)
{
// get next window
TComInterface<IDispatch> pDisp;
pSW->Item( TVariant(i), &pDisp);
TComInterface<IWebBrowser2> pIE;
pDisp->QueryInterface(IID_IWebBrowser2, (LPVOID*)&pIE);
if (pIE)
{
...
Снова авторизация, но не в своем окне
Знаю как выполнить авторизация на страничке, используя TWebBrowser. Но это получается авторизация в своей программке. А как авторизоваться в чужом приложении, а именно в IE? Это как-то надо найти text и submit в окне эксплорера? Но как, подскажите?
Знаю как выполнить авторизация на страничке, используя TWebBrowser. Но это получается авторизация в своей программке. А как авторизоваться в чужом приложении, а именно в IE? Это как-то надо найти text и submit в окне эксплорера? Но как, подскажите?[/QUOTE]
Для того чтобы авторизоваться именно в IE нужно получить IHTMLDocument2 страницы где надо найти text и submit.
Это можно сделать несколькими способами:
1. Через интерфейс IShellWindows
Получаешь данный интерфейс, проходишь по коллекции итемов и пытаешь ся просить у каждого интерфейс IWebBrowser2.
Код:
если успешно, то это IE (а не Explorer). Далее проверяешь та-ли страница и запрашиваешь IHTMLDocument2
Код:
...
// get URL
WideString wsUrl;
pIE->get_LocationURL( &wsUrl);
// trying to get htmldoc
TComInterface<IDispatch> pDispDoc;
pIE->get_Document( &pDispDoc);
TComInterface<IHTMLDocument2> pHtmlDoc;
pDispDoc->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pHtmlDoc);
// if Ok, - Internet Explorer'à
if (pHtmlDoc)
{
...
// get URL
WideString wsUrl;
pIE->get_LocationURL( &wsUrl);
// trying to get htmldoc
TComInterface<IDispatch> pDispDoc;
pIE->get_Document( &pDispDoc);
TComInterface<IHTMLDocument2> pHtmlDoc;
pDispDoc->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pHtmlDoc);
// if Ok, - Internet Explorer'à
if (pHtmlDoc)
{
...
можно авторизовываться.
2. Или можно полцчить IHTMLDocument2 через дескриптор окна спомощью ObjectFromLresult(), функция находится в OLEACC.DLL