磁盘格式化 当鼠标右键单击“3.5软盘A”并选择“格式化”时,则弹出标准的“磁盘格式化”窗口。我们 也可以在应用程序中利用函数轻松调用Windows 95标准的“磁盘格式化”窗口,以实现对磁盘相应 的操作功能。 窗体加入如下代码: Private Sub Form_Click() FormatFloppy End Sub 加入代码如下的模块: Public Const WM_CLOSE = &H10 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 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 Declare Function GetDesktopWindow Lib "user32" () As Long Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Type POINTAPI X As Long y As Long End Type
Const SWP_NOSIZE = &H1 Const SWP_NOZORDER = &H4
Public Sub FormatFloppy() Dim sBuffer As String, Windir As String, Procs As String, X Dim lResult As Long sBuffer = String$(255, 0) lResult = GetWindowsDirectory(sBuffer, Len(sBuffer)) Windir = Trim(sBuffer) Procs = Left(Windir, lResult) & " undll32.exe shell32.dll,SHFormatDrive" Call CenterDialog("Format - 3? Floppy (A:)") X = Shell(Procs, 1) Call CenterDialog("Format - 3? Floppy (A:)") k = LockWindowUpdate(0) End Sub
Public Sub CenterDialog(WinText As String) DoEvents On Error Resume Next Dim D3 As Long D3 = LockWindowUpdate(GetDesktopWindow()) Dim wdth% Dim hght% Dim Scrwdth% Dim Scrhght% Dim lpDlgRect As RECT Dim lpdskrect As RECT Dim hTaskBar As Long hTaskBar = FindWindow(0&, WinText) Call GetWindowRect(hTaskBar, lpDlgRect) wdth% = lpDlgRect.Right - lpDlgRect.Left hght% = lpDlgRect.Bottom - lpDlgRect.Top Call GetWindowRect(GetDesktopWindow(), lpdskrect) Scrwdth% = lpdskrect.Right - lpdskrect.Left Scrhght% = lpdskrect.Bottom - lpdskrect.Top X% = (Scrwdth% - wdth%) / 2 y% = (Scrhght% - hght%) / 2 Call SetWindowPos(hTaskBar, 0, X%, y%, 0, 0, SWP_NOZORDER Or SWP_NOSIZE) DoEvents End Sub