VB技巧若干,当复习了,贴上来备忘…高手自觉莫入。
'格式化软盘的函数
Private Function FormatDriver() As Boolean
Dim strCmd As String
Dim lngRtn As Long
strCmd = "rundll32.exe shell32.dll,SHFormatDriver"
lngRtn = Shell(strCmd, vbNormalFocus)
If lngRtn = 0 Then
FormatDriver = False
Else
FormatDriver = True
End If
End Function
'显示隐藏任务栏
Option Explicit
Private Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos _
Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Const SWP_HIDEWINDOW As Long = &H80
Private Const SWP_SHOWWINDOW As Long = &H40
Private Const FIR_TASKBAR As String = "Shell_TrayWnd"
Dim lngRtn As Long, lngTmp As Long
Private Function HideTaskBar() As Boolean
lngTmp = FindWindow(FIR_TASKBAR, "")
lngRtn = SetWindowPos(lngTmp, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
If lngRtn = 0 Then
HideTaskBar = False
Else
HideTaskBar = True
End If
End Function
Private Function ShowTaskBar() As Boolean
lngTmp = FindWindow(FIR_TASKBAR, "")
lngRtn = SetWindowPos(lngTmp, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
If lngRtn = 0 Then
ShowTaskBar = False
Else
ShowTaskBar = True
End If
End Function
'窗体总在前端
Option Explicit
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2
Private Const HWND_TOP As Long = 0
Private Const HWND_NOTOPMOST As Long = -2
Private Const HWND_BOTTOM As Long = 1
Private Const HWND_TOPMOST As Long = -1
Private Declare Function SetWindowPos _
Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Sub PutOnTop(frm As Form)
Call SetWindowPos(frm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
Private Sub PutNormal(frm As Form)
Call SetWindowPos(Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
'限制鼠标移动范围以及正确的解除鼠标限制
Option Explicit
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Dim My_Rect As RECT
Dim lngTmp As Long, lngRtn As Long
'限制鼠标在窗体内
Call GetWindowRect(Me.hwnd, My_Rect)
Call ClipCursor(My_Rect)
'解除限制
lngRtn = GetDesktopWindow()
Call GetWindowRect(lngRtn, My_Rect)
Call ClipCursor(My_Rect)
窗体透明
Option Explicit
Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Const WS_EX_TRANSPARENT As Long = &H20
Private Const GWL_EXSTYLE As Long = (-20)
Public Sub makeTransparent(frm As Form)
Call SetWindowLong(frm.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
End Sub
创建椭圆或圆形窗口
Option Explicit
Public Declare Function CreateEllipticRgn _
Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, _
ByVal X2 As Long, _
ByVal Y2 As Long) As Long
Public Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Form_Load()
'注:hRgn=CreateEllipticRgn(0,0,300,200)中的四个参数分别是椭圆窗体的外切矩形的左上角(0,0)和右下角(300,200)的坐标,
'根据这我们只要将它的两条外切边设为相等则可以绘出圆形的窗体了!
Dim lngRtn As Long
lngRtn = CreateEllipticRgn(0, 0, 300, 200)
Call SetWindowRgn(Me.hwnd, lngRtn, True)
End Sub
闪烁窗体
Option Explicit
Private Declare Function FlashWindow _
Lib "user32" (ByVal hwnd As Long, _
ByVal bInvert As Long) As Long
Private Sub Timer1_Timer()
Call FlashWindow(Me.hwnd, 1)
End Sub