用Hook可以办到
只不过太麻烦了还不如自己做一个

解决方案 »

  1.   

    最好自己做一个对话框吧,然后里面放上
    label,text,button控件
      

  2.   

    干吗一定要用inputbox呢?N不好用.强烈建议自己写一个对话框!
      

  3.   

    对呀,把textbox 的passwordchar设为*就可以了。^_^
      

  4.   

    那谁能介绍一下怎么用InputBox实现呢???
      

  5.   

    人家的问题是用inputbox实现,讲了一对没用的,不过我不会,听听大家的。
      

  6.   

    可以启动一个线程序专门用于监控INPUTBOX对话框的,如果INPUTBOX找到,就给
    它里面的文本框发送一个EM_SETPASSWORDCHAR的消息就可以了。
    线程函数里面的应该使用FindWindow来找到该INPUTBOX的窗口。
    ===================='-----------------以下代码测试通过--------------------
    '以下代码放在模块文件中(.bas)
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
    Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
    Public Const EM_SETPASSWORDCHAR = &HCCPublic g_bDone As Boolean
    Public g_strTitle As String
    Public Sub HookInputBoxThread()
        Do Until g_bDone
            Dim h As Long, hText As Long
            h = FindWindow("#32770", g_strTitle)
            If h <> 0 Then
                hText = GetDlgItem(h, &H1324)
                If hText <> 0 Then
                SendMessage hText, EM_SETPASSWORDCHAR, Asc("*"), 0
                g_bDone = True
                End If
            End If
        Loop
    End Sub,--------------以下代码为测试代码---------------------------
    Private Sub Command1_Click()
        Dim hThread As Long, lpThreadID As Long
        g_bDone = False
        g_strTitle = "测试程序"
        hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf HookInputBoxThread, ByVal 0&, 0, lpThreadID)
        Dim s As String
        s = InputBox("请输入数据", g_strTitle)
        MsgBox s
    End Sub
    ==========================
    以上代码来之
    http://www.csdn.net/expert/topic/694/694023.xml?temp=6.066531E-02不过真的没有这个必要,还是自己做一个比较好
      

  7.   

    我试过了,真的可以实现那种效果。这又使我对API有了更深一层的认识。多谢提供代码的gump2000(阿甘)。