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


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

背景
项目在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