fenhanxue 发表于 2014-1-21 15:20:44

_IECreateEmbedded 怎样让网页的某一部分内容居中显示?【已解决】

本帖最后由 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打开百度,会显示的内容

fenhanxue 发表于 2014-1-21 16:12:26

发现了两个解决方案:
1.笨办法: ControlMove(),算好位置和距离。。。
2.$oIE.document.body.scrollTop = $oIE.document.body.scrollTop +20

ioripalm 发表于 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-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

fenhanxue 发表于 2014-1-26 21:03:57

回复 5# 风行者


    风行大大太厉害拉~

zhouflye 发表于 2014-2-10 15:58:43

顶起,多谢!好东西值得分享

temp5c 发表于 2016-3-14 10:50:56

_IEAction($Input, "scrollintoview")

heroxianf 发表于 2016-3-14 10:58:02

本帖最后由 heroxianf 于 2016-3-14 11:05 编辑



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

veve 发表于 2018-1-24 17:42:05

留个记号应该baidu的网页的控件变了

afei2013 发表于 2018-2-23 21:12:33

回复 9# heroxianf
我也遇到了同样的问题,现在正在解决中。。。
页: [1]
查看完整版本: _IECreateEmbedded 怎样让网页的某一部分内容居中显示?【已解决】