Добрый вечер. Я что не могу понять. Как перехватить нажатие на submit. Я предпологаю что это делается с помощью IHTMLFormElement::get_onsubmit. Я прав? Если нет, то с помощью чего? Заранее спасибо.
DWebBrowserEvents2::BeforeNavigate2 в общем случае. onsubmit и прочие обработчики on* - это пользовательские обработчики, вешаемые на события, - яваскриптом, например. Который вполне может обходиться и без него, назначив form.submit какому-то другому событию.
asmic Попробуй поискать статью coban2k'а "Перехват данных форм Internet Explorer'а", там есть все (практически), что ты спрашивал на форуме по СОМ
Добрый день. Да, я уже читал стаью coban2k. Но я все еще не могу понять. Как реализовать часть его кода на ассемблере в частности ( все что касается установки обработчиков событий, и перехвата самих событий ). Буду разбиратся. Думаю что возникнет куча вопросов.
Mental_Mirror ну я примеру по этим мануалам нифига не смог сделать, там ж не рассказывается как соединять интерфейсы ... и вабще QueryIntarface в обработчике тож больная тема ... вот я даж не знаю правильно я сделал или нет ... на си рабочий ... Код (Text): HRESULT __stdcall CShellWindowsEvents::QueryInterface(REFIID riid, void** ppv) { if (riid == IID_IUnknown) *ppv = static_cast<DShellWindowsEvents*>(this); else if (riid == IID_IDispatch) *ppv = static_cast<IDispatch*>(this); else if (riid == DIID_DShellWindowsEvents) *ppv = static_cast<DShellWindowsEvents*>(this); else { *ppv = NULL; return E_NOINTERFACE; } reinterpret_cast<IUnknown*>(*ppv)->AddRef(); return S_OK; } и вот мой на асме ... Код (Text): proc CShellWindowsEvents_QueryInterface,pi,iid,ppvObject invoke IsEqualGUID,[iid],IID_IUnknown test eax,eax jnz .int invoke IsEqualGUID,[iid],IID_IDispatch test eax,eax jnz .int invoke IsEqualGUID,[iid],DIID_DShellWindowsEvents test eax,eax jnz .int xor eax,eax mov edx,[ppvObject] mov [edx],eax mov eax,E_NOINTERFACE ret .int: mov eax,[pi] mov edx,[ppvObject] mov [edx],eax mov edx,[ppvObject] mov edx,[edx] mov edx,[edx] mov eax,[ppvObject] push dword[eax] call dword[edx+Addref] mov eax,S_OK ret endp да и вабще объекты эти еще та замануха ... сложно для понимания ...
el- Почитай на code-project - "Plain C COM Application", воткнешь со временем...Опять же объекты - это не больше как таблицы указателей на функции.
Mental_Mirror спасибо почитаю, арт смотрю подробный ... ну про объекты я вродь понял из васмовских артиклей ... тока я ни в чем не уверен по поводу КОМ, ну собственно мой пример ... Код (Text): struct Object IDispatch dd ? g_Counter dd ? ends IDispatch dd IDispatch_vtable IDispatch_vtable dd CShellWindowsEvents_QueryInterface dd CShellWindowsEvents_AddRef dd CShellWindowsEvents_Release dd CShellWindowsEvents_GetTypeInfoCount dd CShellWindowsEvents_GetTypeInfo dd CShellWindowsEvents_GetIDsOfNames dd CShellWindowsEvents_Invoke