找回密码
 加入
搜索
查看: 9364|回复: 15

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

 火.. [复制链接]
发表于 2013-12-30 16:11:45 | 显示全部楼层 |阅读模式
本帖最后由 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呀?
发表于 2013-12-30 18:20:39 | 显示全部楼层
回复 1# fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
 楼主| 发表于 2013-12-30 18:22:47 | 显示全部楼层
回复  fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20



    这个好主意。。。。
 楼主| 发表于 2013-12-30 18:22:52 | 显示全部楼层
回复  fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20



    这个好主意。。。。
 楼主| 发表于 2013-12-30 18:22:55 | 显示全部楼层
回复  fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20



    这个好主意。。。。
 楼主| 发表于 2013-12-30 18:23:22 | 显示全部楼层
回复  fenhanxue

给 F5 注册热键 HOTKEYSET 。。。。。
user3000 发表于 2013-12-30 18:20



    这个好主意。。。。
发表于 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

评分

参与人数 1金钱 +13 收起 理由
chamlien + 13

查看全部评分

 楼主| 发表于 2013-12-30 20:45:15 | 显示全部楼层
回复 8# 风行者


    这个厉害,学习拉,谢谢拉~
 楼主| 发表于 2013-12-30 20:45:17 | 显示全部楼层
回复 8# 风行者


    这个厉害,学习拉,谢谢拉~
发表于 2015-5-23 13:13:38 | 显示全部楼层
这个厉害,学习拉,谢谢拉~
发表于 2016-8-10 09:19:47 | 显示全部楼层
收藏学习了,谢谢分享
发表于 2016-8-10 23:27:17 | 显示全部楼层
回复收藏了
发表于 2017-2-8 22:13:27 | 显示全部楼层
回复 8# 风行者


    测试发现还少了屏蔽右键双击,加以下代码即可:
                Case $WM_RBUTTONDBLCLK   ;屏蔽右键双击
                        Return 1
发表于 2017-2-12 10:09:38 | 显示全部楼层
有一段程序正需要这个,谢谢风行者的代码。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-19 19:38 , Processed in 0.084223 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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