网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月03日漏签0天
vb吧 关注:156,056贴子:1,166,216
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回vb吧
>0< 加载中...

为什么用了钩子变量会自己加一个未知的量?

  • 只看楼主
  • 收藏

  • 回复
  • jiyuan9574
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Module1:
Option Explicit
Public Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Declare Function SetLayeredWindowAttributes _
Lib "user32" (ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long
Public Const WS_EX_LAYERED = &H80000
Public Const GWL_EXSTYLE = (-20)
Public Const LWA_ALPHA = &H2
Public Const LWA_COLORKEY = &H1
Public FormState As Boolean
Public FormTranValue As Integer
Public Sub TranForm() '窗体半透明
Dim rtn As Long
rtn = GetWindowLong(Form1.hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong Form1.hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes Form1.hwnd, 0, FormTranValue, LWA_ALPHA
End Sub
Public Sub FormShow() '窗体显示
Dim rtn As Long
rtn = GetWindowLong(Form1.hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong Form1.hwnd, GWL_EXSTYLE, rtn
Do Until FormTranValue = 150
Delay (10)
FormTranValue = FormTranValue + 10
SetLayeredWindowAttributes Form1.hwnd, 0, FormTranValue, LWA_ALPHA
Loop
End Sub
Public Sub FormClose()
Dim rtn As Long
rtn = GetWindowLong(Form1.hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong Form1.hwnd, GWL_EXSTYLE, rtn
Do Until FormTranValue = 0
Delay (10)
FormTranValue = FormTranValue - 10
SetLayeredWindowAttributes Form1.hwnd, 0, FormTranValue, LWA_ALPHA
Loop
End Sub
Module2:
Option Explicit
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Const WH_KEYBOARD = 2
Public Const VK_SHIFT = &H10
Public hHook
Public Function MyKBHook(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode <> 0 Then
If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("Q") Then
If FormState = False Then
FormShow
'FormState = True
Else
FormClose
'FormState = False
End If
End If
End If
End Function
Module3:
Option Explicit
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Public Sub Delay(T As Long)
Dim Savetime As Long
Savetime = timeGetTime
While timeGetTime < Savetime + T
DoEvents
Wend
End Sub
Form1:
Private Sub Form_Load()
FormState=False
TranForm
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHook, 0, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hHook
End Sub


  • jiyuan9574
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用钩子调用FormShow和FormClose过程会显示溢出,用Debug.Print看到过程完成之后变量会自动加上一个量导致溢出,求解。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回vb吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示