程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 顯示密碼編輯框中的密碼

顯示密碼編輯框中的密碼

編輯:Delphi

  我們在使用Windows時,經常會碰到一些密碼編輯框,輸入其中的文字都以“*”顯示。現在,有許多共享軟件和自由軟件都可以實現隱藏密碼的正確顯示。究竟這是怎樣實現的呢!其實,這比較簡單,雖然這些信息都以“*”顯示,但其內部還是以當初的字符表示,所以,我們只要用Windows API函數就可以實現。
  
  在Windows中,每一個窗口、控件都有它的名字(叫做Name或Window Text)。對於Form、Dialog Box、Message Box來說,名字就顯示在Title Bar中;對於Edit、Button、Static Control,名字顯示在他所占的區域中。密碼編輯框本身就是個Edit控件,雖然顯示的是特殊字符,但名字屬性沒有變,還是輸入時的字符。Windows提供了兩個API函數來獲得這個名字:
  
  int GetWindowTextLength(HWND hWnd); // 得到名字的長度
  
  其中,hWnd :想要得到的那個窗口或控件的句柄 handle
  
  int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount );// 得到名字
  
  其中,hWnd :想要得到的那個窗口或控件的句柄 handle;
  
  lpString:存放名字的字符串的地址
  
  nMaxCount :可拷貝的最大字符數
  
  下面以Delphi為例,說明它的實現過程。
  
  新建一Form,放置Label、Edit、Button各一個到Form中,將Edit1的PassWordChar屬性改為“*”,雙擊Button1:
  

  procedure TForm1.Button1Click(Sender: TObject);

  var
  
  Name:PChar; // 名字
  
  L:integer; // 名字的長度
  
  begin
  
  L:=GetWindowTextLength(Edit1.handle)+1; // 得到名字長度,並將長度加1
  
  GetMem(Name,L);//為將要得到的名字分配內存
  
  GetWindowText(Edit1.handle,Name,L);//得到名字
  
  label1.Caption:=String(Name); // 將得到的名字顯示於 Label1
  
  FreeMem(Name,0); // 釋放分配的內存
  
  end;
  
  經過運行,在Edit1中輸入的密碼就可通過Label1顯示出來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved