Merhabalar. Sorunuma çözüm buldum. Bilmek isteyen arkadaşlarımız için paylaşmak istedim bende.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// this assumes that you've added an instance of WebBrowser and named it webBrowser to your form
SHDocVw.WebBrowser_V1 axBrowser = (SHDocVw.WebBrowser_V1)webBrowser.ActiveXInstance;
// listen for new windows
axBrowser.NewWindow += axBrowser_NewWindow;
}
void axBrowser_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
{
// cancel the PopUp event
Processed = true;
// send the popup URL to the WebBrowser control
webBrowser.Navigate(URL);
}
}
Bu kodları kendi projeme göre derlediğimde:
System.Runtime.InteropServices.COMException: 'İstenen kaynak kullanımda. (HRESULT özel durum döndürdü: 0x800700AA)' hatasını alıyordum. Çözüm olarak kodumu aşağıdaki gibi güncelleyip derlediğimde probleme çözüm getirmiş oldum.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SHDocVw.WebBrowser_V1 axBrowser = (SHDocVw.WebBrowser_V1)webBrowser.ActiveXInstance;
axBrowser.NewWindow += axBrowser_NewWindow;
}
void axBrowser_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
{
// cancel the PopUp event
Processed = true;
if(!webBrowser1.IsBusy)
{
webBrowser.Navigate(URL); // URL kısmına kullanmakta olduğunuz web sitesini yazıyoruz.
}
// send the popup URL to the WebBrowser control
}
}
IsBusy: Worker’ın bir iş yapıp yapmadığını kontrol etmek için IsBusy kullanılır.Worker çalışıyorsa yani bir iş yapıyorsa ve bu iş bitmemişse “true” değerini, çalışmayı tamamlamış ise “false” değeri döner. Bu fonksiyonu kullandığımda bir linke tıkladığımda sayfa açılır pencere yerine webrowser üzerinde açılıyor. Ve sayfa da oturum zaman aşımına uğramamış oluyor.