例如AxWebBrowser 浏览一个网页,网页上的关闭此页按钮(window.close),会弹 出一个确认对话框,如何在code部分捕捉用户点击的是哪一个?想在2个选择的事件都作自己的一个方法例如
if(button == "Yes"){
OnClose();
}else{
OnCloseNo();
}
if(button == "Yes"){
OnClose();
}else{
OnCloseNo();
}
解决方案 »
- 以前做的一个delphi的三层分布式程序,如何改成C#的?主要是分布这一块的实现
- ado方式执行sql语句的疑问
- listview中如何通过嵌入checkbox以选中选择数据行?
- C#怎样能获取到USB拔插设备?
- 域名指向本机了,并用tom.com邮箱发信给本域名,本机监听110监口.怎么没发现有连接上的呢?
- (0分求解,我分用完了,我得到的分都不能用,也不知道为啥):怎样获得DLL的返回值以及参数 等待ing...
- 窗口无法隐藏的问题
- 消息发送。。。。。
- c#中如何这样打开文件?
- 大家有没有下面的源码?
- 求ASP.net好书? 得好书马上结贴!!!!!!!!!
- 怎么把一个字符串写到文本文件的最后面
new SHDocVw.DWebBrowserEvents2_WindowClosingEventHandler(OnWindowClosing);
ie_events.WindowClosing += WindowClosingE;
private void OnWindowClosing(bool isChildWindow, ref bool cancel)
{
try
{
cancel = true;//显示确认框,但这里其实已经执行了关闭事件,这时候AxWebBrowser 其实是已经被关掉了 }
catch(Exception ex)
{
Console.WriteLine(" ex.Message+"\r\n"+ex.StackTrace);
}
}
我需要捕捉javascript事件
CallClose();
}else{
CallCloseNo();
}在网页的js脚本中写
function callClose()
{
window.external.CallUIClose
}在程序中写
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IJsCall
{
void CallUIClose();
......
} // interface IJsCall
public class JsCallClass : IJsCall
{
private Form1 frm; public JsCallClass(Form1 pfrm)
{
this.frm = pfrm;
} #region IJsCall 成员 public void CallUIClose()
{
......
}
......
}还有这一段
class test : IDocHostUIHandler
{
private PlayerMainForm frm;
public MarqueeUIHandler(PlayerMainForm pfrm)
{
this.frm = pfrm;
} #region IDocHostUIHandler 成员
public void EnableModeless(int fEnable)
{
// TODO: 添加 MarqueeUIHandler.EnableModeless 实现
} public void GetOptionKeyPath(out string pchKey, uint dw)
{
// TODO: 添加 MarqueeUIHandler.GetOptionKeyPath 实现
pchKey = null;
} public void TranslateAccelerator(ref tagMSG lpmsg, ref Guid pguidCmdGroup, uint nCmdID)
{
// TODO: 添加 MarqueeUIHandler.TranslateAccelerator 实现
} public void FilterDataObject(MsHtmHstInterop.IDataObject pDO, out MsHtmHstInterop.IDataObject ppDORet)
{
// TODO: 添加 MarqueeUIHandler.FilterDataObject 实现
ppDORet = null;
} public void OnFrameWindowActivate(int fActivate)
{
// TODO: 添加 MarqueeUIHandler.OnFrameWindowActivate 实现
} public void UpdateUI()
{
// TODO: 添加 MarqueeUIHandler.UpdateUI 实现
} public void ShowContextMenu(uint dwID, ref MsHtmHstInterop.tagPOINT ppt, object pcmdtReserved, object pdispReserved)
{
// TODO: 添加 MarqueeUIHandler.ShowContextMenu 实现
} public void TranslateUrl(uint dwTranslate, ref ushort pchURLIn, System.IntPtr ppchURLOut)
{
// TODO: 添加 MarqueeUIHandler.TranslateUrl 实现
} public void ShowUI(uint dwID, IOleInPlaceActiveObject pActiveObject, IOleCommandTarget pCommandTarget, IOleInPlaceFrame pFrame, IOleInPlaceUIWindow pDoc)
{
// TODO: 添加 MarqueeUIHandler.ShowUI 实现
} public void GetExternal(out object ppDispatch)
{
// TODO: 添加 MarqueeUIHandler.GetExternal 实现
ppDispatch = new JsCallClass(frm);
} public void ResizeBorder(ref MsHtmHstInterop.tagRECT prcBorder, IOleInPlaceUIWindow pUIWindow, int fRameWindow)
{
// TODO: 添加 MarqueeUIHandler.ResizeBorder 实现
} public void GetDropTarget(IDropTarget pDropTarget, out IDropTarget ppDropTarget)
{
// TODO: 添加 MarqueeUIHandler.GetDropTarget 实现
ppDropTarget = null;
} public void GetHostInfo(ref _DOCHOSTUIINFO pInfo)
{
pInfo.dwFlags |= ( 0x08/*0x08 DOCHOSTUIFLAG_SCROLL_NO*/ |
0x04 /*DOCHOSTUIFLAG_NO3DBORDER*/
);
} public void HideUI()
{
// TODO: 添加 MarqueeUIHandler.HideUI 实现
} public void OnDocWindowActivate(int fActivate)
{
// TODO: 添加 MarqueeUIHandler.OnDocWindowActivate 实现
} void MsHtmHstInterop.IDocHostUIHandler.TranslateAccelerator(ref MsHtmHstInterop.tagMSG lpmsg, ref Guid pguidCmdGroup, uint nCmdID)
{
// TODO: 添加 MarqueeUIHandler.MsHtmHstInterop.IDocHostUIHandler.TranslateAccelerator 实现
} void MsHtmHstInterop.IDocHostUIHandler.TranslateUrl(uint dwTranslate, ref ushort pchURLIn, System.IntPtr ppchURLOut)
{
// TODO: 添加 MarqueeUIHandler.MsHtmHstInterop.IDocHostUIHandler.TranslateUrl 实现
} #endregion
}
ICustomDoc doc = (ICustomDoc) axWebBrowser1.Document;
doc.SetUIHandler( new test(this) );
例如就是用axWebBrowser1浏览一个网页,网页上有关闭的js(window.close())现在的问题就是如何在winform上捕捉到这个js事件
然后在网页里加上这个方法
function callClose()
{
window.external.CallUIClose()
}
这个就是用来让winform捕捉的,直接让winform捕捉我不知道怎么做,但这样做也可以实现