040111.htm

来自「提供一个VB学习教程,入门级。来源于网上」· HTM 代码 · 共 162 行

HTM
162
字号
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" width="98%">
    <tr>
      <td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">API函数</a></td>
    </tr>
    <tr>
      <td width="100%">
        <p align="center">其它函数</td>
    </tr>
    <tr>
      <td width="100%"><br>
        打开或创建文件、设备、通讯端口等:CreateFileA函数<br>
        此函数用以二进制方式创建或打开文件,以供读写操作,类似于Open语句,若执行成功,则函数返回值为打开文件的句柄,恰如Open语句里的#文件号一样,用此句柄来标识,向文件中读或写--结合_lread, _lwrite或_llseek函数。<br>
        声明:<br>
        Declare Function CreateFileA Lib &quot;kernel32&quot; (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long<br>
        有七个参数,如下:<br>
        参数 类型及说明<br>
        lpFileName String,要打开的文件的名字<br>
        dwDesiredAccess Long,如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息<br>
        dwShareMode Long,零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问<br>
        lpSecurityAttributes SECURITY_ATTRIBUTES,指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)<br>
        DwCreationDisposition Long,下述常数之一:<br>
        CREATE_NEW 创建文件;如文件存在则会出错<br>
        CREATE_ALWAYS 创建文件,会改写前一个文件<br>
        OPEN_EXISTING 文件必须已经存在。由设备提出要求<br>
        OPEN_ALWAYS 如文件不存在则创建它<br>
        TRUNCATE_EXISTING 讲现有文件缩短为零长度<br>
        DwFlagsAndAttributes Long,一个或多个下述常数<br>
        FILE_ATTRIBUTE_ARCHIVE 标记归档属性<br>
        FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式<br>
        FILE_ATTRIBUTE_NORMAL 默认属性<br>
        FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录<br>
        FILE_ATTRIBUTE_READONLY 文件为只读<br>
        FILE_ATTRIBUTE_SYSTEM 文件为系统文件<br>
        FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作<br>
        FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作<br>
        FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块<br>
        FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化<br>
        FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化<br>
        FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件<br>
        也可在Windows NT下组合使用下述常数标记:<br>
        SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION, SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY<br>
        HtemplateFile Long,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性<br>
        调用如:<br>
        Public lgs&amp;<br>
        Public nul As SECURITY_ATTRIBUTES<br>
        lgs&amp; = CreateFile(c:\windows\desktop\x.exe&quot;, GENERIC_READ, 0&amp;, nul, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0&amp;)<br>
        如果嫌这个函数参数过多的话,可以用OpenFile函数.<br>
        ==================================================<br>
        打开一个文件进行操作:OpenFile函数<br>
        声明:<br>
        Declare Function OpenFile Lib &quot;kernel32&quot; Alias &quot;OpenFile&quot; (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long<br>
        其中有个结构类型OFSTRUCT,声明有点特别:不要用API浏览器的,要照如下声明:<br>
        Type OFSTRUCT<br>
        cBytes As Byte<br>
        fFixedDisk As Byte<br>
        nErrCode As Integer<br>
        Reserved1 As Integer<br>
        Reserved2 As Integer<br>
        szPathName As String * 128 --就是这一行不同,换成了定长字符串。<br>
        End Type <br>
        调用如:<br>
        Public ldd As OFSTRUCT<br>
        lgs&amp; = OpenFile(&quot;c:\ndlxn3.exe&quot;, ldd, OF_READWRITE)<br>
        函数返回值是打开的文件的句柄.,只有三个参数,第1个指明路径和文件名,第2个为1个结构型(只声明个空变量即可),第3个用OF_READ(只读)或OF_READWRITE(可读写)等常数值。全部可能值如下:<br>
        OF_CREATE 创建指定的文件。如已经存在,则将其缩减为零长度 <br>
        OF_DELETE 删除指定的文件 <br>
        OF_EXIST 通过尝试打开文件的做法,判断一个文件是否存在。如文件存在,则将其关闭。此时,函数会返回文件打开时使用的句柄,但这个句柄是无效的。如指定的文件不存在,则返回一个负数 <br>
        OF_PARSE 填写lpReOpenBuff结构的内容,但不执行其他任何操作 <br>
        OF_PROMPT 如文件不存在,则显示一个消息框,在其中列出重试和取消按钮 <br>
        OF_READ 以只读方式打开文件 <br>
        OF_READWRITE 以可读、可写的方式打开文件 <br>
        OF_REOPEN 打开lpReOpenBuff结构内指定的文件,而不是用lpFileName参数 <br>
        OF_SEARCH 强迫windows查找文件--即使指定了特定的路径 <br>
        OF_SHARE_COMPAT 文件可由多个应用程序打开多次 <br>
        OF_SHARE_DENY_NONE 可打开文件,以便由其他程序读写 <br>
        OF_SHARE_DENY_READ 禁止其他程序读写文件内容 <br>
        OF_SHARE_DENY_WRITE 其他程序可以读文件,但不能写文件 <br>
        OF_SHARE_EXCLUSIVE 其他任何一个程序都不能再打开这个文件 <br>
        OF_WRITE 文件以只写模式打开<br>
        ==========================================<br>
        修改文件的创建时间,修改时间:SetFileTime函数<br>
        声明:<br>
        Declare Function SetFileTime Lib &quot;kernel32&quot; (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long<br>
        该函数设置文件的创建、修改及上次访问的时间。参数如下:<br>
        hFile Long,系统文件句柄 ,可用CreateFile函数获得文件句柄。??<br>
        lpCreationTime FILETIME,文件的创建时间 <br>
        lpLastAccessTime FILETIME,文件上一次访问的时间 <br>
        lpLastWriteTime FILETIME,文件最近一次修改的时间<br>
        有一个自定义的数据类型FILETIME,如下:<br>
        类型定义 <br>
        Type FILETIME ' 8 Bytes <br>
        dwLowDateTime As Long<br>
        dwHighDateTime As Long<br>
        End Type <br>
        说明 <br>
        windows提供了一种特殊的机制,可以记录文件的访问及创建时间。在win32环境中,这些信息以64位值的形式保存,量度的是自1601年1月1日以来经历的100ns时间单位数量(64-bit number specifying the elapsed time since January 1, 1601, in 100-nanosecond increments.) <br>
        字段表 <br>
        字段 类型及说明 <br>
        dwLowDateTime <br>
        dwHighDateTime 均为Long,Low and high-order 32 bits of the file time<br>
        注解 <br>
        文件时间在系统中通常用&quot;协同世界时间&quot;(UTC)的格式保存,但同时提供了在UTC及本地时间之间转换的函数。FILETIME结构里可包含UTC或本地时间--由我们自行决定在结构中包含什么时间。<br>
        =======================================<br>
        注册和反注册OCX文件:DllRegisterServer(注册)和DllUnregisterServer(卸载)<br>
        这两个函数没有任何参数,但有一点特别之处:它们就包含在这个要注册或卸载的OCX文件里,因此声明时的Lib &quot;库名&quot;就要指明这个OCX本身。如果注册或卸载成功,函数会返回值0。例如我下载到1个叫tyftools.OCX的控件,先把它拷入c:\windows\system\下,然后在代码中声明:<br>
        Private Declare Function DllRegisterServer Lib &quot;lyftools.OCX&quot; () As Long<br>
        然后在代码中写:<br>
        If DllRegisterServer =0 Then MsgBox &quot;注册成功。&quot;<br>
        就行了,如果卸载它的话,例如:<br>
        Private Declare Function DllUnregisterServer Lib &quot;lyftools.OCX&quot; () As Long<br>
        Private Sub Command1_Click()<br>
        DllUnregisterServer<br>
        End Sub<br>
        即可。<br>
        =============================<br>
        动态暂停代码的执行:Sleep函数过程<br>
        同一过程中的代码通常都是连续地执行完毕,但有时,我们却希望它能在某处稍微停一下,隔二三秒再执行后面的代码,以等待某个返回值或某个动作执行完毕。这时就可利用Sleep函数,指定要暂停的时间,如1000表示暂停1秒钟。声明:<br>
        Declare Sub Sleep Lib &quot;kernel32&quot; (ByVal dwMilliseconds As Long)<br>
        调用如:Call Sleep(1000) '暂停1秒钟。<br>
        ===============================<br>
        创建程序的快捷方式:fCreateShellLink函数<br>
        该函数为指定程序创建快捷方式,需要指定快捷方式路径,快捷方式名称,源程序路径名称,有一点特别,第1个参数--快捷方式路径要用相对路径表示,因为它已初始化为&quot;开始&quot;菜单&quot;程序&quot;目录,声明如下:<br>
        Private Declare Function fCreateShellLink Lib &quot;vb5stkit.DLL&quot; (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long<br>
        参数为4个字符串,第1个参数指明快捷方式路径,如果此参数为空,则快捷方式创建到&quot;开始&quot;菜单&quot;程序&quot;目录中,如果要改变路径,只能用相对路径表示,如创建到桌面用&quot;..\..\桌面&quot;(两点&quot;..&quot;是DOS的表示法,表示向上一级目录),创建到&quot;开始&quot;菜单&quot;启动&quot;中,用&quot;\启动&quot;,注意:不能指定1个本不存在的相对路径,该函数不能创建目录。这个函数是有限制的,因为只能用相对路径,故不能将快捷方式创建到其他驱动器上。<br>
        第2个参数为快捷方式名称,不要写出扩展名.lnk。<br>
        第3个参数为源文件的全路径和名称,如:&quot;E:\abc\xx.exe&quot;.<br>
        第4个参数为空。<br>
        调用如:<br>
        x = fCreateShellLink(&quot;..\..\桌面&quot;, &quot;bcd&quot;, &quot;e:\audio\cw9\mp3enc.exe&quot;, &quot;&quot;)<br>
        给e盘上一个文件创建了1个名为bcd 的快捷方式到桌面。<br>
        再如给本程序创建快捷方式到&quot;开始&quot;菜单&quot;程序&quot;的&quot;启动&quot;中,为:<br>
        x = fCreateShellLink(&quot;\启动&quot;, &quot;lxn1&quot;, App.Path &amp; &quot;\&quot; &amp; App.EXEName, &quot;&quot;)
        <p align="center">
        <br>
        &lt; <a href="040110.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="050101.htm">下一页</a>     
        &gt;<br>
      </td>
    </tr>
  </table>
  </center>
</div>
</body>
</html>

⌨️ 快捷键说明

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