指哪“译”哪

软件世界

大家一定用过《金山词霸》吧?鼠标指到哪里就“译”到哪里。下面我们也编一个指到哪里就“译”到哪里的程序,只是译的内容完全不同!
打开VB,新建一个“标准EXE”。在窗体上放上6个TextBox控件,6个Label控件,3个CommandButton控件,1个Timer控件,再添加一个“模块”。控件属性都为默认,界面可以参考(图1)

图1
图1

程序的所有源代码如下:

1.模块部分源代码

Option Explicit
'从指定窗口的结构中取得信息
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
'获取鼠标指针的当前位置
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
'调用一个窗口的窗口函数,将一条消息发给那个窗口
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
'为指定的窗口取得类名
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
'取得窗口类的一个Long变量条目
Public Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Const WM_GETTEXT = &HD
Public Const GWL_ID = (-12)
Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = (-20)
Public Const GCW_ATOM = (-32)
Public Type POINTAPI
x As Long
y As Long
End Type

2.窗体部分源代码

Option Explicit
Private Sub Command1_Click() '退出
Unload Me
End Sub
Private Sub Command2_Click() '开始
Timer1.Enabled = True
Command2.Enabled = False
Command3.Enabled = True
End Sub
Private Sub Command3_Click() '暂停
Timer1.Enabled = False
Command3.Enabled = False
Command2.Enabled = True
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 100
Command3.Enabled = False
End Sub
Private Sub Timer1_Timer()
Dim Point As POINTAPI
Dim hwnd As Long
Dim lParam As String * 256
'取得鼠标指针的位置
GetCursorPos Point
'获取鼠标指针所在位置窗口句柄
hwnd = WindowFromPoint(Point.x, Point.y)
'向该窗口发送一个WM_GETTEXT消息,以获得该
'窗口的文本,并显示在文本框Text1中
SendMessage hwnd, WM_GETTEXT, 255, lParam
Text1.Text = lParam
'获取窗口类名
GetClassName hwnd, lParam, 255
Text2.Text = lParam
'获取窗口类值
Text3.Text = GetClassLong(hwnd, GCW_ATOM)
'获取窗口风格
Text4.Text = GetWindowLong(hwnd, GWL_STYLE)
'获取窗口扩展风格
Text5.Text = GetWindowLong(hwnd, GWL_EXSTYLE)
'获取窗口ID
Text6.Text = GetWindowLong(hwnd, GWL_ID)
End Sub
好了,现在运行程序,将鼠标移到你想要译的地方。你现在看到了什么?
注:以上程序在Win9x、VB6.0中文企业版中运行通过。