解决方法
您可以将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;