找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 11015|回复: 8

[求助] (VB2008)锁键盘

 火.. [复制链接]

1

主题

2

回帖

0

精华

初来乍到

积分
34
发表于 2011-8-16 09:49:57 | 显示全部楼层 |阅读模式
各位大大你们好:
我可以算是vb的菜鸟
我想请问各位大大,我最近想设计一个程式(把电脑的萤幕&键盘锁住),但是却出了一个大问题,那就是键盘无法锁。
在网路上有许多教学没有错,但是没有一个是成功的,我连VB.Net & VB6.0 还有 VB2005 的程式码都是试过了,还是没办法。
请各位大大帮帮我
我快开学了!
开学后就没时间设计了!
还是哪位大大可以把这个改成vb2008用的
(我忘了说,键盘锁要在程式一开时,就要锁住,直到程式关必)

以下就是有错误的地方(红色圈圈处)  

有问题的地方

有问题的地方

71

主题

350

回帖

2

精华

钻石会员

积分
4123
发表于 2011-8-16 12:56:08 | 显示全部楼层
你去网上找一个vb6写的键盘锁,作者叫什么流星蝴蝶剑还是什么,以前我用过,代码写得不错,能把字母和ctrl等特殊键都锁上,你去参考那个

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-8-16 22:02:12 | 显示全部楼层
VB6的代码不能直接用到VB2008里。
1.any换成object
2.GetWindowLong(Me.hwnd , -6)
3.直接写44


不保证正确,你可以试试。

1

主题

2

回帖

0

精华

初来乍到

积分
34
 楼主| 发表于 2011-8-17 07:47:58 | 显示全部楼层
Tesla.Angela 发表于 2011-8-16 22:02
VB6的代码不能直接用到VB2008里。
1.any换成object
2.GetWindowLong(Me.hwnd , -6)

请问大大
第二个要怎么改
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, app.hInstance, 0)
是这样吗:
hnexthookproc = GetWindowLong(Me.hwnd , -6)
如果是
电脑会说:
1.'hwnd' 不是 '(软体名).Form' 的成員。
2.名稱 'GetWindowLong' 未宣告。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-8-17 13:09:38 | 显示全部楼层
b8411243 发表于 2011-8-17 07:47
请问大大
第二个要怎么改
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, app.h ...

Private Declare GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As integer, ByVal nIndex As integer) As integer

hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, GetWindowLong(Me.handle , -6), 0)

1

主题

2

回帖

0

精华

初来乍到

积分
34
 楼主| 发表于 2011-8-17 13:26:52 | 显示全部楼层
Tesla.Angela 发表于 2011-8-17 13:09
Private Declare GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As integer, ByVal nI ...

不好意思
多次麻烦大大您
但是又出现了几个问题
Private Declare  GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Integer, ByVal nIndex As Integer) As Integer
->必須有 'Sub' 或 'Function'。
如果把前面的Private Declare改成
Declare Function
会出现:
'AddressOf' 運算式不可以轉換成 'Long',因為 'Long' 不是委派型別。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-8-17 16:34:35 | 显示全部楼层
b8411243 发表于 2011-8-17 13:26
不好意思
多次麻烦大大您
但是又出现了几个问题

你把SetWindowsHookEx的声明byval lpfn as long换成byval lpfn as intptr试试。。。
如果还不行就不太清楚了。。。

另外我刚才打缺少了一个FUNCTION。应该是:
Private Declare function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As integer, ByVal nIndex As integer) As integer
头像被屏蔽

3

主题

16

回帖

0

精华

初来乍到

积分
418
发表于 2011-9-7 19:59:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

12

主题

144

回帖

0

精华

铜牌会员

积分
281
发表于 2011-10-7 17:46:55 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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