** iAlexander |
Отправлено: 04.08.2004, 17:00 |
|
Не зарегистрирован
|
Уважаемые корифеи !
Помогите разрешить такую проблему:
Мне необходимо получать историю url'ов IExplor'a. Это возможно следующим образом:
CODE | extern "C" __declspec(dllexport) BOOL GetIEHistory(void *iHistData)
{
IUrlHistoryStg2Ptr history;
IEnumSTATURLPtr enumPtr;
STATURL url;
if(FAILED(CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER, IID_IUrlHistoryStg2,(void**)&history)))
{
return false;
}
if(FAILED(history->EnumUrls(&enumPtr)))
return false;
while(SUCCEEDED(enumPtr->Next(1,&url,&uFetched)))
{
// do something with url...
};
return true;
}; |
CoCreateInstance инициализирует history, а EnumUrls подготавливает enumPtr к перечислению.
В Visual схема прекрасно работает, в Builder 5 же CoCreateInstance с ходу возвращает false.
Решил обойти следующим образом: сделаю-ка я dll в Visual, и буду ее из Билдера подгружать. Прошел через тернии создания в Visual dll и внедрения ее в Билдер, но вот сюрприз — GetIEHistory при вызове ее из dll из Билдера и тут возвращает false.
Возможно ли как-то исправить ситуацию? Или мне придется отказаться от Билдера. Это будет очень неприятно, сделать программу в Visual при полном отутствии опыта будет весьма сложно... |
|
olegenty |
Отправлено: 05.08.2004, 06:49 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Сравни. Писалось в том году, какой проставлен, с тех пор я всё забыл напроч. Но код работал на ура. Именно на Builder. Хотя, в твоём коде на первый взгляд ошибок не видно...
CODE |
//////////////////////////////////////////////////////////////////////////////
//
// Wrapper для ADODB.Connection (2.1)
//
// Реализация от 02.08.2000, Олег А. Евсеев
//
CAdoConnection::CAdoConnection(const wchar_t *pwcConnection,
const wchar_t *pwcUser,
const wchar_t *pwcPassword)
{
m_pwcConnection = new wchar_t[wcslen(pwcConnection) + 1];
wcscpy(m_pwcConnection, pwcConnection);
m_pwcUser = new wchar_t[wcslen(pwcUser) + 1];
wcscpy(m_pwcUser, pwcUser);
m_pwcPassword = new wchar_t[wcslen(pwcPassword) + 1];
wcscpy(m_pwcPassword, pwcPassword);
m_piConn = NULL;
HRESULT hr = CoCreateInstance(CLSID_ADOConnection,
NULL,
CLSCTX_INPROC_SERVER,
IID__ADOConnection,
(void **)(&m_piConn));
if (!SUCCEEDED(hr))
{
char *szErrorMessage = "Ошибка получения указателя на интерфейс\n";
strcat(szErrorMessage, "ADODB.Connection (2.1)");
MessageBox(NULL,
szErrorMessage,
"ОШИБКА :-(",
MB_SYSTEMMODAL + MB_ICONERROR);
exit(EXIT_FAILURE);
}
}
|
|
|
|