frmabout.vb
来自「OPCserver OPCserver.rar」· VB 代码 · 共 374 行 · 第 1/2 页
VB
374 行
Me.lblVersion.Size = New System.Drawing.Size(259, 15)
Me.lblVersion.Location = New System.Drawing.Point(70, 52)
Me.lblVersion.TabIndex = 6
Me.lblVersion.TextAlign = System.Drawing.ContentAlignment.TopLeft
Me.lblVersion.BackColor = System.Drawing.SystemColors.Control
Me.lblVersion.Enabled = True
Me.lblVersion.ForeColor = System.Drawing.SystemColors.ControlText
Me.lblVersion.Cursor = System.Windows.Forms.Cursors.Default
Me.lblVersion.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.lblVersion.UseMnemonic = True
Me.lblVersion.Visible = True
Me.lblVersion.AutoSize = False
Me.lblVersion.BorderStyle = System.Windows.Forms.BorderStyle.None
Me.lblVersion.Name = "lblVersion"
Me.lblDisclaimer.Text = "没作点限制,演示程序一次使用时为 1小时"
Me.lblDisclaimer.ForeColor = System.Drawing.Color.Black
Me.lblDisclaimer.Size = New System.Drawing.Size(258, 55)
Me.lblDisclaimer.Location = New System.Drawing.Point(17, 175)
Me.lblDisclaimer.TabIndex = 4
Me.lblDisclaimer.TextAlign = System.Drawing.ContentAlignment.TopLeft
Me.lblDisclaimer.BackColor = System.Drawing.SystemColors.Control
Me.lblDisclaimer.Enabled = True
Me.lblDisclaimer.Cursor = System.Windows.Forms.Cursors.Default
Me.lblDisclaimer.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.lblDisclaimer.UseMnemonic = True
Me.lblDisclaimer.Visible = True
Me.lblDisclaimer.AutoSize = False
Me.lblDisclaimer.BorderStyle = System.Windows.Forms.BorderStyle.None
Me.lblDisclaimer.Name = "lblDisclaimer"
Me.Controls.Add(picIcon)
Me.Controls.Add(cmdOK)
Me.Controls.Add(cmdSysInfo)
Me.Controls.Add(Label1)
Me.Controls.Add(_Line1_1)
Me.Controls.Add(lblDescription)
Me.Controls.Add(lblTitle)
Me.Controls.Add(_Line1_0)
Me.Controls.Add(lblVersion)
Me.Controls.Add(lblDisclaimer)
Me.Line1.SetIndex(_Line1_1, CType(1, Short))
Me.Line1.SetIndex(_Line1_0, CType(0, Short))
CType(Me.Line1, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
#End Region
#Region "升级支持"
Private Shared m_vb6FormDefInstance As frmAbout
Private Shared m_InitializingDefInstance As Boolean
Public Shared Property DefInstance() As frmAbout
Get
If m_vb6FormDefInstance Is Nothing OrElse m_vb6FormDefInstance.IsDisposed Then
m_InitializingDefInstance = True
m_vb6FormDefInstance = New frmAbout()
m_InitializingDefInstance = False
End If
DefInstance = m_vb6FormDefInstance
End Get
Set
m_vb6FormDefInstance = Value
End Set
End Property
#End Region
' Reg Key Security Options...
Const READ_CONTROL As Integer = &H20000
Const KEY_QUERY_VALUE As Short = &H1s
Const KEY_SET_VALUE As Short = &H2s
Const KEY_CREATE_SUB_KEY As Short = &H4s
Const KEY_ENUMERATE_SUB_KEYS As Short = &H8s
Const KEY_NOTIFY As Short = &H10s
Const KEY_CREATE_LINK As Short = &H20s
Const KEY_ALL_ACCESS As Double = KEY_QUERY_VALUE + KEY_SET_VALUE + KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
' Reg Key ROOT Types...
Const HKEY_LOCAL_MACHINE As Integer = &H80000002
Const ERROR_SUCCESS As Short = 0
Const REG_SZ As Short = 1 ' Unicode nul terminated string
Const REG_DWORD As Short = 4 ' 32-bit number
Const gREGKEYSYSINFOLOC As String = "SOFTWARE\Microsoft\Shared Tools Location"
Const gREGVALSYSINFOLOC As String = "MSINFO"
Const gREGKEYSYSINFO As String = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
Const gREGVALSYSINFO As String = "PATH"
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA"(ByVal hKey As Integer, ByVal lpSubKey As String, ByVal ulOptions As Integer, ByVal samDesired As Integer, ByRef phkResult As Integer) As Integer
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA"(ByVal hKey As Integer, ByVal lpValueName As String, ByVal lpReserved As Integer, ByRef lpType As Integer, ByVal lpData As String, ByRef lpcbData As Integer) As Integer
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Integer) As Integer
Private Sub cmdSysInfo_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSysInfo.Click
Call StartSysInfo()
End Sub
Private Sub cmdOK_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdOK.Click
Me.Close()
End Sub
Private Sub frmAbout_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Me.Text = "About " & System.Reflection.Assembly.GetExecutingAssembly.GetName.Name
'UPGRADE_ISSUE: App 属性 App.Revision 未升级。 单击以获得更多信息:“ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup2069"”
'lblVersion.Text = "Version " & System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly.Location).FileMajorPart & "." & System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly.Location).FileMinorPart & "." & App.Revision
lblTitle.Text = System.Reflection.Assembly.GetExecutingAssembly.GetName.Name
End Sub
Public Sub StartSysInfo()
On Error GoTo SysInfoErr
Dim rc As Integer
Dim SysInfoPath As String
' Try To Get System Info Program Path\Name From Registry...
If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
' Try To Get System Info Program Path Only From Registry...
ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
' Validate Existance Of Known 32 Bit File Version
'UPGRADE_WARNING: Dir 有新行为。 单击以获得更多信息:“ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1041"”
If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
' Error - File Can Not Be Found...
Else
GoTo SysInfoErr
End If
' Error - Registry Entry Can Not Be Found...
Else
GoTo SysInfoErr
End If
Call Shell(SysInfoPath, AppWinStyle.NormalFocus)
Exit Sub
SysInfoErr:
MsgBox("System Information Is Unavailable At This Time", MsgBoxStyle.OKOnly)
End Sub
Public Function GetKeyValue(ByRef KeyRoot As Integer, ByRef KeyName As String, ByRef SubKeyRef As String, ByRef KeyVal As String) As Boolean
Dim i As Integer ' Loop Counter
Dim rc As Integer ' Return Code
Dim hKey As Integer ' Handle To An Open Registry Key
Dim hDepth As Integer '
Dim KeyValType As Integer ' Data Type Of A Registry Key
Dim tmpVal As String ' Tempory Storage For A Registry Key Value
Dim KeyValSize As Integer ' Size Of Registry Key Variable
'------------------------------------------------------------
' Open RegKey Under KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Open Registry Key
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Handle Error...
tmpVal = New String(Chr(0), 1024) ' Allocate Variable Space
KeyValSize = 1024 ' Mark Variable Size
'------------------------------------------------------------
' Retrieve Registry Key Value...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, KeyValType, tmpVal, KeyValSize) ' Get/Create Key Value
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Handle Errors
If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then ' Win95 Adds Null Terminated String...
tmpVal = VB.Left(tmpVal, KeyValSize - 1) ' Null Found, Extract From String
Else ' WinNT Does NOT Null Terminate String...
tmpVal = VB.Left(tmpVal, KeyValSize) ' Null Not Found, Extract String Only
End If
'------------------------------------------------------------
' Determine Key Value Type For Conversion...
'------------------------------------------------------------
Select Case KeyValType ' Search Data Types...
Case REG_SZ ' String Registry Key Data Type
KeyVal = tmpVal ' Copy String Value
Case REG_DWORD ' Double Word Registry Key Data Type
For i = Len(tmpVal) To 1 Step -1 ' Convert Each Bit
KeyVal = KeyVal & Hex(Asc(Mid(tmpVal, i, 1))) ' Build Value Char. By Char.
Next
KeyVal = VB6.Format("&h" & KeyVal) ' Convert Double Word To String
End Select
GetKeyValue = True ' Return Success
rc = RegCloseKey(hKey) ' Close Registry Key
Exit Function ' Exit
GetKeyError: ' Cleanup After An Error Has Occured...
KeyVal = "" ' Set Return Val To Empty String
GetKeyValue = False ' Return Failure
rc = RegCloseKey(hKey) ' Close Registry Key
End Function
End Class
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?