Вниз
Скачать: CL | DM;

Кто-нибудь занимался интерфейсами на Дельфи?   Найти похожие ветки 

← →
star ©   (2002-01-21 12:28) [26]

Вот пример из MSDN на С++, как получить IHTMLDocument2 из окна класса Internet Explorer_Server (в окно такого класса вводится текст письма в Outlook Express, такое окно создается так же IE). Я попытался переделать его на Дельфи - костьми лег, ничего не получается. В дельфи есть и IHTMLDocument2, и IHtmlWindow2 и прочее. Борланды позаботились, но как я не бился - ничего не получается. До сих пор я считал, что Дельфи ничуть не хуже С++ (а в некоторых случаях даже лучше). Теперь сомнения берут ... Может, конечно, просто знаний нехватает...
Может здесь есть знатоки обоих языков, помогут перевести?
(Просто разработана здоровенныя программа, одной из функций которой будет вытаскивание хтмл-а из IE-серверов. Она написана на дельфи, и я не в состоянии перевести ее всю на С++)

#include <mshtml.h>
#include <atlbase.h>
#include <oleacc.h>

BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
TCHAR buf[100];

::GetClassName( hwnd, (LPTSTR)&buf, 100 );
if ( _tcscmp( buf, _T("Internet Explorer_Server") ) == 0 )
{
*(HWND*)lParam = hwnd;
return FALSE;
}
else
return TRUE;
};

//You can store the interface pointer in a member variable
//for easier access
void CDlg::OnGetDocInterface(HWND hWnd)
{
CoInitialize( NULL );

// Explicitly load MSAA so we know if it"s installed
HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );
if ( hInst != NULL )
{
if ( hWnd != NULL )
{
HWND hWndChild=NULL;
// Get 1st document window
::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)
&hWndChild );

if ( hWndChild )
{
CComPtr<IHTMLDocument2> spDoc;
LRESULT lRes;

UINT nMsg = ::RegisterWindowMessage(
_T("WM_HTML_GETOBJECT") );

::SendMessageTimeout( hWndChild, nMsg, 0L, 0L,
SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );

LPFNOBJECTFROMLRESULT pfObjectFromLresult =
(LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst,
_T("ObjectFromLresult") );

if ( pfObjectFromLresult != NULL )
{
HRESULT hr;
hr = (*pfObjectFromLresult)( lRes,
IID_IHTMLDocument, 0, (void**)&spDoc );

if ( SUCCEEDED(hr) )
{
CComPtr<IDispatch> spDisp;
CComQIPtr<IHTMLWindow2> spWin;
spDoc->get_Script( &spDisp );
spWin = spDisp;
spWin->get_document( &spDoc.p );
// Change background color to red
spDoc->put_bgColor( CComVariant("red") );
}
}
} // else document not ready
} // else Internet Explorer is not running
::FreeLibrary( hInst );
} // else Active Accessibility is not installed
CoUninitialize();
}



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.007 c
6-18924
Arseny
2001-11-12 20:59
2002.02.07
Client-Server


1-18902
cyborg
2002-01-21 21:19
2002.02.07
Как вывести текст в TImage чтобы фон у него был прозрачный?


3-18747
Dim
2002-01-11 09:22
2002.02.07
Значение параметра по умолчанию в InterBase e.


1-18807
Death
2002-01-25 08:34
2002.02.07
Онять несчастный TThread


3-18772
Макс
2002-01-11 15:28
2002.02.07
Реализация UpdateSQL на ADO




   Наверх