世上没有十全十美的人,也没有十全十美的事,InputBox不适合用于输入密码令人甚感遗憾.为了解决这下问题,我们不得不自己添加一个窗体,添加控件,添加代码,一系列的操作尽管不是很复杂,但却也令人心烦不止--毕竟这只是一个很简单的问题却要如此大动干戈,总有点得不失尝的感觉.
废话了这么多, 该说说原理了:非常的简单,把InputBox上的输入框设置为有密码字符就行了,但是好像这步不太容易,因为InputBox上的输入框不是我们能轻易可以操作的--普通的输入框只要在"属性"里设置就可以了.看来还是得废话废话^_^;
世上有很谜至今都还是谜,InputBox不管怎样变也只是Windows中的一个标准窗口,它也无法逃出Windows的控制.Windows对她的子女的一举一动了如指掌,创建,激活,销毁无一能逃出她的双眼.我们就在这里动手,请来了鼎鼎大名的系统钩子WH_CBT(在一阵热烈的掌声与无数MM的疯狂叫声中,WH_CBT闪亮登场,'谢谢大家!谢谢大家的支持'),WH_CBT何人也?MSDN上有详细的资料.
WH_CBT是个爽快的能干的人,上来不到2分钟就令大家感受到他的魅力四射,众MM的叫声更是令我倍感汗颜.他究竟做了什么,如何做?下面是我们的独家专访,如要转载,请注明出处
-
'以下代码保存在模块
-
'=========================================
-
Explicit
-
Long
-
Long
-
Long
-
Long
-
Const EM_SETPASSWORDCHAR = &HCC
-
Const WH_CBT = 5
-
Const HCBT_ACTIVATE = 5
-
Long
-
Long
- Then
- Long
- hEdit = , vbNullString)
- ByVal 0&
- UnhookWindowsHookEx hHook
- If
-
Function
-
String
- hHook = App.ThreadID)
- MyInputBox = InputBox(prompt, title, default)
-
Function
-
'===========================================
-
'调用示例代码,在窗体
-
'===========================================
-
Sub Command1_Click()
- String
- password = MyInputBox()
- Then
-
- Else
-
- If
- Sub
除去声明部分,真正做了事的只是第13-24行,换句话说,只是用了12行代码就实现了我们想要的InputBox
鬼龙之舞 15:26 04-10-28