中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Excel黑科技 vba中用Inputbox對話框接受輸入密碼時顯示為*

操作動畫如下

我們都知道Excel vba中可以用inputbox接受用戶輸入,在某些簡單的情況下,這個方法特別方便,但是他有一個缺陷,就是如果我們希望輸入密碼的時候不讓別人看見,就比較難辦,我們希望在輸入的時候輸入的字符顯示為*,沒有辦法可以直接設置,這里介紹一個黑科技,讓inputbox輸入框在輸入的時候也能和正常的密碼輸入框一樣輸入為*

這里要用到一個高級技術,winapi,代碼原理有點復雜,不過大家不用搞那么清楚,知道怎么調(diào)用就行了,只需要把下面的代碼復制到一個模塊中 ,按我下面的方式調(diào)用即可

具體原理都在代碼的注釋里寫明了有興趣的可以研究下,過程如下:調(diào)用系統(tǒng)定時器,沒隔50毫秒

更多實例視頻教學可查看我的專欄

文本代碼在文章最后面

使用說明,下面代碼整體復制到你vba模塊中,然后在需要調(diào)用帶密碼inputbox的地方

以前比如你寫的 s=inputbox() 現(xiàn)在把inputbox改成pswdInputBox即可

Option Explicit

'API宣告

#If Win64 Then

Private Declare PtrSafe Function FindWindow Lib 'user32' Alias 'FindWindowA' (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr

Private Declare PtrSafe Function FindWindowEx Lib 'user32' Alias 'FindWindowExA' (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr

Private Declare PtrSafe Function SendMessage Lib 'user32' Alias 'SendMessageA' (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr

Private Declare PtrSafe Function timeSetEvent Lib 'winmm.dll' (ByVal uDelay As Long, ByVal uResolution As Long, ByVal lpFunction As LongPtr, ByVal dwUser As LongPtr, ByVal uFlags As Long) As Long

Private Declare PtrSafe Function timeKillEvent Lib 'winmm.dll' (ByVal uID As Long) As Long

#Else

Private Declare Function FindWindow Lib 'user32' Alias 'FindWindowA' (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private 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

Private Declare Function SendMessage Lib 'user32' Alias 'SendMessageA' (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Function timeSetEvent Lib 'winmm.dll' (ByVal uDelay As Long, ByVal uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As Long

Private Declare Function timeKillEvent Lib 'winmm.dll' (ByVal uID As Long) As Long

#End If

'timeSetEvent函數(shù)請參考MSDN

Private Const EM_SETPASSWORDCHAR = &HCC

Dim lTimeID As Long 'Timer ID

Const pswdInputBoxTitle = 'pswdInputBox' '輸入密碼的對話框標題

'TimeProc callback 函數(shù)請參考MSDN

Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _

ByVal dw1 As Long, ByVal dw2 As Long)

Dim hwd As LongPtr '輸入密碼的對話框句柄

'VBA InputBox對話框之Class Name是 '#32770',

'標題為 'pswdInputBox', 這是在InputBox函數(shù)的Title引述中自訂的

'請注意Application.InputBox方法所出現(xiàn)的對話框Class Name是 'bosa_sdm_XL9'

hwd = FindWindow('#32770', pswdInputBoxTitle)

If hwd <> 0 Then '若對話框存在

'取得輸入的文字框句柄, 該文字框的Class Name是'Edit', 無標題,

'而Application.InputBox方法所出現(xiàn)的對話框之文字框的Class Name是'EDTBX'

hwd = FindWindowEx(hwd, 0, 'Edit', vbNullString)

'設定密碼字符為 '*', '*'的ASCII碼為42

SendMessage hwd, EM_SETPASSWORDCHAR, 42, 0

'設定完成, 取消定時器

timeKillEvent lTimeID

End If

End Sub

'自定義函數(shù)pswdInputBox, 是一個輸入密碼使用的InputBox, 輸入的內(nèi)容都以 '*' 顯示.

Function pswdInputBox() As Variant

'啟動一個特定的Timer事件, 0.01秒延遲, 0.05秒看一次

lTimeID = timeSetEvent(10, 50, AddressOf TimeProc, 1, 1)

'顯示InputBox對話框

pswdInputBox = InputBox(Prompt:='請輸入管理員密碼', Title:=pswdInputBoxTitle)

End Function

Sub TestpswdInputBox()

Dim s

Static x As Integer '靜態(tài)變量

s = pswdInputBox '在自己的代碼中 只需要這一句調(diào)用 代替以前的inbutbox即可

If s = '' Then Exit Sub

If s = '123456' Then

MsgBox '管理員登錄成功'

Else

x = x + 1

If x = 3 Then

MsgBox '你已經(jīng)3次輸入密碼,電腦即將爆炸!'

x = 0

Exit Sub

End If

MsgBox '密碼已輸入錯誤' & x & '次,請重新輸入'

TestpswdInputBox

End If

End Sub

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA 窗體之去除窗體關閉按鈕
VBA實用小程序04:在用戶窗體標題欄添加最大化和最小化按鈕
VB改變MsgBox對話框的字體、顏色、背景圖片。
如何屏蔽掉窗體中的關閉按鈕X?
bat打開excel并自動運行VBA程序
將cad嵌入到vb中
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服