码迷,mamicode.com
首页 > 移动开发 > 详细

VB6-AppendToLog 通过API写入日志

时间:2014-07-29 11:48:56      阅读:938      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   os   io   for   cti   

工作中免不了需要为自己的程序添加日志,我也从网上扒拉了一个老外写的模块,修改修改了下,凑合用吧。

 

 1 Option Explicit
 2 **************************************
 3  模块名称: AppendToLog 通过API写入日志
 4 **************************************
 5 API 声明
 6 Private Const GENERIC_WRITE = &H40000000
 7 Private Const FILE_SHARE_READ = &H1
 8 Private Const Create_NEW = 1
 9 Private Const OPEN_EXISTING = 3
10 Private Const FILE_ATTRIBUTE_NORMAL = &H80
11 Private Const FILE_BEGIN = 0
12 Private Const INVALID_HANDLE_VALUE = -1
13 Private 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
14 Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
15 Private 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
16 Private Declare Function FlushFileBuffers Lib "kernel32" (ByVal hFile As Long) As Long
17 Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
18 
19 调用:Call AppendToLog("测试模块名","测试日志内容")
20 **************************************
21  方法名称: AppendToLog
22  输入参数:sMdl 模块名称 sMessage 日志内容
23 **************************************
24 Public Sub AppendToLog(sMdl As String, sMessage As String)
25 
26 On Error GoTo Err:
27 
28     获取计算机名、用户名、本机ip
29     Dim LocalInfo As String
30     Dim strLocalIP As String
31     Dim winIP As Object
32     LocalInfo = LocalInfo & "  Computer:" & Environ("computername")
33     LocalInfo = LocalInfo & "  User:" & Environ("username")
34     Set winIP = CreateObject("MSWinsock.Winsock")
35     strLocalIP = winIP.LocalIP
36     LocalInfo = LocalInfo & "  IP:" & strLocalIP
37 
38     Dim lpFileName As String
39     lpFileName = App.Path + "\Log"
40     If Dir(lpFileName, vbDirectory) = "" Then
41         MkDir (lpFileName)
42     End If
43     
44     lpFileName = lpFileName + "\" + Format(Now, "yyyymmdd") + ".log"
45     
46     sMessage = "--" + Format(Now, "yyyy-mm-dd hh:mm:ss") + "  模块:" + sMdl + LocalInfo + vbNewLine + sMessage + vbNewLine
47     appends a string to a text file.
48     it‘s up to the coder to add a CR/LF at the end
49     of the string if (s)he so desires.
50     assume failure
51     AppendToLog = False
52     exit if the string cannot be written to disk
53     If Len(sMessage) < 1 Then Exit Sub
54     get the size of the file (if it exists)
55     Dim fLen As Long: fLen = 0
56     If (Len(Dir(lpFileName))) Then: fLen = FileLen(lpFileName)
57     open the log file, create as necessary
58     Dim hLogFile As Long
59     hLogFile = CreateFile(lpFileName, GENERIC_WRITE, FILE_SHARE_READ, ByVal 0&, _
60         IIf(Len(Dir(lpFileName)), OPEN_EXISTING, Create_NEW), _
61         FILE_ATTRIBUTE_NORMAL, 0&)
62     ensure the log file was opened properly
63     If (hLogFile = INVALID_HANDLE_VALUE) Then Exit Sub
64     move file pointer to end of file if file was not created
65     If (fLen <> 0) Then
66         If (SetFilePointer(hLogFile, fLen, ByVal 0&, FILE_BEGIN) = &HFFFFFFFF) Then
67             exit sub if the pointer did not set correctly
68             CloseHandle (hLogFile)
69             Exit Sub
70         End If
71     End If
72     convert the source string to a byte array for use with WriteFile
73     Dim lTemp As Long
74     ReDim TempArray(0 To Len(sMessage) - 1) As Byte
75     TempArray = StrConv(sMessage, vbFromUnicode)
76     lTemp = UBound(TempArray) + 1
77     write the string to the log file
78     If (WriteFile(hLogFile, TempArray(0), lTemp, lTemp, ByVal 0&) <> 0) Then
79         the data was written correctly
80         AppendToLog = True
81     End If
82     flush buffers and close the file
83     FlushFileBuffers (hLogFile)
84     CloseHandle (hLogFile)
85     Exit Sub
86 Err:
87     MsgBox "日志写入出错,原因是" + Err.Description, vbExclamation, "提示信息"
88     
89 End Sub

 

VB6-AppendToLog 通过API写入日志,布布扣,bubuko.com

VB6-AppendToLog 通过API写入日志

标签:des   style   blog   color   os   io   for   cti   

原文地址:http://www.cnblogs.com/yhsc/p/3874332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!