问题描述
privatevoidbutton1_Click(objectsender,EventArgse){intparentHandle=FindWindow("ShellEmbedding",null);parentHandle=FindWindowEx(parentHandle,0,"ShellDocObjectView",null);parentHandle=FindWindowEx(parentHandle,0,"InternetExplorer_Server",null);label1.Text=Convert.ToString(parentHandle);}
在一个tabControl1里面画一个webBrowser1,旁边放一个button1,在form1_load事件中放置webBrowser1.Navigate("http://game.37.com/play.php?game_id=275&server_id=64361&ext=1|709|16650|172301|0&entergametype=tg&isold=1")。求这个网页的句柄,我是上面那么些的,总是找到不到,求解,最好是完整代码
解决方案
解决方案二:
你的webBrowser是嵌套在窗体里面的是属于窗体的一个子控件你直接FindWindowEx从桌面是找不到它的所以你还是遍历吧pulicvoidGetWindow(IntPtrhParent,IntPtrhAfter,stringstrClass,stringstrTxt,List<IntPtr>lstResult){while((hAfter=FindWindowEx(hParent,hAfter,null,null))!=IntPtr.Zero){if([GetClassName(hAfter)]==strClass&&[GetWindowText(hAftr)]==strText)lstResult.Add(hAfter);GetWindow(hAfter,IntPtr.Zero,null,null,lstResult);//用子窗体继续递归}}
上边是自己随便打的估计有错还有GetClassName判断的时候strClass最好不要用null而是用""(GetClassName==(strClass==nul?"":strClass));
解决方案三:
不是,我不是要找webBrowser这个空间的句柄,我要找的是webBrowser打开网页后,这个网页的句柄
解决方案四:
你首先先理解句柄是什么。作为标准的windows控件,webbrowser毫无疑问是有句柄的,但是,网页内容的渲染完全和windowsgui机制不同,内部的控件/内容都没有句柄。你想操作网页元素,你需要通过DOM模型控制,而不能通过控件句柄。PS:页面内部唯一有句柄的东西是ActiveX控件,它本质上不是网页内容,而是对COM组件的封装。
解决方案五:
既然使用webbrowser控件,就用Webbrower1.Document.GetElementById("ID号")
的方式访问操作里面的元素,ID号是html标记里元素的id,如textbox