如何检测弹出窗口是那个窗口的

sunyuzhe 2006-11-21 02:25:44
我的一个程序有8个htmlview,html中程序会在不同的时间弹出提示对话框,
我现在想检测出到底是那个窗口弹出的消息框,请问如何解决
...全文
434 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lion_wing 2006-11-30
  • 打赏
  • 举报
回复
http://junkple.spaces.live.com/blog/cns!be473e642bbaf80a!125.entry
superarhow 2006-11-30
  • 打赏
  • 举报
回复
alert弹出之前或调用IDocHostShowUI::ShowMessage
lion_wing 2006-11-30
  • 打赏
  • 举报
回复
OnNewWindow2是指弹出新的IE窗口,而楼主所说的alert弹出的窗口是对话框
如果要想知道是哪个窗口弹出的,就要控制(拦截)每个htmlview中加载页面中JS的运行。
sunyuzhe 2006-11-29
  • 打赏
  • 举报
回复
用了spy++看到弹出窗口类的父类是MainFrame,所以检测不到是哪个子类弹出的
LiChenYue 2006-11-27
  • 打赏
  • 举报
回复
可以用工具看吧?比如VC6自带的SPY++
sunyuzhe 2006-11-27
  • 打赏
  • 举报
回复
大家帮忙看看
sunyuzhe 2006-11-24
  • 打赏
  • 举报
回复
void CMultiBrowserView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
我重载了,可是发现不了弹出的alert窗口
greenabc 2006-11-24
  • 打赏
  • 举报
回复
类似 重载 OnNewWindow 之类的方法,
xjtuzhw 2006-11-24
  • 打赏
  • 举报
回复
一般情况下,网站弹出窗口和网站的ip是同一地址段的,你可以分析弹出页面的源码看下有无关联
sunyuzhe 2006-11-23
  • 打赏
  • 举报
回复
大家帮忙解决一下啊
sunyuzhe 2006-11-22
  • 打赏
  • 举报
回复
确实,我观查了一下弹出的msgbox的父窗口不是其对应的view类,所以比较难判断
Stefine 2006-11-22
  • 打赏
  • 举报
回复
LZ的是多视图下,每个VIEW都打开网页,然后判断alert这种msgbox来自哪个网页(view)里弹出的?

想不到办法,关注ing
lion_wing 2006-11-22
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4830/4830933.xml?temp=.1040155
sunyuzhe 2006-11-22
  • 打赏
  • 举报
回复
OnNewWindow()是不会 截取下面弹出的内容的
alert("Please enter user name & password");
laolaoliu2002 2006-11-22
  • 打赏
  • 举报
回复
在IE下载网页的内容的时候截获IE的OnNewWindow事件,对他进行重载.
sunyuzhe 2006-11-22
  • 打赏
  • 举报
回复
我试了一下截获OnNewWindow2是取不到消息的,因为弹出窗口的信息不是我们程序加上的,而上htmlview中的网页根据情况弹出的,所以很难判断出
lion_wing 2006-11-21
  • 打赏
  • 举报
回复
在每个htmlview的NewWindow时,控制弹出窗口,即可以在此修改弹出窗口标题
一分之千 2006-11-21
  • 打赏
  • 举报
回复
两位大哥说的对啊,好像除了这样别的方法不太好判断了,这个消息框好像是没有父窗口之类的东西,不太好办。在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)


sunyuzhe 2006-11-21
  • 打赏
  • 举报
回复
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弹出的
sunyuzhe 2006-11-21
  • 打赏
  • 举报
回复
因为是htmlview,他弹出的都是相关网站弹出的信息,内容不是由我们来控制的,
加载更多回复(4)

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧