大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
两种办法:
10年积累的网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有松北免费网站建设让你可以放心的选择与我们合作。
1.
Private
Function
MyWndProc(ByVal
hwnd
As
Long,
ByVal
message
As
Long,
ByVal
wParam
As
Long,
ByVal
lParam
As
Long)
As
Long
Select
Case
message
case
WM_RBUTTONDOWN:
exit
function
End
Select
MyWndProc
=
CallWindowProc(oldWin_proc,
hwnd,
message,
wParam,
lParam)
End
Function
把要屏蔽的控件的消息处理程序用MyWndProc来取代替
2.如果仅仅是某个控件
可以在mouse的按键时间里面
判断:
如果button=rightbutton
button=0
接收事件是无法屏蔽的,但是你可以不处理这个事件啊,就当它没发生不就行了
Private
Sub
Form_Resize()
'在窗口的改变大小时所触发的事件
On
Error
Resume
Next
'有错误跳到下一条继续执行
Form1.Height
=
10185
'设定窗口高
Form1.Width
=
8700
'设定窗口宽
End
Sub
很简单,你怎么不先问我,还在这提问。用api函数,钩子,设置成全局钩子,然后对钩取来的message消息不做处理,也不返回,这样屏蔽了键盘了。钩子函数api好像是什么hook的那个,还有钩子函数的返回函数,以整个自定义函数的指针作参数
很简单,通过WindowsAPI,删除窗体菜单项就行了
首先在窗体类中声明API:
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Declare Function RemoveMenu Lib "user32" (ByVal lngHmenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
其次声明API参数常量:
Const MF_BYPOSITION As Integer = H400
然后在窗体类中写入过程:
Private Sub UserForm_Initialize_stopmove() '禁止窗体移动
Dim lngHwnd As IntPtr
Dim lngHmenu As IntPtr
lngHwnd = Me.Handle
If lngHwnd 0 Then
lngHmenu = GetSystemMenu(lngHwnd, False)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0代表菜单中从上往下数第一个菜单项
End If
End Sub
Private Sub UserForm_Initialize_onmove() '恢复窗体移动
Dim lngHwnd As IntPtr
Dim lngHmenu As IntPtr
lngHwnd = Me.Handle
If lngHwnd 0 Then
lngHmenu = GetSystemMenu(lngHwnd, True)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0与禁止代码中的数值同步,原因时虽然表面上删除了菜单项,实则为隐藏了菜单项,各个菜单的索引值并没有变,所以0依然代表初始菜单的第一个菜单项,即被删除的那个菜单项
End If
End Sub
然后如果你的窗口菜单是动态变化的,建议声明常数:
Const MF_BYPOSITION As Integer = H0
然后使用相关的Windows功能的常数进行删除菜单。常数需要自行查看winuser.h头文件
如果找不到该头文件,可以看这里:网页链接
其余信息详见MSDN:网页链接
最后说一下,不建议前面网友说的重写WndProc的方法,因为这样拦截标题栏点击消息会导致窗体本身的菜单也无法显示出来,有损窗体功能,并且像双击左上角图标关闭窗体这样的功能也会跟着拦截消息的操作一起被吞掉。
VB.net可以调用DLL吗?如果可以的话,你用VB6.0编写一个DLL给VB.NET调用就行了