Is there an new version of it, looks like I am having very old
version.
Also is there some explanation of its code?
I lost interest and stoped development on it a long time ago. That old
version is all there is. Having said that, it's still working for me.
You are probably doing something wrong.
> Also is there some explanation of its code?
No, not really. You can ask here, and I'll do my best to answer. In case
it's not clear, I'm the author.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925
Okay so here is exception
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: C:\Program Files\Internet Explorer\iexplore.exe
File: c:\program files\microsoft visual studio 8\vc\atlmfc\include
\atlcore.h
Line: 182
Expression: m_bInitialized
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
Abort Retry Ignore
---------------------------
call stack shows it originates from
inline HRESULT CComClassFactoryProtocol::SetTargetClassFactory(
IClassFactory* pCF)
{
HRESULT hr = (pCF ? pCF->LockServer(TRUE) : S_OK);
if (SUCCEEDED(hr))
{
ObjectLock lock(this);-------------------------> Exception
if (m_spTargetCF)
{
// LockServer(FALSE) is assumed to always succeed. Otherwise,
// it is impossible to implement correct semantics
HRESULT hr1 = m_spTargetCF->LockServer(FALSE);
hr1;
ATLASSERT(SUCCEEDED(hr1));
}
m_spTargetCF = pCF;
}
return hr;
}
Even If I comment Object Lock(this) , some more exceptions appear
triggered by ASSERT statements
inline HRESULT WINAPI QueryInterfaceDebug(void* pv, REFIID riid,
LPVOID* ppv, DWORD_PTR dw, IUnknown* punkTarget)
{
ATLASSERT(pv != 0);
ATLASSERT(ppv != 0);
ATLASSERT(punkTarget != 0);
CComPtr<IUnknown> spUnk;
HRESULT hr = punkTarget->QueryInterface(riid,
reinterpret_cast<void**>(&spUnk));
ATLASSERT(FAILED(hr) || spUnk != 0);
if (SUCCEEDED(hr))
{
ATLTRACE(_T("Unrecognized interface supported by target unknown"));
ATLASSERT(false);
---------------------------------------------------------------------------
> exception..
}
// We don't support this interface, so return an error.
// The operations above are for debugging purposes only,
// this function is not supposed to ever return success
return E_NOINTERFACE;
}
Simply comment out ATLASSERT(false) line. Or, you could add support for
a couple new interfaces (one is IInternetProtocolEx, I forgot what the
other one is).