'**************************************
' 模块名称: AppendToLog
' 功能描述:一个很不错的日志文件写入模块,不同于
'     open/print/close写文件方法,这个模块使用API
'     存取文件,这样保证文件能正确的存取,及时被
'     存取的文件正被其他用户打开。这个模块是最安全
'     有效的文件写入方法,用于日志文件的创建,当然
'     也可以用于其他文件存取。
'   : 枕善居收藏整理
'**************************************
'API 声明
Const GENERIC_WRITE = &H40000000
Const FILE_SHARE_READ = &H1
Const Create_NEW = 1
Const OPEN_EXISTING = 3
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_BEGIN = 0
Const INVALID_HANDLE_VALUE = -1

Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long

Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Any) As Long

Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long

Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'**************************************
' 模块名称: AppendToLog
' 功能描述:一个很不错的日志文件写入模块,不同于
'     open/print/close写文件方法,这个模块使用API
'     存取文件,这样保证文件能正确的存取,及时被
'     存取的文件正被其他用户打开。这个模块是最安全
'     有效的文件写入方法,用于日志文件的创建,当然
'     也可以用于其他文件存取。
'   : 枕善居收藏整理
'
' 输入参数:lpFileName As String - 要写入的日志文件名称
' 返 回 值:True 成功, False 失败
'**************************************
Private Function AppendToLog(ByVal lpFileName As String, ByVal sMessage As String) As Boolean
    'appends a string to a text file. it's u
    '     p to the coder to add a CR/LF at the end
    '    
    'of the string if (s)he so desires.
    'assume failure
    AppendToLog = False
    
    'exit if the string cannot be written to
    '     disk
    If Len(sMessage) < 1 Then Exit Function
    
    'get the size of the file (if it exists)
    '    
    Dim fLen As Long
    fLen = 0

If (Len(Dir(lpFileName))) Then
        fLen = FileLen(lpFileName)
    End If
    
    'open the log file, create as necessary
    Dim hLogFile As Long
    hLogFile = CreateFile(lpFileName, GENERIC_WRITE, FILE_SHARE_READ, ByVal 0&, _
    IIf(Len(Dir(lpFileName)), OPEN_EXISTING, Create_NEW), _
    FILE_ATTRIBUTE_NORMAL, 0&)
    
    'ensure the log file was opened properly
    '    
    If (hLogFile = INVALID_HANDLE_VALUE) Then Exit Function
    
    'move file pointer to end of file if fil
    '     e was not created

If (fLen <> 0) Then

If (SetFilePointer(hLogFile, fLen, ByVal 0&, FILE_BEGIN) = &HFFFFFFFF) Then
            'exit sub if the pointer did not set cor
            '     rectly
            CloseHandle (hLogFile)
            Exit Function
        End If
    End If
    
    'convert the source string to a byte arr
    '     ay for use with WriteFile
    Dim lTemp As Long
    ReDim TempArray(0 To Len(sMessage) - 1) As Byte

For lTemp = 1 To Len(sMessage)
        TempArray(lTemp - 1) = Asc(Mid$(sMessage, lTemp, 1))
    Next
    
    'write the string to the log file

If (WriteFile(hLogFile, TempArray(0), Len(sMessage), lTemp, ByVal 0&) <> 0) Then
        'the data was written correctly
        AppendToLog = True
    End If
    
    'flush buffers and close the file
    FlushFileBuffers (hLogFile)
    CloseHandle (hLogFile)
    
End Function


VB部分相关文章推荐:

※vb中line的用法[转]

※画图工具的VB实现

※VB 一个获得自己外网 IP 地址的程序代码

※VB程序中实现IP地址子网掩码网关DNS的更改  [转]

※在 VB 中应用 FSO 对象模型介绍(摘自网络)

※[转] Vb中FSO 对象的介绍

※VB 画坐标轴

※VB 二进制文件的操作

※[VB]BMP转JPGVB中KeyCode常数用法

※vb实时曲线的绘制和保存

※VB操作EXCEL

※vb初学回顾:最大公约数 最小公倍数 素数求取

※vb 关于窗口样式的API以及处理文本的API参考

※【引用】在VB6.0中实现弹出式菜单的几种方法

※【引用】URLDownloadToFile_VB下载文件!

※利用WinRar压缩和解压缩文件

※VB 剪切板

※VB实现指示窗口中拖动方框的程序

※VB绘制走动的表针

※如何用VB制作DLL文件

※【引用】VB修改IP地址

※VB多窗体退出代码

※[转]VB:如何检测到U盘的插拔(源代码)

※巧用SendMessage函数扩展Treeview功能

※vb中如何在任务管理器里面隐藏应用程序进程

※如何实现VB与EXCEL的无缝连接

※一个API方式存取日志文件的模块[VB]

※VB用记录集填充表格函数

※VB打开文本文件各种方法

※vb ClipBoard 剪切板应用(复制剪切粘贴)

※【引用】窗口处理技巧大全 vb(窗体控件)

※【转】 Md rd命令之VB

※vb:读写文本文件

※在vb中实现真正锁定的带自定义菜单的文本控件

※【引用】使用CommonDialog的ShowSave后如何判断是保存还是※取消?

※vb 关于commondialog的多选VB获取Windows操作系统所有版本

※vb UTF文本文件访问

※VB编程中的Unicode vs Ansi

※VB编PiView4注册机

※VB获取超过2G文件的大小

※比CopyMemory还要快的函数SuperCopyMemory

※VB:编程效率快步提高之:十七种可用一行代码完成的技巧

※VB画出来的五星红旗

※Qt第一印象——Qte与Qt


更多精彩>>>

一个API方式存取日志文件的模块[VB]相关推荐

  1. VB 一个API方式存取日志文件的模块

    程序代码 '************************************** ' 模块名称: AppendToLog ' 功能描述:一个很不错的日志文件写入模块,不同于 '     ope ...

  2. Oracle原理: 归档方式和日志文件

    一.联机日志.联机日志组 oracle联机重做日志放在了 /oracle/oradata/orcl下,有3个REDO.log,记录了对数据库的所有的操作.用户在对数据库进行操作时,后台进程LGWR就会 ...

  3. 遇到一个日志文件变化带来的文件句柄问题

    正在进行的项目中有个系统调试日志存储的功能,需要存储打印信息.测试部反馈了一个bug:调试日志文件有时候不更新.对照代码,项目用的代码和之前项目的代码是一样的.感觉没什么问题,我自己测试没发现有不 ...

  4. 3:添加一个slave到已有的复制环境(基于二进制日志文件位置)

    服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (old slave) 服务器 192.168.1.4 (new slave) 您可以将另一个slave添加到现有复 ...

  5. 记录 McAfee WebAdvisor 产生大量日志文件,卸载时一直转圈圈,成功卸载方式

    解决方案放前面,下载 McAfee 卸载工具 MCPR.exe 问题描述: 某天 C盘 空间严重不足,使用磁盘扫描工具 SpaceSniffer 看了一眼 C盘,发现在 C:\ProgramData\ ...

  6. python使用logging打印信息到日志文件中

    python使用logging打印信息到日志文件中 参考 Python输出日志信息 Python + logging 输出到屏幕,将log日志写入文件 使用logging打印日志到文件中的目的是: 解 ...

  7. vs2010中写日志文件的几种方法

    windows系统日志中记录了系统中硬件.软件和系统问题的相关信息,同时可监控系统中发生的事件.因此当系统崩溃导致一些异常现象发生时可通过系统日志来找出错误发生的原因.那么对于应用软件来说,如果也提供 ...

  8. Linux 服务器日志文件查找技巧精粹

    用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略.然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法.接下来,我们将看到 logwatch工具 ...

  9. 如何在Centos 7上用Logrotate管理日志文件

    何为Logrotate? Logrotate是一个实用的日志管理工具,旨在简化对系统上生成大量的日志文件进行管理. Logrotate允许自动旋转压缩,删除和邮寄日志文件,从而节省宝贵的磁盘空间. L ...

最新文章

  1. MYSQL的初级使用
  2. golang atomic 32位机器问题
  3. 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
  4. 开源 免费 java CMS - FreeCMS1.2-标签 userList
  5. 201671030130+词频统计软件项目报告
  6. [vue] 什么是双向绑定?原理是什么?
  7. 南京航空航天大学2020数据结构课设
  8. 联想面试智力题,听说前面三道题必考(有部份解答)
  9. 雪城大学信息安全讲义 4.5
  10. Weblogic java生成wlfullclient.jar
  11. 偏远的时代covid 19如何迎接下一个技术变革
  12. pr电影混剪思路及常用快捷键
  13. 报表工具都支持哪些数据源类型?
  14. 计算机等级考试中电脑死机了,GRE考试电脑死机
  15. Linux机械硬盘初始化,教你如何初始化外接盒中的硬盘
  16. python 基于PHP在线音乐网站
  17. 【freemarker】常用空判断??和has_content的区别
  18. Android 连接wifi 检测是否需要portal 认证
  19. jquery change 事件
  20. 使用python3爬去360图片

热门文章

  1. Rust 编程有什么好?
  2. 熬夜写代码,不如换女装入 GitHub 获上千 Star?
  3. 今天,GitHub 挂了!
  4. 如何避免腾讯云彻底搞丢“天价数据”事件再次发生?
  5. 芯片漏洞攻击出现新变种,涉及英特尔SGX技术支持的应用
  6. 支付宝账单“授权漏洞”惹争议,油腔致歉将用户隐私置何处?
  7. 6岁会编程,14岁就被麻省理工录取,神童谎言是如何诞生的?
  8. 给Java程序员的一些面试建议,大厂面试题汇总
  9. IDEA 打包可执行 jar 包
  10. python request timeout_详解Python requests 超时和重试的方法