C# WinForm TextBox 作为密码输入框时,如何禁止密码查看器获取密码 ?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { myTextBox1.CheckPass = myTextBox1.Handle.ToInt32() * 2; String strText = myTextBox1.Text; myTextBox1.CheckPass = 0; MessageBox.Show(strText); } } public class MyTextBox : TextBox { private Int32 _CheckPass; public Int32 CheckPass { get { return _CheckPass; } set { _CheckPass = value; } } protected override void WndProc(ref Message m) { if (m.Msg == 0x000D) { if (CheckPass != m.HWnd.ToInt32() * 2) { return; } } base.WndProc(ref m); } } }
在屏蔽WM_GETTEXT前加一个算法判断
应该是可以的,不过获取前后都要更新设置,麻烦,应该还能优化点
或者还有更好的方法