明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

顯示密碼編輯框中的密碼

[摘要]我們在使用Windows時(shí),經(jīng)常會碰到一些密碼編輯框,輸入其中的文字都以“*”顯示。現(xiàn)在,有許多共享軟件和自由軟件都可以實(shí)現(xiàn)隱藏密碼的正確顯示。究竟這是怎樣實(shí)現(xiàn)的呢!其實(shí),這比較簡單,雖然這些信息都...
我們在使用Windows時(shí),經(jīng)常會碰到一些密碼編輯框,輸入其中的文字都以“*”顯示,F(xiàn)在,有許多共享軟件和自由軟件都可以實(shí)現(xiàn)隱藏密碼的正確顯示。究竟這是怎樣實(shí)現(xiàn)的呢!其實(shí),這比較簡單,雖然這些信息都以“*”顯示,但其內(nèi)部還是以當(dāng)初的字符表示,所以,我們只要用Windows API函數(shù)就可以實(shí)現(xiàn)。

  在Windows中,每一個(gè)窗口、控件都有它的名字(叫做Name或Window Text)。對于Form、Dialog Box、Message Box來說,名字就顯示在Title Bar中;對于Edit、Button、Static Control,名字顯示在他所占的區(qū)域中。密碼編輯框本身就是個(gè)Edit控件,雖然顯示的是特殊字符,但名字屬性沒有變,還是輸入時(shí)的字符。Windows提供了兩個(gè)API函數(shù)來獲得這個(gè)名字:

  int GetWindowTextLength(HWND hWnd); // 得到名字的長度

  其中,hWnd :想要得到的那個(gè)窗口或控件的句柄 handle

  int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount );// 得到名字

  其中,hWnd :想要得到的那個(gè)窗口或控件的句柄 handle;

  lpString:存放名字的字符串的地址

  nMaxCount :可拷貝的最大字符數(shù)

  下面以Delphi為例,說明它的實(shí)現(xiàn)過程。

  新建一Form,放置Label、Edit、Button各一個(gè)到Form中,將Edit1的PasswordChar屬性改為“*”,雙擊Button1:


  procedure TForm1.Button1Click(Sender: TObject);

  var

  Name:PChar; // 名字

  L:integer; // 名字的長度

  begin

  L:=GetWindowTextLength(Edit1.handle)+1; // 得到名字長度,并將長度加1

  GetMem(Name,L);//為將要得到的名字分配內(nèi)存

  GetWindowText(Edit1.handle,Name,L);//得到名字

  label1.Caption:=String(Name); // 將得到的名字顯示于 Label1

  FreeMem(Name,0); // 釋放分配的內(nèi)存

  end;

  經(jīng)過運(yùn)行,在Edit1中輸入的密碼就可通過Label1顯示出來。