如图 函数声明的时候少一个 ByVal 单词,最后一个参数该怎么改?
vb吧
全部回复
仅看楼主
level 7
97000946 楼主
代码如下
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Dim H As Long
Private Sub Form_DblClick()
Sleep 300
H = Text1.Text
SendMessage H, WM_LBUTTONDOWN, 0, 0&
SendMessage H, WM_LBUTTONUP, 0, 0&
End Sub
Private Sub Text1_Click()
Text1.Text = ""
End Sub
2021年03月10日 10点03分 1
level 7
97000946 楼主
反正就是和其他代码冲突了,不能添加 ByVal 这个单词,有没有大神帮我抢救下 0.0
2021年03月10日 10点03分 2
level 13
你声明H应该是来存储句柄的,所以H = text1.hWnd
2021年03月10日 10点03分 3
没反应啊 ,我 H 储存的不是文本框的句柄,是外部程序的控件句柄。
2021年03月10日 10点03分
你看一下楼下的截图,我的本意是想模拟点击红色箭头指向那个按钮。因为这个函数我要用到三个功能,而其他两个功能的声明中没有 ByVal 这个单词,所以。。杯具了0.0
2021年03月10日 10点03分
@97000946 API浏览器默认最后一个参数是lParam as any(默认是byref),你前面加了byval(按值),你去掉就byval 0&,不去掉就0&
2021年03月10日 11点03分
@隨風🍁缒夢 3q 测试通过,非常感谢!
2021年03月10日 12点03分
level 7
97000946 楼主
2021年03月10日 10点03分 4
level 11
另外,wParam也应该为Long型吧
2021年03月10日 11点03分 5
谢谢提醒,虽然都能用,不过 也算是一个潜在的bug吧!
2021年03月10日 12点03分
吧务
level 13
你把declare里的byval 删了,用调用时加byval就行了,这里要注意,只能是any不然会提示类型不对
2021年03月13日 14点03分 6
刚刚看了一下,民的wParam居然是integer你这里应该定义成long吧
2021年03月13日 14点03分
已经改过来了 谢谢大神指证[呵呵]
2021年03月14日 01点03分
吧务
level 13
看到了没有,这里wParam是一个long长整型,你抄了多少年前的代码?
2021年03月13日 14点03分 7
确实有些年份了。我搜集的代码最早的快十年了(都是在百度搜索到的,自己又不会改)😓
2021年03月14日 01点03分
1