技术开发 频道

用VB.net2008编写密码查看器


ITPUB 专稿】Visual Studio2008发布已经快几个月了,原先还在用Visual Studio2005的开发者们现在已经开始考虑升级使用Visual Studio2008了。毕竟新的版本在编程和人性化方面做得更好。而Visual Studio2008在控件方面也改进不少,将原来所存在的一些BUG去掉了,运行效率更高。本文将着重通过一个实例让读者掌握在VB.net中掌握基本常用控件的使用技巧以及为你的程序添加如快捷键等实用的操作方式,非常适合VB.net2008的初学者们。
 
  打开 Visual Studio 2008在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序(Windows Application)。单击确定 (OK)如图1。


                          图一

  在Form1窗体中添加6个Label控件,属性设置分别如下




  完成后,我们需要在From1上继续添加控件,在Form1中添加一个TextBox1控件、一个Timer1控件和一个Button1控件。Timer1控件的Interval属性值为250 ,Enabled=true. 

  Button1的Text属性值:退出 ,UseMnemonic=true 。完成后,适当调整窗口。如图2

                            图2

 


  基本上界面工作已经完成了。选择Form1窗体更改属性值TopMost=true ,进入代码事件中。

  注意需要先声明事件:Imports System.Text 

  Imports System.Text 

  Public Class Form1

转到Public Class Form1事件中

Public Class Form1
Declare Function RegisterHotKey Lib "user32.dll" Alias _
"RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean '注册一个热键
Declare Function UnRegisterHotKey Lib "user32.dll" Alias _
"UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
Declare Function WindowFromPoint Lib "user32" Alias _
"WindowFromPoint" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer
Declare Function SendMessageA Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As StringBuilder) As Integer

Const WM_HOTKEY = &H312
Const Key_ALT = &H1

Const Key_CONTROL = &H2
Const Key_SHIFT = &H4
Const GWL_WNDPROC = (-4)
Const WM_GETTEXT = &HD
Const WM_GETTEXTLENGTH = &HE
Dim PosX, PosY As Integer
Dim intHand As Integer
Const intLength = 1500
Dim Str As New StringBuilder(intLength)


转到Timer1_Tick事件中

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
PosX = Windows.Forms.Cursor.Position.X
PosY = Windows.Forms.Cursor.Position.Y
MousXY.Text = PosX & "," & PosY
intHand = WindowFromPoint(PosX, PosY)
SendMessageA(intHand, WM_GETTEXT, intLength, Str)
Me.TextBox1.Text = Str.ToString.Trim
End Sub

转到Button1_Click事件中

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 



UnRegisterHotKey(Handle, 0)



Application.Exit()



End Sub



转到Form1_Load事件中

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load



'注册Ctrl+A的组合键



RegisterHotKey(Handle, 0, Key_CONTROL, Asc("A"))



End Sub







声明Protected Overrides Sub WndProc(ByRef m As Message)事件




Protected Overrides Sub WndProc(ByRef m As Message)



If m.Msg = WM_HOTKEY Then



Me.Timer1.Enabled = Not Me.Timer1.Enabled



If Me.Timer1.Enabled Then



Me.ColorShow.BackColor = Color.Lime



Else



Me.ColorShow.BackColor = Color.Tomato



End If



End If



MyBase.WndProc(m)



End Sub




  好了代码输入完毕,最终界面效果图3


                   图三

  我们现在来运行一下吧,当然有很多网友可能也知道网络上有很多带星号的密码查看的工具,其实它的制作原理也很简单。为了验证密码查看器程序的有效性,笔者打开了一个已经加密的Word文档,将鼠标移动到已经加密并且带星号的文本框,如图4


                            图四

  是不是发现很神奇呢?马上我们可以看到这些星号在密码查看程序的文本框中给显示出来了图5。

  
                              图 5 

  好了,程序测试运行成功,也完成了我们查看密码文本框的目的,当然这只是一个简单的演示程序,大家还可以去修改一下,添加更多的查看密码文本的功能,使其功能增强。

0
相关文章