C#实现防止KeyLogger的密码输入对话框

本文的控件用于安全密码输入,它可以让你在输入密码的时候避免被键盘记录木马截获。当你用鼠标点击输入框时,这个控件会自动弹出。

弹出密码输入框
输入数字
[功能]

支持阴影按钮
安全密码输入窗口
锁定弹出的用户控件
控件属性设定


屏幕截图


背景

项目在Visual Studio 2005下开发,开发语言为C#。你可以把这个项目用于安全密码输入方面,它可以防止你的密码输入被Keylogger (键盘记录木马)截获。

[代码使用]

就如,本文中的示例代码一样:

private void Showing(object sender, EventArgs e)

{

mProgress = ((TimeSpan)(DateTime.Now.Subtract(mTimerStarted))).TotalMilliseconds / mPopup.mAnimationSpeed;

if (mProgress >= 1)

{

mTimer.Stop();

mTimer.Tick -= new EventHandler(Showing);

AnimateForm(1);

}

else

AnimateForm(mProgress);//görünüme devam et

}



private void AnimateForm(double progress)//açılır animasyon methodu

{

//x ve y poziyon daha sonra formun width ve hight değerleri

double[] dizi ={ 0, 0, 0, 0 };//x,y,w,h

if (progress <= 0.1) progress = 0.1;



if (animasyon_Tip == AnimationType.PopupMenu)

{

switch (mPlacement)//y pozisyon ve hight değerleri

{

case ePlacement.Top:

dizi[1] = 1 - progress;

dizi[3] = progress;

break;

case ePlacement.TopLeft:

dizi[1] = 1 - progress;

dizi[3] = progress;

break;

case ePlacement.TopRight:

dizi[1] = 1 - progress;

dizi[3] = progress;

break;

case ePlacement.Bottom:

dizi[1] = 0;

dizi[3] = progress;

break;

case ePlacement.BottomLeft:

dizi[1] = 0;

dizi[3] = progress;

break;

case ePlacement.BottomRight:

dizi[1] = 0;

dizi[3] = progress;

break;

case ePlacement.Left:

dizi[1] = 0;

dizi[3] = 1;

break;

case ePlacement.Right:

dizi[1] = 0;

dizi[3] = 1;

break;

}

switch (mPlacement)//x poziyon ve width değerleri

{

case ePlacement.TopLeft:

dizi[0] = 1 - progress;

dizi[2] = progress;

break;

case ePlacement.BottomLeft:

dizi[0] = 1 - progress;

dizi[2] = progress;

break;

case ePlacement.Left:

dizi[0] = 1 - progress;

dizi[2] = progress;

break;

case ePlacement.TopRight:

dizi[0] = 0;

dizi[2] = progress;

break;

case ePlacement.BottomRight:

dizi[0] = 0;

dizi[2] = progress;

break;

case ePlacement.Right:

dizi[0] = 0;

dizi[2] = progress;

break;

case ePlacement.Top:

dizi[0] = 0;

dizi[2] = 1;

break;

case ePlacement.Bottom:

dizi[0] = 0;

dizi[2] = 1;

break;

}

mCurrentBounds.X = mNormalPos.X + (int)(dizi[0] * mControlSize.Width);

mCurrentBounds.Y = mNormalPos.Y + (int)(dizi[1] * mControlSize.Height);

mCurrentBounds.Width = (int)(dizi[2] * mControlSize.Width) + 2 * BORDER_MARGIN;

mCurrentBounds.Height = (int)(dizi[3] * mControlSize.Height) + 2 * BORDER_MARGIN;

}

else

{

if (this.Opacity < (double)mPopup.OpacityValue / 100)

{

this.Opacity += (progress - 0.09);

}

else

{

this.Opacity = (double)mPopup.OpacityValue / 100;

}

mCurrentBounds.X = mNormalPos.X;//formun x mesafesi

mCurrentBounds.Y = mNormalPos.Y;//formun y mesafesi

mCurrentBounds.Width = mControlSize.Width + (2 * BORDER_MARGIN);//genişliği

mCurrentBounds.Height = mControlSize.Height + (2 * BORDER_MARGIN);//yüksekliği

}

this.Bounds = mCurrentBounds;

}





#region Public Properties and Event

public event bir DropDown;

public event iki DropDownClosed;

[Browsable(false)]//do not visible

public Control UserControl

{

get { return mUserControl; }

set { mUserControl = value; }

}

[Description("Formun opak veya transparent gözükme seçeneklerini ayarlar."),

Browsable(true),

DefaultValue(100)]

public byte OpacityValue

{

get { return opacity_deger; }//değer okunacak

set //gönderilen değer yazılacak

{

try

{

if (value < 0 || value > 100)

throw new Exception("Lütfen 0 ile 100 arasında bir değer giriniz.");

}

catch (Exception hata_Olustu)

{

MessageBox.Show(hata_Olustu.Message);

value = 100;

}

finally//hata olsada olmasada buraya uğrar

{

opacity_deger = value;

}

}

}

[Browsable(false)]

public Control Parent

{

get { return mParent; }

set { mParent = value; }

}

[Description("Shadow Visibility"),

DefaultValue(false)]

public bool ShowShadow

{

get { return mShowShadow; }

set { mShowShadow = value; }

}

[Description("Animasyonun hızını ayarlar."),

DefaultValue(100)]

public int AnimationSpeed

{

get { return mAnimationSpeed; }

set { mAnimationSpeed = value; }

}



[Description("Popup formun açılış kordinatlarını ayarlar."),

DefaultValue(typeof(SifreKontrol.Popup.ePlacement),"BottomRight")]

public ePlacement Placement

{

get { return mPlacement; }

set { mPlacement = value; }

}

[Description("Border Color"),

DefaultValue(typeof(Color),"DarkGray")]

public Color BorderColor

{

get { return mBorderColor; }

set { mBorderColor = value; }

}

[Description("Animasyon tipini ayarlamanızı sağlar."),

Browsable(true),

DefaultValue(typeof(Popup.AnimationType), "PopupMenu")]

public AnimationType Animasyon_Tip

{

get { return animasyon_Tip; }

set { animasyon_Tip = value; }

}

#endregion//done


共有0个回答