2015-01-04 3 views
1

Использование: кто-то попросил меня автоматизировать его интернет-проводник. Каждый день он должен перейти к одному URL-адресу, ввести те же учетные данные и войти в систему. Он хотел бы, чтобы компьютер сделал это автоматически: с приложением, которое перемещается по URL-адресу, автоматически вводит данные для записи и журналы. Затем он может продолжать вручную перемещаться по странице.Управление существующим обозревателем Internet с помощью C++

Итак, если я хочу контролировать непосредственно существующий экземпляр интернет-исследователя, как мне это сделать с C++?

+0

не имеет проверенный ответ, но этот ответ на мой вопрос может дать намек на где искать и исследовать: http://stackoverflow.com/a/8285218/341065 – wilx

+0

(почти) все «возможно» с современными компьютерами, дело в том, почему кто-то хочет сделать такое? Если вы хотите создать отдельное приложение, то почему бы не включить код, который загружает страницу, которую вы ищете? Но такие приложения уже существуют ... (поиск 'wget'). Не могли бы вы пояснить прецедент? – kebs

+0

С точки зрения удобства использования вы не должны управлять существующим экземпляром Internet Explorer. (Что, если у пользователя было несохраненное сообщение электронной почты?) Вы должны создать свой собственный экземпляр и использовать его. 'IWebBrowser2' предоставляет вам методы управления окном IE. –

ответ

0

После нескольких часов исследований мне удалось открыть новый экземпляр IE и перейти к определенному URL-адресу.

шаги я предпринял:

  1. Link следующие библиотеки в опциях проекта: libole32.a, liboleaut32.a, liboleacc.a, libuuid.a

  2. Включите cassert и exdisp. h в начале основного cpp-файла.

  3. Вставьте следующий код в главном CPP-файле:


int main(void) {

HRESULT hret; hret=CoInitialize(NULL); assert(SUCCEEDED(hret)); CLSID clsid; // Get IE CLSID hret=CLSIDFromProgID(L"InternetExplorer.Application",&clsid); assert(SUCCEEDED(hret)); IUnknown *p; // Get IUnknown Interface hret=CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IUnknown,reinterpret_cast<void**>(&p)); assert(SUCCEEDED(hret)); IDispatch *q; // Get IDispatch Interface from IUnknown hret=p->QueryInterface(IID_IDispatch,reinterpret_cast<void**>(&q)); assert(SUCCEEDED(hret)); IWebBrowser2 *r; // Get IWebBrowser2 Interface from IDispatch hret=q->QueryInterface(IID_IWebBrowser2,reinterpret_cast<void**>(&r)); assert(SUCCEEDED(hret)); IUnknown *s; // Get IUnknown from IWebBrowser2 hret=r->QueryInterface(IID_IUnknown,reinterpret_cast<void**>(&s)); assert(SUCCEEDED(hret)); ///// Transitive ////////////////////////// assert(p==s); //////////////////////////////////////// VARIANT vEmpty; VariantInit(&vEmpty); VARIANT vFlags; V_VT(&vFlags) = VT_I4; V_I4(&vFlags) = navOpenInNewWindow; BSTR bstrURL = SysAllocString(L"http://www.google.com"); r->Navigate(bstrURL, &vFlags, &vEmpty, &vEmpty, &vEmpty); r->Quit(); SysFreeString(bstrURL); p->Release(); q->Release(); r->Release(); s->Release(); CoUninitialize(); return 0; }

Смежные вопросы