Delphi Inputbox 输入时显示‘*’


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

const InputboxMessage = WM_USER + 200; //定义消息

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure InputboxPassword(var MSG: TMessage); message InputBoxMessage;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Handle,InputboxMessage,0,0); //发送消息
inputbox(‘a‘,‘b‘,‘ssss‘)
end;

procedure TForm1.InputboxPassword(var MSG: TMessage);
var
InputForm,Hedit: THandle;
begin
InputForm:= Screen.Forms[0].Handle;
if InputForm <> 0 then
begin
Hedit:= FindWindowEx(InputForm,0,‘Tedit‘,nil);
SendMessage(Hedit,EM_SETPASSWORDCHAR,Ord(‘*‘),0);
end;

end;

end.

通过发消息的方式指定输入显示EM_SETPASSWORDCHAR.

要注意SendMessage和PostMessage的区别(以下是转载):

在控制别的应用程序的时候,经常需要等待直到某个功能结束,例如:
打开一个窗口-->等待直到窗口结束
这个时候就可以用到SendMessage
如果在打开这个窗口后仍然需要对该窗口的界面进行设置,比如Edit的value等等,比如:
打开一个窗口-->控制窗口的control的属性
这个时候就需要PostMessage

使用一个钩子程序截获消息后,使用SendMessage把消息发送到主处理程序进行处理,但是在主处理程序还没有完成任务的时候,被设置钩子的程序进入了停止的状态,不可以处理
WM_PAINT,
WM_MOVE,
.......等的基本信息,
必须要等SendMessage发送出的消息完成后,才能继续运行,整个界面一片空白,把钩子消息设置成PostMessage的发送消息形式后,问题解决!
我查了MSDN对这两个API的定义,
PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;
SendMessage必须等待其他程序处理消息后才返回,继续执行。
PostMessage的返回值表示PostMessage函数执行是否正确;
SendMessage的返回值表示其他程序处理消息后的返回值。 
使用这两个发送消息函数的最重要的是要看你的程序是否要对消息的滞后性关注否,PostMessage会造成消息的滞后性,而SendMessage则不会,但如果SendMessage消息处理失败,则会造成程序停止!

Delphi Inputbox 输入时显示‘*’,布布扣,bubuko.com

时间: 2024-07-30 10:17:23

Delphi Inputbox 输入时显示‘*’的相关文章

模拟百度搜索框,输入时显示历史记录

今天写了个小demo,利用本地存储的特点,模拟百度搜索框. 主要知识是利用本地存储的特点,模拟百度搜索时的历史记录显示. 主要HTML代码为 <div class="search"> <input type="text"/> <button class="btn">搜索</button> </div> <ul class="hidden"> <li&

EditText输入时显示千分符“,”

1.自定义EditText控件 public class DivisionEditText extends EditText {     /* 每组的长度 */     private Integer length = 3;     /* 分隔符 */     private String delimiter = ",";     private String text = "";     public DivisionEditText(Context contex

修改KSImageNamed插件,让插件支持输入imageWithNamed:时显示要选择的图片

1. 首先进入此插件路径, Macintosh HD > 用户 > xxx > 资源库 > Application Support > Developer > Shared > Xcode > Plug-ins 2. 退出Xcode,删除KSImageNamed.xcplugin文件 3. 打开KSImageNamed插件项目,在项目中全局搜索imagenamed 4. 找到了imageNamed方法后,复制Item 5. 把imageNamed修改为ima

sql 除法运算结果为小数时显示0的解决方案 或者百分比

SELECT field1/field2 FROM TB; 当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx 这个时候在DB2的环境下SELECT出来的值是0 解決方法: 先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx SELECT CAST(field1 AS FLOAT)/field2 FROM TB; ps.網上搜的資料,寫的是double,但在SQL Server2008中一直報錯,改成FLOA

asp.net中当服务器出错时显示指定的错误页面

http://blog.csdn.net/helloxiaoyu/article/details/2943537 此篇文章描述了当异常再ASP.NET中发生时怎样使用C#.NET代码去拦截和相应异常.ASP.NET在异常处理方面比传统的ASP更优越.在ASP.NET中,允许在应用程序的各个层面中处理异常.ASP.NET的新特性ASP.NET为捕获并处理异常提供了更多的便利.在传统的ASP程序中,我们用“On Error Resume Next”(或Jscript的Try-catch)来处理异常.

JS实现在输入框内输入@时,邮箱账号自动补全

<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"/> <title>邮箱自动补全</title> <style type="text/css"> .wrap{width:200px;margin:0 auto;} h1{font-size:36px;text-align:center;lin

shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录sshpass 应用实践

在很多实践项目中,我们经常会通过SSH来进行认证,如通过SSH拷贝文件,虽然我们可以使用公钥与私钥实现ssh 无密码登录,在不同的服务器上又需要配对相应的密钥,切换用户麻烦等问题,在一些需要交互但会涉及到批量处理的时候,通过shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录会大大的提高工作效率 #! /bin/bash ############################################## #Author:                

三星s4更改锁屏方式时显示已有管理员、加密政策、或证书存储政策禁用

屏幕锁定设置除密码以外,其他锁屏方式都是灰色且提示"已由管理员.加密政策.或证书存储"字样,此情况是由于手机中设置了设备加密或加密外置SD卡的功能.如需更换锁屏方式,需要先解密设备或解密外置SD卡. 操作: 1.取消设备加密.方式:设定-安全-解密设备-点击"解密设备"-输入锁屏密码-再次点击屏幕下方的"解密设备"字样-等待完成. 注意:取消设备加密时手机需要连接充电器. 三星官网针对解密设备功能制作了图文并茂的功能教程,请参考: http://

IOS--UITextView 多行文本的输入和显示 的使用方法详细

IOS--UITextView 多行文本的输入和显示 的使用方法详细 // UITextView的常用方法 主要用来输入和显示多行文本信息 UITextView *oneTextView = [[UITextView alloc] init]; oneTextView.frame = CGRectMake(0, 20, 320, 200); // 设置位置 oneTextView.backgroundColor = [UIColor whiteColor]; // 设置背景色 oneTextVi