b8411243 发表于 2011-8-16 09:49:57

(VB2008)锁键盘

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

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

yxd199512041 发表于 2011-8-16 12:56:08

你去网上找一个vb6写的键盘锁,作者叫什么流星蝴蝶剑还是什么,以前我用过,代码写得不错,能把字母和ctrl等特殊键都锁上,你去参考那个

Tesla.Angela 发表于 2011-8-16 22:02:12

VB6的代码不能直接用到VB2008里。
1.any换成object
2.GetWindowLong(Me.hwnd , -6)
3.直接写44

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

b8411243 发表于 2011-8-17 07:47:58

Tesla.Angela 发表于 2011-8-16 22:02 static/image/common/back.gif
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' 未宣告。

Tesla.Angela 发表于 2011-8-17 13:09:38

b8411243 发表于 2011-8-17 07:47 static/image/common/back.gif
请问大大
第二个要怎么改
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)

b8411243 发表于 2011-8-17 13:26:52

Tesla.Angela 发表于 2011-8-17 13:09 static/image/common/back.gif
Private Declare GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As integer, ByVal nI ...

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

Tesla.Angela 发表于 2011-8-17 16:34:35

b8411243 发表于 2011-8-17 13:26 static/image/common/back.gif
不好意思
多次麻烦大大您
但是又出现了几个问题


你把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

chtcrack 发表于 2011-9-7 19:59:38

testid 发表于 2011-10-7 17:46:55

学习了
页: [1]
查看完整版本: (VB2008)锁键盘