对一个VB程序员来讲,当程序要与用户进行交互时(如要求输入用户名或某些特定的数据)InputBox肯定会成为首选的方法.确实,InputBox的方便之处是其它语言无法相比的:在SDK的方式下,我们必须自己写一个窗口,然后申请内存,用完后还要手动释放内存.
    世上没有十全十美的人,也没有十全十美的事,InputBox不适合用于输入密码令人甚感遗憾.为了解决这下问题,我们不得不自己添加一个窗体,添加控件,添加代码,一系列的操作尽管不是很复杂,但却也令人心烦不止--毕竟这只是一个很简单的问题却要如此大动干戈,总有点得不失尝的感觉.
   
    废话了这么多, 该说说原理了:非常的简单,把InputBox上的输入框设置为有密码字符就行了,但是好像这步不太容易,因为InputBox上的输入框不是我们能轻易可以操作的--普通的输入框只要在"属性"里设置就可以了.看来还是得废话废话^_^;

    世上有很谜至今都还是谜,InputBox不管怎样变也只是Windows中的一个标准窗口,它也无法逃出Windows的控制.Windows对她的子女的一举一动了如指掌,创建,激活,销毁无一能逃出她的双眼.我们就在这里动手,请来了鼎鼎大名的系统钩子WH_CBT(在一阵热烈的掌声与无数MM的疯狂叫声中,WH_CBT闪亮登场,'谢谢大家!谢谢大家的支持'),WH_CBT何人也?MSDN上有详细的资料.

   WH_CBT是个爽快的能干的人,上来不到2分钟就令大家感受到他的魅力四射,众MM的叫声更是令我倍感汗颜.他究竟做了什么,如何做?下面是我们的独家专访,如要转载,请注明出处

  1. '以下代码保存在模块
  2. '=========================================
  3. Explicit
  4. Long
  5. Long
  6. Long
  7. Long
  8. Const EM_SETPASSWORDCHAR = &HCC
  9. Const WH_CBT = 5
  10. Const HCBT_ACTIVATE = 5
  11. Long

  12. Long
  13.     Then
  14.         Long
  15.         hEdit = , vbNullString)
  16.         ByVal 0&
  17.         UnhookWindowsHookEx hHook
  18.     If
  19. Function
  20. String
  21.     hHook = App.ThreadID)
  22.     MyInputBox = InputBox(prompt, title, default)
  23. Function
  24. '===========================================
  25. '调用示例代码,在窗体
  26. '===========================================
  27. Sub Command1_Click()
  28.     String
  29.     password = MyInputBox()
  30.     Then
  31.       
  32.     Else
  33.       
  34.     If
  35. Sub

    除去声明部分,真正做了事的只是第13-24行,换句话说,只是用了12行代码就实现了我们想要的InputBox
    鬼龙之舞  15:26 04-10-28

相关文章: