如何检测弹出窗口是那个窗口的 我的一个程序有8个htmlview,html中程序会在不同的时间弹出提示对话框,我现在想检测出到底是那个窗口弹出的消息框,请问如何解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以给每类弹出框设相同的标题.如:MessageBox("内容","标题1",MB_OK) 因为是htmlview,他弹出的都是相关网站弹出的信息,内容不是由我们来控制的, CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST); bool bFindWindows=false; while (pMainWnd)//先列举所有的窗口 { CString strClassName; CString text; GetClassName(pMainWnd->m_hWnd,strClassName.GetBufferSetLength(100),100); ::GetWindowText(pMainWnd->m_hWnd,text.GetBufferSetLength(256),256); WINDOWINFO pwi; ::GetWindowInfo(pMainWnd->m_hWnd,&pwi); text.MakeLower(); if(::IsWindowVisible(pMainWnd->m_hWnd)) if((strClassName=="#32770"&&(text.Find("microsoft internet")!=-1||text.Find("安全警报")!=-1)|| (strClassName=="Internet Explorer_TridentDlgFrame"&&text.Find("脚本错误")!=-1)))//在window98下的ie广告类名为CabinetWClass) { if(::IsWindow(pMainWnd->m_hWnd)) pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); } 我是用这样的方法检测弹出窗口的但是这样却无法判断是那个view弹出的 两位大哥说的对啊,好像除了这样别的方法不太好判断了,这个消息框好像是没有父窗口之类的东西,不太好办。在htmlview里边要弹出消息框的时候你总得写代码进行判断吧?那时候你久写上标题1标题2呗】===================== syy64(太平洋) ( ) 信誉:145 Blog 2006-11-21 14:39:02 得分: 0 每个窗口弹出的消息内容,然后再加上窗口标示的字符串,作为提示字符串。 Top zhucde(【風間苍月】★MVP★【虚拟闲人】) ( ) 信誉:272 Blog 2006-11-21 14:39:26 得分: 0 可以给每类弹出框设相同的标题.如:MessageBox("内容","标题1",MB_OK) 在每个htmlview的NewWindow时,控制弹出窗口,即可以在此修改弹出窗口标题 我试了一下截获OnNewWindow2是取不到消息的,因为弹出窗口的信息不是我们程序加上的,而上htmlview中的网页根据情况弹出的,所以很难判断出 在IE下载网页的内容的时候截获IE的OnNewWindow事件,对他进行重载. OnNewWindow()是不会 截取下面弹出的内容的 alert("Please enter user name & password"); http://community.csdn.net/Expert/topic/4830/4830933.xml?temp=.1040155 LZ的是多视图下,每个VIEW都打开网页,然后判断alert这种msgbox来自哪个网页(view)里弹出的?想不到办法,关注ing 确实,我观查了一下弹出的msgbox的父窗口不是其对应的view类,所以比较难判断 类似 重载 OnNewWindow 之类的方法, void CMultiBrowserView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)我重载了,可是发现不了弹出的alert窗口 可以用工具看吧?比如VC6自带的SPY++ 用了spy++看到弹出窗口类的父类是MainFrame,所以检测不到是哪个子类弹出的 OnNewWindow2是指弹出新的IE窗口,而楼主所说的alert弹出的窗口是对话框如果要想知道是哪个窗口弹出的,就要控制(拦截)每个htmlview中加载页面中JS的运行。 alert弹出之前或调用IDocHostShowUI::ShowMessage http://junkple.spaces.live.com/blog/cns!be473e642bbaf80a!125.entry 如何把추가这样的代码转换成韩文? 如何将FreeImage对象转换成HANDLE? 谁有潘爱民的《COM原理与运用》,那里可以下载? 对象之间的通信,通过什么方式最好! oh yeah.提早开门了。 请问:FTP服务器的工作原理是怎样的? VC中,如何以网格形式显示数据库内容? 有关十字链表的问题。 有关DLL的问题! 请问vc中怎么删除文件中的一行? 打包高手进来看看! mediaplayer控件 列表的问题
bool bFindWindows=false;
while (pMainWnd)//先列举所有的窗口
{
CString strClassName;
CString text;
GetClassName(pMainWnd->m_hWnd,strClassName.GetBufferSetLength(100),100);
::GetWindowText(pMainWnd->m_hWnd,text.GetBufferSetLength(256),256);
WINDOWINFO pwi;
::GetWindowInfo(pMainWnd->m_hWnd,&pwi);
text.MakeLower();
if(::IsWindowVisible(pMainWnd->m_hWnd))
if((strClassName=="#32770"&&(text.Find("microsoft internet")!=-1||text.Find("安全警报")!=-1)||
(strClassName=="Internet Explorer_TridentDlgFrame"&&text.Find("脚本错误")!=-1)))//在window98下的ie广告类名为CabinetWClass)
{
if(::IsWindow(pMainWnd->m_hWnd))
pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT);
}
我是用这样的方法检测弹出窗口的
但是这样却无法判断是那个view弹出的
】=====================
syy64(太平洋) ( ) 信誉:145 Blog 2006-11-21 14:39:02 得分: 0
每个窗口弹出的消息内容,然后再加上窗口标示的字符串,作为提示字符串。
Top
zhucde(【風間苍月】★MVP★【虚拟闲人】) ( ) 信誉:272 Blog 2006-11-21 14:39:26 得分: 0
可以给每类弹出框设相同的标题.如:MessageBox("内容","标题1",MB_OK)
alert("Please enter user name & password");
我重载了,可是发现不了弹出的alert窗口
如果要想知道是哪个窗口弹出的,就要控制(拦截)每个htmlview中加载页面中JS的运行。