' 可以启动一个线程序专门用于监控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 ==========================
TEXT的PASSWORDCHAR属性中输入一个“*”,就可以了。
' 可以启动一个线程序专门用于监控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
==========================
就用dragon525() 的第一种方法或cy_nwau(小人物) 的方法
就是自己做个窗体,象inputbox一样,用到时,就form2.show(假如窗体名字叫form2)
在这里边,text的属性你就可以自己改了,把passwordchar设为*就好
费了我1个小时
to [email protected]