fenhanxue 发表于 2013-12-30 16:11:45

GUI内嵌IE,如何禁用右键以及禁用F5刷新?【已解决】

本帖最后由 fenhanxue 于 2013-12-30 20:45 编辑

gui内嵌IE,貌似可以通过这行代码来禁用右键:_IEHeadInsertEventScript($oIE, "document", "oncontextmenu", "return false")不过有个bug,就是如果输入“F5”一刷新页面,上面的这行禁用右键的代码就失效了。。。。。

源代码如下:#include <IE.au3>
#include <GUIConstantsEx.au3>
    $oIE = _IECreateEmbedded()
        $gui1 = GUICreate("test",1200,800)
        GUISetState(@SW_SHOW)
        $bb = GUICtrlCreateObj($oIE,10,10,1000,790)
       
        _IENavigate($oIE,"http://www.baidu.com")
        _IEHeadInsertEventScript($oIE, "document", "oncontextmenu", "return false")
       
       
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd思考了下,这样修改倒是可以:#include <IE.au3>
#include <GUIConstantsEx.au3>
    $oIE = _IECreateEmbedded()
        $gui1 = GUICreate("test",1200,800)
        GUISetState(@SW_SHOW)
        $bb = GUICtrlCreateObj($oIE,10,10,1000,790)
       
        _IENavigate($oIE,"http://www.baidu.com")
        _IEHeadInsertEventScript($oIE, "document", "oncontextmenu", "return false")
       
       
While 1
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;在这里加了一段代码,但这样代码会不会运行的效率会很低很低。。。。。。
        Sleep(1)
        _IEHeadInsertEventScript($oIE, "document", "oncontextmenu", "return false")   ;
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;
       
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd

但这样的代码,会不会源源不断地往IEHeaD里面插入相同的代码,导致程序效率会很低。。。



另外,求助,有没有办法,禁用掉F5呀?

user3000 发表于 2013-12-30 18:20:39

回复 1# fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。

fenhanxue 发表于 2013-12-30 18:22:47

回复fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20 http://www.autoitx.com/images/common/back.gif


    这个好主意。。。。

fenhanxue 发表于 2013-12-30 18:22:52

回复fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20 http://www.autoitx.com/images/common/back.gif


    这个好主意。。。。

fenhanxue 发表于 2013-12-30 18:22:55

回复fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20 http://www.autoitx.com/images/common/back.gif


    这个好主意。。。。

fenhanxue 发表于 2013-12-30 18:23:22

回复fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20 http://www.autoitx.com/images/common/back.gif


    这个好主意。。。。

zch11230 发表于 2013-12-30 18:33:17

hotkeyset是全局的吧用GUISetAccelerators更合理点。

风行者 发表于 2013-12-30 19:01:56

从控件上屏蔽右键
#include <IE.au3>
#include <Winapi.au3>
#include <GUIConstantsEx.au3>
Global Const $WM_RBUTTONDOWN = 0x0204
$oIE = _IECreateEmbedded()
$gui1 = GUICreate("test", 1200, 800)
GUISetState(@SW_SHOW)
$bb = GUICtrlCreateObj($oIE, 10, 10, 1000, 790)
_IENavigate($oIE, "http://www.baidu.com")
$handle = ControlGetHandle($gui1,"","Internet Explorer_Server1")
$wProcOld = GUIRegisterMsgEx($handle, "_MyWindowProc") ;控件子类化


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        GUIDelete($gui1)
                        Exit
        EndSwitch
WEnd


Func GUIRegisterMsgEx($ctrID, $funcName) ;控件id,函数名
        Local $wProcNew = DllCallbackRegister($funcName, "ptr", "hwnd;uint;long;ptr")
        Local $wProcOld = _WinAPI_SetWindowLong($ctrID, $GWL_WNDPROC, DllCallbackGetPtr($wProcNew))
        Return $wProcOld
EndFunc   ;==>GUIRegisterMsgEx

Func _MyWindowProc($hWnd, $uiMsg, $wParam, $lParam)
        Switch $uiMsg
                Case $WM_RBUTTONDOWN
                        Return 1   ;屏蔽右键
        EndSwitch
        ;向默认窗口进程传递未处理过的消息
        Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $uiMsg, $wParam, $lParam)
EndFunc   ;==>_MyWindowProc

fenhanxue 发表于 2013-12-30 20:45:15

回复 8# 风行者


    这个厉害,学习拉,谢谢拉~

fenhanxue 发表于 2013-12-30 20:45:17

回复 8# 风行者


    这个厉害,学习拉,谢谢拉~

253357752 发表于 2015-5-23 13:13:38

这个厉害,学习拉,谢谢拉~

zghwelcome 发表于 2016-8-10 09:19:47

收藏学习了,谢谢分享

chamlien 发表于 2016-8-10 23:27:17

回复收藏了

chamlien 发表于 2017-2-8 22:13:27

回复 8# 风行者


    测试发现还少了屏蔽右键双击,加以下代码即可:
                Case $WM_RBUTTONDBLCLK   ;屏蔽右键双击
                        Return 1

jsdn2000 发表于 2017-2-12 10:09:38

有一段程序正需要这个,谢谢风行者的代码。
页: [1] 2
查看完整版本: GUI内嵌IE,如何禁用右键以及禁用F5刷新?【已解决】