天
天 剑
在VB中获取和修改计算机名字
在Win 9X中,计算机有一个名字。运行regedit,在“HKEY-LOCAL-MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName”中将发现“ComputerName”=“Default”( 或其它字符串),在regedit下可以查看和修改这个名字。我们还可在程序中通过Win32API提供的GetComputerName、SetComputerName这两个函数来查看和修改计算机的名字。下面以VB为例来探讨如何编写一个可查看和修改计算机名字的程序。
1、 插入一个新模块,在其中添加如下代码:
'声明 GetComputerName
Declare Function GetComputerName Lib"kernel 32"Alias "GetComputerNameA"(Byval lpBuffer As String,nSize As Long)As Long
'声明 SetComputerName
Declare Function SetComputerName Lib"kernel 32"Alias "SetComputerNameA"(Byval lp ComputerName As String)As Long
'定义一个获取计算机名字的函数
Public Function GetCName (CName ) As Boolean
Dim sComputerName As String '计算机的名字
Dim lComputerName As Long '计算机名字的长度
Dim lResult As Long 'GetComputerName的返回值
Dim RV As Boolean
'GetCName返回值,若为TRUE则表示操作成功
lComputerNameLen =256
sComputerName = Space (lComputerNameLen)
lResult =GetComputerName (sComputerName,lCompputerNameLen)
If lResult <>0 Then Cname = Left$ (sComputerName,lComputerNameLen)
RV =True
Else
RV =False
End If
GetCName =RV
End Function
'定义一个修改计算机名字的函数
Public Function SetCName (CName ) As Boolean
Dim lResult As Long
Dim RV As Boolean
lResult =SetComputerName (CName)
If lResult <>0 Then
RV =True 修改成功
Else
RV =False
End If
SetCName =RV
End Function
2、 在窗体中添加一命令按钮Command1,双击该按钮并在其中添加如下代码:
Sub Command1-Click ()
DIM CN AS String
x = GetCName (CN)
Print "This Computer Name is :",CN
CN="MYCOMPUTER"
x = SetCName (CN )
Print "Now the Computer name is :",CN
End Sub
3、 保存上述设置和代码,然后按F5运行该程序,观察其运行结果。
需要说明的是:(1)修改完计算机的名字后必须重新启动才能有效;(2)计算机名字中只能含有字母、数字和下面的几种符号:!、@、#、$、%、^、 ;、'、)、(、· 、- 、{、}、~、(3)程序的运行环境为:VB4.0(32)、Win 95中文版。
取得并设置双击间隔时间
取得双击间隔时间:
Declare Function GetDoubleClickTime Lib "user32" Alias "GetDoubleClickTime" () As Long
使用:
返回千分之一秒的时间间隔数。
设置双击间隔时间:
Declare Function SetDoubleClickTime Lib "user32" Alias "SetDoubleClickTime" (ByVal wCount As Long) As Long
使用:
wCount 为千分之一秒的时间间隔数。
突破SendKeys的限制
SendKeys 不能实现一些特殊的键, 如 Alt+PrintScr 。 不过使用 API ,可以改变这样的状况。
声明:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
使用:
'一个抓屏的例子
Const VK_SNAPSHOT As Byte = &H2C
' 把应用窗口图象放到剪贴板:
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
'?把整个屏幕抓到剪贴板:
Call keybd_event(VK_SNAPSHOT, 1, 0, 0)
可以用该方法抓 AVI 图象。