解决方法
您可以将Windows消息发送到由InputBox创建的编辑控件,该控件将标记用于输入密码的编辑控件.代码如下从
http://www.swissdelphicenter.ch/en/showcode.php?id=1208:
const InputBoxMessage = WM_USER + 200; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage; public end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.InputBoxSetPasswordChar(var Msg: TMessage); var hInputForm,hEdit,hButton: HWND; begin hInputForm := Screen.Forms[0].Handle; if (hInputForm <> 0) then begin hEdit := FindWindowEx(hInputForm,'TEdit',nil); { // Change button text: hButton := FindWindowEx(hInputForm,'TButton',nil); SendMessage(hButton,WM_SETTEXT,Integer(PChar('Cancel'))); } SendMessage(hEdit,EM_SETPASSWORDCHAR,Ord('*'),0); end; end; procedure TForm1.Button1Click(Sender: TObject); var InputString: string; begin PostMessage(Handle,InputBoxMessage,0); InputString := InputBox('Input Box','Please Enter a Password',''); end;