问题是这样的:我想用WebBrowser掉入一个页面后把VSCROLL放到最下面,试过很多方法就是不行
就是下面这句也只是到倒数第二行,没有到最低一行,sendMessage(GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);My God ~~~~ Help me
就是下面这句也只是到倒数第二行,没有到最低一行,sendMessage(GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);My God ~~~~ Help me
解决方案 »
- D7怎么调用C#编写的dll
- 一段统计两个日期之间的记录数的代码有问题
- 是不是BUG??
- 有关dehphi中使用的 sql
- ●●●●哪有可打印的李维的《Delphl5.x ADO/MTS/CoM+高级程序设计篇》●●●●
- 数据集(TClientData)与数据提供者(TDataSetProvider)的问题(主要是问题能不能被解决,分数是多得很)
- 我想查找字段为'注册类型'中包含'公司'的所以有记录
- 如何得到FTP上传断点!尽我能力给分(43分)目前只允许我给这么多分
- DNS遍程超级难题,网络编程高手请进!!!!!!
- 有关自动化文档的一个问题?
- 请问RAS拨号中具体的TRASDIALPARAMS的结构?
- 比如一个时间与现在时间相比大于10分钟这个条件,怎么写??
WebBrowser1.Refresh;就没有效果了,一点反应没有!??真TMD怪了!!
IE.Refresh;
sendMessage(GetWindow(GetWindow(IE.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);
而这样不行:
IE.Refresh;
postMessage(GetWindow(GetWindow(IE.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);
sendMessage(GetWindow(GetWindow(IE.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);
我是这样用的,可VSCROLL不是在最低下,是在倒数第二行!!!O..My God~~
页面也不是HTML,而是XML+XSL为什么到不了最后一行??!!!我找!!我找!!!我找找找!!!!
IE.Refresh; //重新掉入;
sendMessage(GetWindow(GetWindow(IE.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);如果不修改,没有问题,但是修改(加入)几行就到倒数第几行!!?
可不修改XML文件我的功能又实现不了!我就是要加新元素吗!!还发现一个好玩的
ModifyXML('aaa'); //修改XML,加入新的元素;
IE.Refresh; //重新掉入;
IE.Refresh2; //好玩死了;
sendMessage(GetWindow(GetWindow(IE.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);想象很好玩 hehe^^
你在CSDN中打开一帖子,打ScrollBar拉到一定位置,这时按下IE的刷新!!!这时你就看到效果了,页面重新掉入后,ScrollBar还是在你拉到的那个位置。
我的问题就是类似这种现像,怎么解决呢??????? :((~~
Application.ProcessMessages;//和IE版本相关的,5.5以下的IE有很多问题
我的IE是6.0+Sp
你的方法也试过了,第一次修改都没有通过 :(我也正在试其它的方法,有什么进展我会通知大家,做完后进行总结,为以后的弟兄们积累点经验吧
就是这样做的,不行 :-(
ehom(?!)的方法,第一次修改后成功了,以后再修改ScrollBar就不动了,一直在那个地方不动了??!!
我在修改了一个页面后(加入了一行元素),然后再调入
WebBrowser时我想叫WebBrowser的VSCROLL放到最后一行,以
便叫用户看到我新加入的元素,但就是用什么方法也到不了最
后一行,最好的情况是到倒数第二行,总是最后一行显示不出
来!
程序流程为:
begin
// 修改页面;
// 刷新页面;
// 发送VSCROLL到最后一行的消息;
end; 先后进行了多次试验,分别用
SendMessage(GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);
PostMessage(GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0);
IE.OleObject.document.parentWindow.scrollTo(MaxInt, MaxInt);
进行了试验,发现Send比Post效果要好,ehom(?!) 进行了讲解,他说:
“至于PostMessage效果不如用SendMessage是因为,PostMessage只是将消息放到消息队列中,不确定何时及是否处理.而用SendMessage是立即执行,只有消息被处理后才会返回.”
且从ehom(?!) 的分析中也明白了一点:“我钻牛角了:(”(多线程我都试了)
重新修改流程后如下,效果也有了一点起色,最起马第一次修改后可以通过了
begin
//修改页面;
//刷新页面;
end;
在OnDownloadComplete中发送消息,结果,是第一次可以,再来就完蛋了,VSCROLL就停在那里不动了!??
后来在无望的情况下,看见键盘可以叫IE页面滚动!!!哈哈哈哈(真是SB呀,这时候才想出来!)
OnDownloadComplete中的代码如下:
begin
if webbrowser1.Document <> nil then //判断内容是否为空
with webbrowser1.Application as IOleobject do // 使用DoVerb使WebBrowser1获得焦点
DoVerb(OLEIVERB_UIACTIVATE, nil, webbrowser1, 0, Handle, GetClientRect);
keybd_event( VK_DOWN, MapVirtualKey( VK_DOWN, 0 ), 0 , 0 ); // 发送键盘消息
keybd_event( VK_DOWN, MapVirtualKey( VK_DOWN, 0 ), KEYEVENTF_KEYUP , 0 );
sendMessage(GetWindow(GetWindow(webbrowser1.Handle,GW_CHILD),GW_CHILD), WM_VSCROLL, SB_BOTTOM, 0); //发送到底消息
end;运行时还要在Uses中加入ActiveX单元
Delphi的帮助中是这样对DoVerb进行说明的:Requests that the OLE object perform some action.procedure DoVerb(Verb: Integer);DescriptionCall DoVerb to request that the OLE object perform one of the actions listed by the ObjectVerbs property. OLE defines several verbs, such as ovShow (to display the OLE object) and ovPrimary (the default action, usually to activate the OLE object). OLE objects can also define their own custom verbs. Use the ObjectVerbs property to get a list of those custom verbs.我打开ActiveX单元文件找到下面些值
{ from OLE2.H }
{$EXTERNALSYM OLEIVERB_PRIMARY}
OLEIVERB_PRIMARY = 0;
{$EXTERNALSYM OLEIVERB_SHOW}
OLEIVERB_SHOW = -1;
{$EXTERNALSYM OLEIVERB_OPEN}
OLEIVERB_OPEN = -2;
{$EXTERNALSYM OLEIVERB_HIDE}
OLEIVERB_HIDE = -3;
{$EXTERNALSYM OLEIVERB_UIACTIVATE}
OLEIVERB_UIACTIVATE = -4;
{$EXTERNALSYM OLEIVERB_INPLACEACTIVATE}
OLEIVERB_INPLACEACTIVATE = -5;
{$EXTERNALSYM OLEIVERB_DISCARDUNDOSTATE}
OLEIVERB_DISCARDUNDOSTATE = -6;
.......希望对大家以后的开发有所帮助=====================================问题没有真正解决!!!!!!!最后谢谢大家的积极搀合!!!!特别感谢:
cg1120(代码最优化-§新年祝福你,好运伴着你§)
westfly(西翔)
ehom(?!)