VB实现屏蔽文本框右键菜单的复制、粘贴等功能的方法

本文实例讲述了VB屏蔽文本框中的右键菜单、复制、粘贴等功能的实现方法。该功能就是禁止文本框的右键功能,造成点击鼠标右键无效。是非常常见的一类实用功能。

具体的功能模块代码如下:

'==========================================================
'| 模 块 名 | TextBoxDisableAbility
'| 说  明 | 禁止文本框的功能
'==========================================================Option Explicit
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private Const WM_CUT = &H300 '-------------剪切消息
Private Const WM_COPY As Long = &H301 '-------------复制消息
Private Const WM_PASTE As Long = &H302 '-------------粘贴消息
Private Const WM_CLEAR = &H303 '-------------删除消息[右键菜单的删除]
Private Const EM_UNDO = &HC7 '-------------撤销消息
Private Const WM_CONTEXTMENU = &H7B '-------------右键菜单
Private prevWndProc   As Long
Private Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Select Case Msg
  Case WM_CUT, WM_COPY, WM_PASTE, WM_CLEAR, EM_UNDO, WM_CONTEXTMENU
    '这里处理自定义的事件,最好为空
  Case Else
    '回调系统函数处理
    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
  End Select
End Function
Public Sub DisableAbility(TargetTextBox As TextBox)
  '程序启动时调用这个
  prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC)
  SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub

本代码的功能屏蔽文本框的右键菜单、复制、粘贴等,在不少的程序中都可以见到这些功能。共享给各位VB爱好者,希望能对大家有所帮助!

(0)

相关推荐

  • VB使用XMLHTTP实现Post与Get的方法

    本文所述为visual basic6.0的一个模块方法,是使用XMLHTTP实现Post与Get功能,虽然是一个老代码,但是可以替代Inet控件,实现数据通讯.很值得学习借鉴一下. 主要模块代码如下: '========================================================== '| 模 块 名 | XMLHTTP '| 说 明 | 替代Inet控件,实现数据通讯 '============================================

  • VB实现鼠标绘图实例代码

    本文所述为VB实现鼠标绘图的实例,该实例实现线条颜色和线宽可自设,当按下鼠标按键时绘图开始并记录最初的起点,如果不是处在绘图状态则退出该过程,如果处在绘图状态则从起点到目前鼠标所在点绘制直线,然后将当前鼠标所在点作为新的起点,当释放鼠标按键时绘图结束. 具体的功能代码如下: VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx" Begin VB.For

  • VB读取线程、句柄及写入内存的API代码实例

    本文所述实例为VB读取内存.线程及句柄的一个API,对涉及系统底层操作的VB编程有一定的帮助,需要的读者可以参考使用.这个API可获取到线程ID,写内存,包括进程句柄,ByVal 内存区地址,数据,总长度,已经完成长度,读取进程,包括进程句柄,ByVal 内存区地址,读取来的数据存放处,要读取的长度,已经读取的长度,内存分配(进程柄,地址[好像只要丢个0进去就行],长度,权限1[MEM_COMMIT],权限2[PAGE_READWRITE])返回:分配到的内存起始地址等功能. 具体实现代码如下:

  • VB的TextBox文本框实现垂直居中显示的方法

    本文实例代码可以实现让VB的TextBox文本框垂直居中显示效果.此处需要注意:Form_Load()窗体代码中的多行属性设置必须为真,即Text1.MultiLine = True,该属性为只读属性,请在设计时修改,换行会被之后的代码屏蔽,不想屏蔽可自行修改,调用此函数就好了. 具体的功能代码如下: '================================================================================ '| 模 块 名 | TextB

  • VB6实现连接Access数据库的ADODB代码实现方法

    本文实例讲述了使用ADODB.Connection连接access数据库的方法,驱动类型版本为:Microsoft.Jet.OLEDB.4.0.在VB的数据库操作中,连接数据库是第一步,也是最基本的,本文所述的这个例子,对于初学者学习如何在VB中连接Access数据库有着很好的借鉴参考价值. 具体实现代码如下: VERSION 5.00 Begin VB.Form 操作数据库 Caption = "VB操作数据库" ClientHeight = 3645 ClientLeft = 49

  • VB的32位程序在64位系统中出现文件和注册表自动转向的解决方法

    通常用VB 写的程序在32位系统上可以正常的运行,但到了64位系统中虽然可以运行但是无法修改OEM信息.经过查找原因可以发现,当我们在访问文件夹"SYSTEM32"的时候系统会自动转向到文件夹"SYSWOW64"下,当我们在访问某些注册表键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面. 先来谈谈文件系统的转向,查找了一些资料,并没有VB相关的资料,但是可以查到2个相关函数:Wow64DisableWow64FsRedirect

  • VB实现的倒计时类代码详解

    本文所述为用VB制作倒计时程序用到的一个Module类代码,是基于控制台的倒计时程序,可供VB初学者或者VB爱好者参考学习,当然读者也可以将其拷贝代码到VB工程里面直接使用,不过需要自己创建相关的代码,对于初学者来说,也是很容易看懂的一段代码. 具体功能代码如下: Module Module1 Sub Main() Dim a As Date Dim h, m, s As Integer Dim n, i As Long Dim x, z As Long Dim y As Long Consol

  • VB使用shell函数打开外部exe程序的实现方法

    本文实例主要实现了VB调用外部exe程序来运行的功能,这里主要是使用shell函数来执行,shell函数主要用来打开一个外部的exe可执行文件,例如,在sub模块内:Shell "notepad", vbNormalFocus,代表以正常模式运行记事本程序,vbNormalFocus是shell的参数,意思是正常模式,当然它还有vbMaximizedFocus最大化模式,vbMinimizedFocus最小化模式,vbHide隐藏模式等多种运行方式可选择. 具体的代码例子及注释如下:

  • VB调用Word拼写检查功能实例

    众所周知,Word有自带的拼写检查功能.VB中想要实现调用 Word 拼写检查功能其实很简单就可以实现,方法是先建立word对象,然后把需要检查的字符串放到 WORD中,调用word拼写检查,再取出返回值,最后关闭对象. 各个步骤的具体实现代码如下所示: Function CheckSpell(IncorrectText as string) as string Dim Word As Object, retText$ On Error Resume Next '建立WORD对象并打开 Set

  • VB实现屏蔽文本框右键菜单的复制、粘贴等功能的方法

    本文实例讲述了VB屏蔽文本框中的右键菜单.复制.粘贴等功能的实现方法.该功能就是禁止文本框的右键功能,造成点击鼠标右键无效.是非常常见的一类实用功能. 具体的功能模块代码如下: '========================================================== '| 模 块 名 | TextBoxDisableAbility '| 说 明 | 禁止文本框的功能 '=================================================

  • jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法

    本文实例讲述了jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法.分享给大家供大家参考,具体如下: JS鼠标双击事件 onDblClick <td width="10%" title="双击修改" ondblclick="ShowElement(this,<%#Eval("id") %> </td> 这里的本人用绑定的值是传的当前行对应的ID号 function ShowEle

  • python实现应用程序在右键菜单中添加打开方式功能

    最近项目组开发的一个小工具想要在右键菜单中添加打开方式,以有道云笔记为例进行了需求拆解和代码编写 1.需求拆解: 如何实现手动添加右键菜单的打开方式: Step1:打开注册表编辑器,Win+R->输入 "regedit" Step2:在HKEY_CLASSES_ROOT/*/shell (或者HKEY_LOCAL_MACHINE/SOFTWARE/Classes/*/shell ,两个目录是一样的) 添加一个key:YNote,然后在该项中新建项command,然后再编辑字符串,

  • 深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制

    我记得在刚开始接触动态HTML及JavaScript时就接触过关于鼠标右键屏蔽的脚本代码,当时这些代码很多会用在防止浏览者未经允许的复制网页上的文字或者其他内容,后来的实际应用证明这种做法是不符合用户体验的,而且破解的方法也有很多,比如我曾经写过一篇文章讲解如何解除网页禁止复制的办法. 由此可见,限制右键及复制是不明智的做法,但是今天我仍然要谈谈关于禁止网页复制.右键菜单的事儿,因为随着网页APP技术的发展,网页应用和桌面应用之间的界限越来越模糊,有一些桌面程序实际上是由网页配合JavaScri

  • javascript限制文本框只允许输入数字(曾经与现在的方法对比)

    很多时候需要用到限制文本框的数字输入,试过许多方法,都不太理想,遂决定自己实现一个来玩玩. 曾经使用过的方法 通过onkeydown事件来控制只允许数字: 复制代码 代码如下: <input onkeydown="return event.keyCode>=48&&event.keyCode<=57||event.keyCode>=96&&event.keyCode<=105" /> 通过jQuery插件Masked

  • 在文件夹右键菜单中添加“进入DOS”命令的方法

    那么就在文件夹右键菜单中增加一个"进入DOS"的快捷选项吧. 点击后直接进入DOS下该文件夹目录 操作方法: 方案A: 1.打开注册表(regedit) 2.找到下面的路径 HKEY_CLASSES_ROOT\Folder\shell 3.新建 项:  CmdPrompt  并设置默认值: "进入DOS" (不带引号,显示到右键菜单上的文字,可任意改变) 4.在CmdPrompt下新建项 Command 并设置默认值:"cmd.exe /k cd %l &

  • dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法

    在以前的一个公司内部管理系统(InnerOA)中,对于目录树的构造我采用的是dTree,实现无限级目录显示及右键菜单功能(右键菜单中包括:新建.修改.共享.删除.刷新等功能,如下图所示) 关于公司内部管理系统(InnerOA)中目录树的一些知识以后有时间将整理并提供源码. 但是dTree唯一遗憾的是不支持拖拽排序功能,这让我在完成InnerOA之后心里一直纠结的问题.在网上查看关于目录树的一些内容,dTree是我目前认为最符合我项目的一个.在一个偶然机会,发现了另一个强大的目录树,也就是本文所说

  • HTML文本框的值改变后触发后台代码的方法

    复制代码 代码如下: <asp:TextBox ID="txtDate" CssClass="Wdate" Style="width: 91px;" runat="server" onfocus="WdatePicker({maxDate:'%y-%M-%d',isShowClear:false,readOnly:true})"                        onpropertycha

  • Javascript 文本框textarea高度随内容自适应增长收缩

    直接上代码: 方案一: 枫芸志 » 文本框textarea高度自适应增长/伸缩 textarea { height:100px; width: 300px; } 晴枫制作 http://jb51.net // 最小高度 var minHeight = 100; // 最大高度,超过则出现滚动条 var maxHeight = 300; function ResizeTextarea(){ var t = document.getElementById('txtContent'); h = t.s

随机推荐