获得系统中的所有字体列表
在Form1中加入一个ListBox,并在Form1中加入如下代码:
Private Sub Form_Load()
Dim counter As Integer
For counter = 0 To Screen.FontCount - 1
List1.AddItem Screen.Fonts(counter)
Next
End Sub
Private Sub List1_Click()
Static tempheight As Single
If tempheight = 0 Then tempheight = List1.Height
List1.Font.Name = List1.List(List1.ListIndex)
List1.Height = tempheight
End Sub
返回如何关闭一个程序
下面演示如何利用FindWindow函数找到窗口并利用SendMessage函数关闭窗口
在Form1中加入如下代码:
Private Declare Function FindWindow Lib
"user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib
"user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg
As Long, _
ByVal wParam As Long, lParam As Any) As Long
Const WM_CLOSE = &H10
Private Sub Form_Click()
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "Form1")
Debug.Print winHwnd
If winHwnd <> 0 Then
RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)
If RetVal = 0 Then
MsgBox "发送消息错误."
End If
Else
MsgBox "Form1窗口不存在"
End If
End Sub
运行程序,点击Form1,窗口就被关闭
返回
获得当前用户名
在Form1中加入如下代码:
Private Declare Function GetUserName Lib
"advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize
As Long) _
As Long
Private Sub Form_Load()
Dim s As String
Dim cnt As Long
Dim dl As Long
Dim CurUser As String
cnt = 199
s = String$(200, 0)
dl = GetUserName(s, cnt)
If dl <> 0 Then CurUser = Left$(s, cnt) Else
CurUser = ""
Debug.Print CurUser
End Sub
返回
获得Windows启动方式
在Form1中加入一个CommandButton、一个Label并加入如下代码
Option Explicit
Private Declare Function GetSystemMetrics Lib
"user32" _
(ByVal nIndex As Long) As Long
Const SM_CLEANBOOT = 67
Private Sub Command1_Click()
Select Case GetSystemMetrics(SM_CLEANBOOT)
Case 1: Label1 = "安全模式."
Case 2: Label1 = "支持网络的安全模式."
Case Else: Label1 = "Windows运行在普通模式."
End Select
End Sub
点击Command1就可以看到Windows是以何种方式启动的。
返回
如何交换鼠标按键
在程序中定义如下API函数
Declare Function SwapMouseButton& Lib
"user32" _
(ByVal bSwap as long)
要交换鼠标按键,将bSwap参数设置为True。要恢复正常设置,将bSwap设置为False。
然后调用函数就可以交换和恢复鼠标按键了。
返回
怎样关闭Windows
使用ExitWindowsEx函数,函数有两个参数确定如何关闭Windows,其中第二个参数未使用
设置为0
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Declare Function ExitWindowsEx Lib "user32"
Alias _
"ExitWindowsEx" (ByVal uFlags As Long, ByVal
dwReserved _
As Long) As Long
If you wanted to forcefully reboot the computer use the
following code:
如果想强制重新启动计算机,函数应该这样使用:
t& = ExitWindowsEx(EWX_FORCE OR EWX_REBOOT, 0)
返回
如何获得Windows95已经运行的时间
要获得Windows95运行的时间,使用以下函数:
Declare Function GetTickCount& Lib
"kernel32" ()
函数返回的是以毫秒计算的时间。
在16位Windows下,使用GetCurrentTime 函数。
返回
翻转一个字符串
下面的函数利用递归原理获得字符串的翻转字符串
Function reversestring(revstr As String) As String
' revstr: 要翻转的字符串
' 返回值:翻转后的字符串
Dim doreverse As Long
reversestring = ""
For doreverse = Len(revstr) To 1 Step -1
reversestring = reversestring & Mid$(revstr,
doreverse, 1)
Next
End Function
返回
获得、设置鼠标双击间隔时间
获得鼠标双击间隔时间:
Public Declare Function GetDoubleClickTime Lib
"user32" Alias _
"GetDoubleClickTime" () As Long
函数返回以毫秒为单位的鼠标双击间隔时间。
设置鼠标双击间隔时间
Declare Function SetDoubleClickTime
Lib "user32" Alias _
"SetDoubleClickTime" (ByVal wCount As Long) As
Long
其中的参数wCount为以毫秒为单位的新的时间间隔的长度。
返回
10
获得系统中鼠标的键数
获得系统中鼠标支持的键数(两键或三键),首先在程序中做如下定义:
Declare Function GetSystemMetrics Lib "user32"
Alias _
"GetSystemMetrics" (ByVal nIndex As Long) As
Long
Public Const SM_CMOUSEBUTTONS = 43
然后在程序中调用GetSystemMetrics函数
number& = GetSystemMetrics(SM_CMOUSEBUTTONS)
返回值为系统支持的鼠标键数(返回0,则系统中没有安装鼠标:-)
)
下面是GetSystemMetrics函数参数nIndex的定义:
SM_ARRANGE |
Flags specifying how the system
arranged minimized windows. For more information
about minimized windows, see the following
Remarks section. |
SM_CLEANBOOT |
返回系统启动方式:
0 正常启动
1 安全模式启动
2 网络安全模式启动 |
SM_CMOUSEBUTTONS |
返回值为系统支持的鼠标键数,返回0,则系统中没有安装鼠标。 |
SM_CXBORDER,
SM_CYBORDER |
返回以相素值为单位的Windows窗口边框的宽度和高度,如果Windows的为3D形态,则
等同于SM_CXEDGE参数 |
SM_CXCURSOR,
SM_CYCURSOR |
返回以相素值为单位的标准光标的宽度和高度 |
SM_CXDLGFRAME,
SM_CYDLGFRAME |
等同与SM_CXFIXEDFRAME and
SM_CYFIXEDFRAME |
SM_CXDOUBLECLK,
SM_CYDOUBLECLK |
以相素值为单位的双击有效的矩形区域 |
SM_CXEDGE,SM_CYEDGE |
以相素值为单位的3D边框的宽度和高度 |
SM_CXFIXEDFRAME,
SM_CYFIXEDFRAME |
围绕具有标题但无法改变尺寸的窗口(通常是一些对话框)的边框的厚度 |
SM_CXFRAME,SM_CYFRAME |
等同于SM_CXSIZEFRAME and
SM_CYSIZEFRAME |
SM_CXFULLSCREEN,
SM_CYFULLSCREEN |
全屏幕窗口的窗口区域的宽度和高度 |
SM_CXHSCROLL,
SM_CYHSCROLL |
水平滚动条的高度和水平滚动条上箭头的宽度 |
SM_CXHTHUMB |
以相素为单位的水平滚动条上的滑动块宽度 |
SM_CXICON,SM_CYICON |
系统缺省的图标的高度和宽度(一般为32*32) |
SM_CXICONSPACING,
SM_CYICONSPACING |
以大图标方式查看Item时图标之间的间距,这个距离总是大于等于
SM_CXICON and SM_CYICON. |
SM_CXMAXIMIZED,
SM_CYMAXIMIZED |
处于顶层的最大化窗口的缺省尺寸 |
SM_CXMAXTRACK,
SM_CYMAXTRACK |
具有可改变尺寸边框和标题栏的窗口的缺省最大尺寸,如果窗口大于这个
尺寸,窗口是不可移动的。 |
SM_CXMENUCHECK,
SM_CYMENUCHECK |
以相素为单位计算的菜单选中标记位图的尺寸 |
SM_CXMENUSIZE,
SM_CYMENUSIZE |
以相素计算的菜单栏按钮的尺寸 |
SM_CXMIN,SM_CYMIN |
窗口所能达到的最小尺寸 |
SM_CXMINIMIZED,
SM_CYMINIMIZED |
正常的最小化窗口的尺寸 |
SM_CXMINTRACK,
SM_CYMINTRACK |
最小跟踪距离,当使用者拖动窗口移动距离小于这个值,窗口不会移动。 |
SM_CXSCREEN,
SM_CYSCREEN |
以相素为单位计算的屏幕尺寸。 |
SM_CXSIZE,SM_CYSIZE |
以相素计算的标题栏按钮的尺寸 |
SM_CXSIZEFRAME,
SM_CYSIZEFRAME |
围绕可改变大小的窗口的边框的厚度 |
SM_CXSMICON,
SM_CYSMICON |
以相素计算的小图标的尺寸,小图标一般出现在窗口标题栏上。 |
M_CXVSCROLL,
SM_CYVSCROLL |
以相素计算的垂直滚动条的宽度和垂直滚动条上箭头的高度 |
SM_CYCAPTION |
以相素计算的普通窗口标题的高度 |
SM_CYMENU |
以相素计算的单个菜单条的高度 |
SM_CYSMCAPTION |
以相素计算的窗口小标题栏的高度 |
SM_CYVTHUMB |
以相素计算的垂直滚动条中滚动块的高度 |
SM_DBCSENABLED |
如果为TRUE或不为0的值表明系统安装了双字节版本的USER.EXE,为FALSE或0则不是。 |
SM_DEBUG |
如果为TRUE或不为0的值表明系统安装了debug版本的USER.EXE,为FALSE或0则不是。 |
SM_MENUDROPALIGNMENT |
如果为TRUE或不为0的值下拉菜单是右对齐的否则是左对齐的。 |
SM_MOUSEPRESENT |
如果为TRUE或不为0的值则安装了鼠标,否则没有安装。 |
SM_MOUSEWHEELPRESENT |
如果为TRUE或不为0的值则安装了滚轮鼠标,否则没有安装。(Windows
NT only) |
SM_SWAPBUTTON |
如果为TRUE或不为0的值则鼠标左右键交换,否则没有。 |
返回
|