找回密码
 加入
搜索
查看: 5441|回复: 10

[IE类操作] _IECreateEmbedded 怎样让网页的某一部分内容居中显示?【已解决】

  [复制链接]
发表于 2014-1-21 15:20:44 | 显示全部楼层 |阅读模式
本帖最后由 fenhanxue 于 2014-1-26 21:04 编辑

原代码为:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

Local $oIE = _IECreateEmbedded()

$Form1 = GUICreate("Form1", 674, 134, 192, 124)

GUICtrlCreateObj($oIE, 5, 5, 600, 120)
GUISetState(@SW_SHOW)

_IENavigate($oIE, "http://www.baidu.com")

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd
运行后,会这样显示:


而因为内嵌的IE控件窗口比较小,想直接实在这样的效果:

(即把百度搜索的核心内容,直接居中显示,应该怎么改代码?)

也就是比如,下面这张图是直接用IE打开百度,会显示的内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-1-21 16:12:26 | 显示全部楼层
发现了两个解决方案:
1.  笨办法: ControlMove()  ,算好位置和距离。。。
2.  $oIE.document.body.scrollTop = $oIE.document.body.scrollTop +20
发表于 2014-1-21 21:21:58 | 显示全部楼层
留个名,我用的到!以后有好方法记得来更新啊!
发表于 2014-1-21 22:23:45 | 显示全部楼层
本帖最后由 骗子 于 2014-1-21 22:25 编辑

GUICtrlCreateObj($oIE, -100, -50, 1200, 1200)
自己调节一下 负数的大小就可以了,将大小调节一下可以去除滚动条,防止用户拖动滚动条
这个是在一个163的登录程序中看到的,你可以搜搜看
发表于 2014-1-25 08:00:19 | 显示全部楼层
#include <WindowsConstants.au3>
#include <IE.au3>
Opt("GUIResizeMode", 1)

Global $oIE = _IECreateEmbedded()
$gui = GUICreate("测试", 700, 600, Default, Default, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX))
$obj = GUICtrlCreateObj($oIE, 0, 0, 700, 600)
_IENavigate($oIE, "http://www.baidu.com/")
Local $op = _IEGetObjById($oIE,"nv")
Local $of = _IEGetObjById($oIE, "su")

;获取元素文本矩型
Local $pRect = $op.getBoundingClientRect()
Local $fRect = $of.getBoundingClientRect()

;计算位置
Local $left = -$pRect.left
Local $top = -$pRect.top
Local $width = $pRect.right-$pRect.left
Local $height = $fRect.bottom

_HideScroll($oIE) ;隐藏滚动条
;调整窗口和控件位置
Local $wPos = WinGetPos($gui)
Local $h = $wPos[3]-600
WinMove($gui,"",Default,Default,$width,($fRect.bottom-$pRect.top)+$h)
GUICtrlSetPos($obj,$left,$top,$width,$height)

GUISetState() ;显示窗口
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")

While 1
        Sleep(100)
WEnd

Func WM_SYSCOMMAND($hWnd, $sMsg, $sWParam, $slParam)
        Switch $sWParam
                Case 61536 ;$SC_CLOSE
                        Exit
        EndSwitch
EndFunc   ;==>WM_SYSCOMMAND

Func _HideScroll($Temp_Object)
        Local $hText = 'var temp_h1 = document.body.clientHeight;'& _
'var temp_h2 = document.documentElement.clientHeight;'& _
'var isXhtml = (temp_h2<=temp_h1&&temp_h2!=0)?true:false;'& _ 
'var htmlbody = isXhtml?document.documentElement:document.body;'& _
'htmlbody.style.overflow = "hidden";'
$Temp_Object.document.parentwindow.execscript($hText,"javascript")
EndFunc
 楼主| 发表于 2014-1-26 21:03:57 | 显示全部楼层
回复 5# 风行者


    风行大大太厉害拉~
发表于 2014-2-10 15:58:43 | 显示全部楼层
顶起,多谢!好东西值得分享
发表于 2016-3-14 10:50:56 | 显示全部楼层
_IEAction($Input, "scrollintoview")
发表于 2016-3-14 10:58:02 | 显示全部楼层
本帖最后由 heroxianf 于 2016-3-14 11:05 编辑



编译的时候出错了,   AUTOIT版本是论坛最新版3.3.14.2

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2018-1-24 17:42:05 | 显示全部楼层
留个记号  应该baidu的网页的控件变了
发表于 2018-2-23 21:12:33 | 显示全部楼层
回复 9# heroxianf
我也遇到了同样的问题,现在正在解决中。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 04:25 , Processed in 0.079762 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表