找回密码
 加入
搜索
查看: 1432|回复: 3

[AU3基础] _IECreateEmbedded函数使用问题【已解决】

[复制链接]
发表于 2019-9-21 12:53:12 | 显示全部楼层 |阅读模式
本帖最后由 mikezunya 于 2019-9-22 17:05 编辑

请教,为什么_IECreateEmbedded函数、GUICtrlCreateObj函数使用后,用_IENavigate打开浏览器,然后在该浏览器下发现Del、←删除键,Ctrl+C 用不了?这是为什么?有没有人遇到过


版主可以把这个帖子删除掉了,已经解决了。其实用一楼的那个办法也可以。
发表于 2019-9-21 17:55:41 | 显示全部楼层
看看这个示例

#include <ie.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <ScrollBarConstants.au3>
#include <WinAPI.au3>
$WinMain = GUICreate("hello", 510, 510)
$MainMsgBoardInput = _GUICtrlEdit_Create($WinMain, "", 5, 450, 498, 21, BitOR($ES_MULTILINE, $ES_WANTRETURN,  $ES_AUTOVSCROLL))
$oMainIE = _IECreateEmbedded()
GUICtrlCreateObj($oMainIE, 1, 1, 498, 435)
$backspace = GUICtrlCreateDummy()
Dim $AccelKeys[1][2] = [["{BACKSPACE}", $backspace]]
GUISetAccelerators($AccelKeys, $WinMain)
_IENavigate($oMainIE, "about:blank")
GUISetState(@SW_SHOW)
While 1
        $mMsg = GUIGetMsg()
        Switch $mMsg

                Case $backspace
                        If _WinAPI_GetFocus() = $MainMsgBoardInput Then
                                $out = _GUICtrlEdit_GetText($MainMsgBoardInput)
                                _GUICtrlEdit_SetText($MainMsgBoardInput, StringTrimRight($out, 1))
                                _GUICtrlEdit_SetPos($MainMsgBoardInput, -1, -1)
                        EndIf

                Case -3
                        Exit
        EndSwitch
WEnd

Func _GUICtrlEdit_SetPos($hWnd, $iLine, $iColumn = 0)
        If Not IsHWnd($hWnd) Then
                $hWnd = GUICtrlGetHandle($hWnd)
                If $hWnd = 0 Then
                        Return SetError(1, 0, 0)
                EndIf
        EndIf
        Local $Lenght, $Num = 0, $Count = _GUICtrlEdit_GetLineCount($hWnd)
        If $iLine > $Count - 1 Then
                $Num = _GUICtrlEdit_GetTextLen($hWnd)
        Else
                If $iLine < 0 Then
                        $iLine = $Count - 1
                EndIf
                For $i = 0 To $iLine - 1
                        $Num += _GUICtrlEdit_LineLength($hWnd, $i) + 2 ; + @CR + @LF
                Next
                $Lenght = _GUICtrlEdit_LineLength($hWnd, $iLine)
                If ($iColumn < 0) Or ($iColumn > $Lenght) Then
                        $iColumn = $Lenght
                EndIf
                $Num += $iColumn
        EndIf
        _GUICtrlEdit_SetSel($hWnd, $Num, $Num)
        _GUICtrlEdit_Scroll($hWnd, $SB_SCROLLCARET)
        Return 1
EndFunc   ;==>_GUICtrlEdit_SetPos


 楼主| 发表于 2019-9-22 16:13:46 | 显示全部楼层
本帖最后由 mikezunya 于 2019-9-22 17:04 编辑

非常感谢这位大神热心回帖,是我自己代码写的有问题


 楼主| 发表于 2019-9-22 16:25:36 | 显示全部楼层
本帖最后由 mikezunya 于 2019-9-22 17:04 编辑

是我自己代码写的问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 17:35 , Processed in 0.232888 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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