你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
VB入门技巧50例(二)
 
26.冒泡排序如下:Sub BubbleSort(List() As Double)
Dim First As Double, Last As Double
Dim i As Integer, j As Integer
Dim Temp As Double
First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) > List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
End Sub

  27.清空回收站

Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias _
"SHEmptyRecycleBinA" (ByVal hwnd As Long, ByVal pszRootPath As String, _
ByVal dwFlags As Long) As Long
Private Declare Function SHUpdateRecycleBinIcon Lib "shell32.dll" () As Long
Private Const SHERB_NOCONFIRMATION = &H1
Private Const SHERB_NOPROGRESSUI = &H2
Private Const SHERB_NOSOUND = &H4
Private Sub Command1_Click()
Dim retval As Long ' return value
  retval = SHEmptyRecycleBin(RecycleBin.hwnd, "", SHERB_NOPROGRESSUI) ' 清空回收站, 确认
  ' 若有错误出现,则返回回收站图示
    If retval <> 0 Then ' error
    retval = SHUpdateRecycleBinIcon()
  End If
End Sub
Private Sub Command2_Click()
  Dim retval As Long ' return value
  ' 清空回收站, 不确认
  retval = SHEmptyRecycleBin(RecycleBin.hwnd, "", SHERB_NOCONFIRMATION)
   ' 若有错误出现,则返回回收站图示
  If retval <> 0 Then ' error
    retval = SHUpdateRecycleBinIcon()
  End If
  Command1_Click
End Sub

  28.获得系统文件夹的路径

Private Declare Function GetSystemDirectory Lib "kernel32" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Command1_Click()
  Dim syspath As String
  Dim len5 As Long
  syspath = String(255, 0)
  len5 = GetSystemDirectory(syspath, 256)
  syspath = Left(syspath, InStr(1, syspath, Chr(0)) - 1)
  Debug.Print "System Path : "; syspath
End Sub

  29.动态增加控件并响应事件

Option Explicit
  '通过使用WithEvents关键字声明一个对象变量为新的命令按钮
  Private WithEvents NewButton As CommandButton
  '增加控件
  Private Sub Command1_Click()
   If NewButton Is Nothing Then
   '增加新的按钮cmdNew
   Set NewButton = Controls.Add("VB.CommandButton", "cmdNew", Me)
   '确定新增按钮cmdNew的位置
   NewButton.Move Command1.Left + Command1.Width + 240, Command1.Top
   NewButton.Caption = "新增的按钮"
   NewButton.Visible = True
   End If
  End Sub
  '删除控件(注:只能删除动态增加的控件)
  Private Sub Command2_Click()
   If NewButton Is Nothing Then
   Else
   Controls.Remove NewButton
    Set NewButton = Nothing
    End If
  End Sub
  '新增控件的单击事件
  Private Sub NewButton_Click()
    MsgBox "您选中的是动态增加的按钮!"
  End Sub

  30.得到磁盘序列号

Function GetSerialNumber(strDrive As String) As Long
 Dim SerialNum As Long
 Dim Res As Long
 Dim Temp1 As String
 Dim Temp2 As String
  Temp1 = String$(255, Chr$(0))
  Temp2 = String$(255, Chr$(0))
  Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, _
Len(Temp2))
  GetSerialNumber = SerialNum
End Function

  调用形式  Label1.Caption = GetSerialNumber("c:")

  31.打开屏幕保护

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd _
As Long, ByVal wMsg As Long, ByVal wParam 
As Long, lParam As Any) As Long
'我们将要调用的那个消息,在MSDN中搜索WM_SYSCOMMAND就可以找到具体说明
Const WM_SYSCOMMAND = &H112
'这个参数指明了我们让系统启动屏幕保护
Const SC_SCREENSAVE = &HF140&
Private Sub Command1_Click()
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0
End Sub

  32.获得本机IP地址

方法一:利用Winsock控件

  winsockip.localip

  方法二:

Private Const MAX_IP = 255
  Private Type IPINFO
   dwAddr As Long
   dwIndex As Long
   dwMask As Long
   dwBCastAddr As Long
   dwReasmSize As Long
   unused1 As Integer
   unused2 As Integer
  End Type
  Private Type MIB_IPADDRTABLE
   dEntrys As Long
   mIPInfo(MAX_IP) As IPINFO
  End Type
  Private Type IP_Array
   mBuffer As MIB_IPADDRTABLE
   BufferLen As Long
  End Type
  Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination _
As Any, Source As Any, ByVal Length As 
Long)
  Private Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, _
pdwSize As Long, ByVal Sort As Long) As Long
  Dim strIP As String
  Private Function ConvertAddressToString(longAddr As Long) As String
   Dim myByte(3) As Byte
   Dim Cnt As Long
   CopyMemory myByte(0), longAddr, 4
   For Cnt = 0 To 3
   ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
   Next Cnt
   ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
  End Function
  
  Public Sub Start()
   Dim Ret As Long, Tel As Long
   Dim bBytes() As Byte
   Dim Listing As MIB_IPADDRTABLE
   On Error GoTo END1
   GetIpAddrTable ByVal 0&, Ret, True
   If Ret <= 0 Then Exit Sub
   ReDim bBytes(0 To Ret - 1) As Byte
   GetIpAddrTable bBytes(0), Ret, False
   CopyMemory Listing.dEntrys, bBytes(0), 4
   strIP = "你机子上有 " & Listing.dEntrys & " 个 IP 地址。" & vbCrLf
   strIP = strIP & "------------------------------------------------" & vbCrLf & vbCrLf
   For Tel = 0 To Listing.dEntrys - 1
   CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len _(Listing.mIPInfo(Tel))
   strIP = strIP & "IP 地址 : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) & vbCrLf
   Next
   Exit Sub
END1:
   MsgBox "ERROR"
  End Sub
Private Sub Form_Load()
   Start
   MsgBox strIP
End Sub

  33. 用键盘方向键控制COMBOX

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long
Const CB_SHOWDROPDOWN = &H14F
Dim bDrop As Boolean
Private isDo As Boolean
Private Sub Combo1_Click()
If Not isDo Then
    isDo = True          '<----------回置状态
    Exit Sub
Else: MsgBox "safd"
  End If
End Sub
Private Sub Combo1_DropDown()
  bDrop = True
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = 40 Then
   isDo = False
    SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 1, 0
ElseIf KeyCode = 38 Then
   isDo = False
    If Combo1.ListIndex = 0 Then
      If bDrop Then
        bDrop = False
        SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 0, 0
      End If
    End If
  End If
End Sub
Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
If Combo1.Text = Combo1.List(0) Then
isDo = True
End If
End Sub
Private Sub Form_Load()
  isDo = True
  Combo1.AddItem "abcd"
  Combo1.AddItem "abcd1"
  Combo1.AddItem "abcd2"
  Combo1.AddItem "abcd3"
End Sub

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089