顯示密碼框密碼

 
2007-04-26 12:58
我們在使用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顯示出來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章