Всем привет.
Вобщем, написал я тулбарчик для IE. Все работает, но нужно, чтобы после установки его, он автоматом был заэнейблен в IE. А то приходится лезть в Вид->Панели инструментов и ставить галочку напротив своего тулбарчика.
Заранее благодарен.
Сергей.
Здравствуйте, Good, Вы писали:
G>Всем привет.
G>Вобщем, написал я тулбарчик для IE. Все работает, но нужно, чтобы после установки его, он автоматом был заэнейблен в IE. А то приходится лезть в Вид->Панели инструментов и ставить галочку напротив своего тулбарчика.
Очень актуальная проблема... Хотел у вас узнать, не нашли ли вы решения?
Возможно у вас есть какие-то соображения по этому поводу — поделитесь инфой, возможно совмесными усилиями можно решить проблему
G>Вобщем, написал я тулбарчик для IE. Все работает, но нужно, чтобы после установки его, он автоматом был заэнейблен в IE.
Я делаю так — cоздаю BHO, у которого реализую метод SetSite
STDMETHODIMP CMyClass::SetSite(IUnknown *pUnkSite) {
if (!pUnkSite)
{
if (m_pWebBrowser2.GetInterfacePtr())
m_pWebBrowser2.Release();
return S_OK;
}
IServiceProviderPtr pServProv(pUnkSite);
HRESULT hr = pServProv->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, (void**)&m_pWebBrowser2);
HKEY hk = NULL;
RegCreateKey(HKEY_CURRENT_USER, _T("Software\\My App"), &hk);
if ( hk ) {
DWORD dwFirstRun = RegQueryDWORD( hk, _T("FirstRun"), 0 );
if ( dwFirstRun ) {
_variant_t vtBandGUID = L"{00000000-0000-0000-0000-000000000000}"; // Тут GUID тулбара впишите
_variant_t vtShow = true;
_variant_t vtNotUsed;
_variant_t vtOut = L"visible";
// Некоторые люди говорят что тулбар надо сначала спрятать,
// у меня работало всегда и так. На всяк пожарный оставляю.
//HRESULT hr = m_pWebBrowser2->ShowBrowserBar(&vtBandGUID, &vtHide, &vtNotUsed);
m_pWebBrowser2->PutProperty( OLESTR("MyToolbar_visible"), vtOut );
// show or hide toolbar
HRESULT hr = m_pWebBrowser2->ShowBrowserBar(&vtBandGUID, &vtShow, &vtNotUsed);
RegSetDWORD( hk, _T("FirstRun"), 0 );
}
RegCloseKey( hk );
}
return hr;
}
В результате при запуске браузера первым запускается BHO, у него вызывается метод SetSite, в котором проверяется запускается ли тулбар первый раз или нет, если запуск первый — показываем тулбар. Собственно всё.
Если есть критика по коду — пишите пожалуйста, я пока новичёк в теме. Буду рад критике профессионалов.