⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24.txt

📁 VB文章集(含API、窗口、数据库、多媒体、系统、文件、等等)
💻 TXT
📖 第 1 页 / 共 2 页
字号:
Win95系统API函数大揭秘       作者:何发武 
        Win95以其崭新精致的外观、简便快捷的操作方式,让你尽享操作平台之乐趣。而
同属Microsoft公司的Visual Basic不仅仅是一门计算机语言,还是一个集应用程序开发、测试
、查错功能于一体的功能强大的集成式开发环境, 全球有数百万的程序员受益于此。Visual 
Basic一个强大的特性是它具有调用驻留在动态链接库(DLL)文件中的函数功能,其中包括由W
indows提供和使用的所有函数。对几百个函数以及DLL所包含的其它函数的存取将Visual Bas
ic的功能进行了大大的扩充,其功能远远超出其它语言。 你可以在你的应用程序中利用WIND
OWS API提供的数百个API接口函数进行扩充,加速应用程序的建立,减少程序开发的重复性。 
        所谓API就是“应用程序接口”(Application Programing Interface),是一些用
C语言编写并由操作系统自身调用的函数。Windows API函数由许多“动态链接库”(DLL)组成
。在Windows 95中,核心的Windows API DLL有以下这些:         gdi32.dll--------图形显示界面的API; 
        kernel32.dll-----处理低级任务(比如内存和任务管理)的API; 
        user32.dll-------处理窗口和消息(Visual Basic程序员能把其中一些当作事件访问)的API。 
        还不断有新的API出现,来处理新的操作系统扩展,比如E-MAIL、联网和新的外设。 
        由于Windows API函数不是Visual Basic内部函数,所以在使用它们之前必须正式
地加以声明。要想得到正确格式化的函数声明,可以访问WINAPI目录下的文件WIN32API.TXT。 
        本文只对Win95系统API函数和Win95内置功能的调用问题进行介绍。例如,我们可
以直接调用标准化的“重新启动”、“磁盘格式化”、调用并更改标准的“关于”窗口、查看
“属性”、 设置墙纸、 建立快捷键、确定内存、读写注册表、在建立状态栏图标等。         重新启动 
        有些应用程序安装完毕后要求重新启动一次系统以使设置生效,这可利用ExitWindowsEx函数实现(代码如下)。 
        Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As L
ong, ByVal dwReserved As Long) As Long         Private Sub Command1_Click() 
        ExitWindowsEx &H43, 0         End Sub         磁盘格式化 
        当鼠标右键单击“3.5软盘A”并选择“格式化”时,则弹出标准的“磁盘格式化
”窗口。我们也可以在应用程序中利用函数轻松调用Windows 95中标准的“磁盘格式化”窗口,以实现对磁盘相应的操作功能,该函数代码如下: 
        Private Sub Form_Click()         FormatFloppy         End Sub 
        模块代码见程序1:         Public Const WM_CLOSE = &H10 
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lp
ClassName As Any, ByVal lpWindowName As Any) As Long 
        Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsD
irectoryA" (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, ByVa
l 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, lpRec
t 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) & "\rundll32.exe shell32.dll,SHFormatDr
ive"          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_NOS
IZE)         DoEvents         End Sub (程序1)         调用“关于”窗口 
        在“帮助”菜单选择“关于XXX”会弹出标准“关于”窗口,利用ShellAbout函数
不但可以调用标准“关于”窗口,还可以随意更改其中内容。函数代码见程序3。         ShellAbout声明如下: 
        Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAbou
tA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByV
al hIcon As Long) As Long         Private Sub Form_Load() 
        Call ShellAbout(hWnd, “何发武工作室!”,“调用标准的关于窗口”& vbCrL
f & “电子与电脑是我们的良师益友”, 0)         End Sub 
        HWnd设置窗口句柄,szApp设置窗口的"Caption",szOtherStuff在“版权所有”和“使用权”之间的空白处增加额外说明。 
        你还可以通过对注册表信息“动手术”来改变系统的“版权信息”运行REGEDIT,
为此可依次点击HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Versio
n,就会找到你计算机中“关于”版本的通用设置,这时你可以把Version的内容改为你想要的设置,如“何发武工作室”等。         查看“属性” 
        Win95中增加了一个全新的概念----“属性”。每个对象都拥有自己的“属性”。
在“属性”窗口里是关于对象的详细描述,对于不同的对象“属性”窗口的说明是不同的。我
们可以用ShellExecuteEX函数直接调用“属性”标准窗口。程序4功能相当于当鼠标右键单击
根目录下的autoexec.bat并选择“属性”时弹出的标准的“属性”窗口。         窗体代码如下: 
       Private Sub FORM_Click()           Dim r As Long 
         Dim FileName As String          FileName = "c:\autoexec.bat" 
         r = ShowProperties(FileName, Me.hwnd) 
         If r <= 32 Then MsgBox "Error"         End Sub         模块代码见程序2。 
        Option Explicit         Type SHELLEXECUTEINFO          cbSize As Long 
         fMask As Long          hwnd As Long          lpVerb As String 
         lpFile As String          lpParameters As String 
         lpDirectory As String          nShow As Long          hInstApp As Long 
        lpIDList As Long         lpClass As String         hkeyClass As Long 
        dwHotKey As Long         hIcon As Long         hProcess As Long 
        End Type         Public Const SEE_MASK_INVOKEIDLIST = &HC 
        Public Const SEE_MASK_NOCLOSEPROCESS = &H40 
        Public Const SEE_MASK_FLAG_NO_UI = &H400 
        Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteE
x" _         (SEI As SHELLEXECUTEINFO) As Long 
        Public Function ShowProperties(FileName As String, OwnerhWnd As Long) 
As Long          Dim SEI As SHELLEXECUTEINFO          Dim r As Long 
         With SEI          .cbSize = Len(SEI) 
         .fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK
_FLAG_NO_UI          .hwnd = OwnerhWnd          .lpVerb = "properties" 
         .lpFile = FileName          .lpParameters = vbNullChar 
         .lpDirectory = vbNullChar          .nShow = 0          .hInstApp = 0 
         .lpIDList = 0          End With          r = ShellExecuteEX(SEI) 
         ShowProperties = SEI.hInstApp         End Function         (程序2) 
        设置墙纸         墙纸是显示在桌面上的图片或图像,是Win95的一个重要部分。你可以通过改变列
表中的文件来选择多种多姿多采的墙纸。我们可以利用SystemParametersInfo函数来揭开它的奥妙,并亲手为她营造异样的风采。 
        在程序窗体中增加List1控件,并加入如程序3所示代码:         Option Explicit 
        Private Declare Function SystemParametersInfo Lib "user32" Alias "Syst
emParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam A
s Any, ByVal fuWinIni As Long) As Long         Const SPI_SETDESKWALLPAPER = 20 
        Const SPIF_UPDATEINIFILE = &H1 'update Win.ini Constant 
        Const SPIF_SENDWININICHANGE = &H2 'update Win.ini and tell everyone 
        Private Sub Form_Load()          Dim Temp As String 
         Temp = InputBox("Please Input A Directory", "Changer", "C:\WINDOWS\") 
         If Temp = "" Then End 'Cancel clicked 
         If Right$(Temp, 1) <> "\" Then Temp = Temp + "\" 
         List1.Tag = Temp 
         Temp = Temp + "*.bmp" 'Set the file filter (path + *.BMP) 
         Temp = Dir$(Temp)          Do While Temp$ <> ""          Temp = Dir$ 
         If Temp = "" Then Exit Do          List1.AddItem Temp          Loop 
         List1.AddItem "(None)"          Show          List1.SetFocus 
         List1.ListIndex = 0         End Sub 
        Private Sub list1_dblclick()          Dim Temp As String 
         Dim BMPFile As String          Temp = Tag 
         If List1.Text = "(None)" Then          BMPFile = "(none)" 
         Else          BMPFile = Temp + (List1)          End If 
         SystemParametersInfo SPI_SETDESKWALLPAPER, 0, ByVal BMPFile, SPIF_UPD
ATEINIFILE         End Sub          
        Private Sub List1_KeyPress(KeyAscii As Integer) 
         If KeyAscii = 13 Then list1_dblclick         End Sub         (程序3) 
        建立快捷方式         Win95中快捷方式提供了对常用程序和文档的访问捷径,你可以为桌面或文件夹中
的任何程序、文档或打印机添加快捷方式。VB5中利用fCreateShellLink函数可以为常用程序和文档快速建立快捷方式。 
        fCreateShellLink的声明为: 
        Private Declare Function fCreateShellLink Lib "STKIT432.DLL" (ByVal lp
strFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As St
ring, ByVal lpstrLinkArgs As String) As Long 
        LpstrFolderName设置快捷方式的文件夹名称,lpstrLinkName设置快捷方式的标
题名称,lpstrLinkPath设置快捷方式所指向的应用程序的目录及文件名,格式如下: 
        fCreateShellLink(Destinationpath, Shortcutname, SourcepathAppName, "") 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -