Question

I create hidden IWebBrowser2 object and it work's fine but after few seconds I want to change visibility to true and my application crashes.

pBrowser2->put_Visible(VARIANT_TRUE);

What I'm doing wrong ?

Was it helpful?

Solution

You're using pBrowser2 after releasing it.

You have:

pBrowser2->Release();  // pBrowser NOW INVALID!!!
srand( time( NULL ) );
//Sleep( ( std::rand() % 5000 ) + 5000 );
if(std::rand() % 100 <= chance ){
    pBrowser2->put_Visible(VARIANT_TRUE);  // instant crash here!
}

Move the call to Release() after you're done using it, or use a COM smart pointer so you don't have to manage it yourself. Simplest fix:

srand( time( NULL ) );
//Sleep( ( std::rand() % 5000 ) + 5000 );
if(std::rand() % 100 <= chance ){
    pBrowser2->put_Visible(VARIANT_TRUE);  // works
}
pBrowser2->Release();  // pBrowser NOW INVALID!!!
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top