Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
2.4 KiB

Attribute VB_Name = "Logging"
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const WM_VSCROLL = &H115
Private Const SB_LINEDOWN = &H1
Private Const EM_SETSEL = &HB1
Private Const EM_REPLACESEL = &HC2
Private p_strLogFile As String
Private p_strTID As String
Public Enum LOGGING_TYPE_E
LOGGING_TYPE_NORMAL_E = 0
LOGGING_TYPE_ERROR_E = 1
LOGGING_TYPE_WARNING_E = 2
End Enum
Public Sub SetLogFile( _
Optional ByVal i_strLogFile As String = "" _
)
If (Trim$(i_strLogFile) = "") Then
p_strLogFile = Environ$("TEMP") & "\" & App.Title & ".log"
Else
p_strLogFile = i_strLogFile
End If
p_strTID = App.ThreadID
End Sub
Public Sub WriteLog( _
ByVal i_str As String, _
Optional ByVal i_blnPlain As Boolean = False, _
Optional ByVal i_blnUnicode As Boolean = False _
)
If (i_blnPlain) Then
FileWrite p_strLogFile, i_str & vbCrLf, True, i_blnUnicode
Else
FileWrite p_strLogFile, "[" & p_strTID & "] " & Date & " " & Time & " > " & _
i_str & vbCrLf, True, i_blnUnicode
End If
End Sub
Public Function GetLogFileName() As String
GetLogFileName = p_strLogFile
End Function
Public Sub OutputToTextBox( _
ByVal i_txt As TextBox, _
ByVal i_str As String _
)
SendMessage i_txt.hwnd, EM_SETSEL, &H7FFFFFFF, &H7FFFFFFF
DoEvents
SendMessage i_txt.hwnd, EM_REPLACESEL, 0, i_str & vbCrLf
DoEvents
SendMessage i_txt.hwnd, WM_VSCROLL, SB_LINEDOWN, ""
DoEvents
End Sub
' We have i_enumLoggingType so that someone who calls this program from the command line can
' search for errors and warnings in the log file once the program terminates. Otherwise, how
' will they know that it failed?
Public Sub OutputToTextBoxAndWriteLog( _
ByVal i_txt As TextBox, _
ByVal i_str As String, _
ByVal i_enumLoggingType As LOGGING_TYPE_E _
)
Dim str As String
Select Case (i_enumLoggingType)
Case LOGGING_TYPE_NORMAL_E
str = i_str
Case LOGGING_TYPE_ERROR_E
str = "Error: " & i_str
Case LOGGING_TYPE_WARNING_E
str = "Warning: " & i_str
End Select
OutputToTextBox i_txt, str
WriteLog str, True, True
End Sub