Option Explicit On Imports System.IO Imports System.Net Public Class Login ReadOnly screenWidth = Screen.PrimaryScreen.Bounds.Width ReadOnly screenHeight = Screen.PrimaryScreen.Bounds.Height ' TODO: 插入程式碼,利用提供的使用者名稱和密碼執行自訂驗證 ' (請參閱 http://go.microsoft.com/fwlink/?LinkId=35339)。 ' 如此便可將自訂主體附加到目前執行緒的主體,如下所示: ' My.User.CurrentPrincipal = CustomPrincipal ' 其中 CustomPrincipal 是用來執行驗證的 IPrincipal 實作。 ' 接著,My.User 便會傳回封裝在 CustomPrincipal 物件中的識別資訊, ' 例如使用者名稱、顯示名稱等。 ReadOnly ds2 As New DataSet Public Property Credentials As ICredentials Public Property Target1 As String Private Property MYSQL1 As String Dim MACKK As String 'MAC碼 Dim diskId As String '數字ID Dim diskSerialNumber As String '硬碟序列 Dim diskModel As String '磁盘型態 Dim FFGG As Integer : Dim GGHH As Integer Dim HostName As String Dim IPAdress As IPAddress Dim MYIP As String Private Sub Set_清單1() FDT_dgv.DataSource = Nothing : ds2.Clear() FDT_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing FDT_dgv.ColumnHeadersHeight = 25 FDT_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 資料夾名稱, 指定 FROM FTP資料夾管理" CmdSet_For_DGV() : da.Fill(ds2) : FDT_dgv.DataSource = ds2.Tables(0) : conn.Close() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick '-----------------------刪除自動更新項目----------------------------------------------------------------------------------------------------------------------------------------------- Dim Str As String = Application.StartupPath If File.Exists(Str + "\SYS-UPDATE.exe") Then : File.Delete(Str + "\SYS-UPDATE.exe") : End If Timer1.Enabled = False End Sub Private Sub Login_Load(sender As Object, e As EventArgs) Handles MyBase.Load '-----------------------控件基本設定----------------------------------------------------------------------------------------------------------------------------------------------- CheckBox1.Enabled = False : CheckBox3.Checked = True : CheckBox3.Enabled = False : CheckBox1.Enabled = False TextBox4.Text = "1" Label1.Text = "執行檔版本號 : " & 版本 網段.ShowDialog() If 登入判斷 = True And 內外網 = False Then ComboBox1.Text = "工巧明內網" OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True ElseIf 登入判斷 = False And 內外網 = False Then ComboBox1.Text = "工巧明內網" OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True ElseIf 登入判斷 = True And 內外網 = True Then ComboBox1.Text = "工巧明外網" OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True End If '-----------------------取得本機IP----------------------------------------------------------------------------------------------------------------------------------------------- HostName = Dns.GetHostName '获得本机的机器名 IPAdress = Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP MYIP = IPAdress.ToString '-----------------------IP比對---------------------------------------------------------------------------------------------------------------------------------------------------- If Strings.Left(MYIP, 10) = "192.168.12" Or Strings.Left(MYIP, 7) = "10.0.0." Then ComboBox1.Text = "工巧明內網" OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True Else ComboBox1.Text = "工巧明外網" OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True End If Timer1.Enabled = True End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged '-----------------------確認登入伺服器位置----------------------------------------------------------------------------------------------------------------------------------------- If ComboBox1.Text = "工巧明內網" Then HostName = Dns.GetHostName '获得本机的机器名 IPAdress = Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP MYIP = IPAdress.ToString If Strings.Left(MYIP, 10) = "192.168.12" Or Strings.Left(MYIP, 7) = "10.0.0." Then 登入人IP = "192.168.12.127" 登入() OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True End If ElseIf ComboBox1.Text = "工巧明外網" Then HostName = Dns.GetHostName '获得本机的机器名 IPAdress = Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP MYIP = IPAdress.ToString If Strings.Left(MYIP, 10) <> "192.168.12" Or Strings.Left(MYIP, 7) <> "10.0.0." Then 登入人IP = "180.177.181.162,5264" 登入() OK.Enabled = True : Cancel.Enabled = True : CheckBox1.Checked = True End If End If UsernameTextBox.Focus() End Sub Private Sub 登入() '-----------------------寫入連線字串----------------------------------------------------------------------------------------------------------------------------------------------- SQL_連線字串_ERP() : SQL_連線字串_考勤() g_conn_type = ComboBox1.Text & "伺服器" '-----------------------系統版本號寫入----------------------------------------------------------------------------------------------------------------------------------------------- ConnOpen() SQL1 = "SELECT 系統認證版本號 FROM 版本號管理 " CmdSet_For_dr() If dr.Read() Then Label2.Text = "資料庫版本號 : " & dr("系統認證版本號") : 版本號 = dr("系統認證版本號") End If : conn.Close() '-----------------------FTP資料夾登入位置宣告-------------------------------------------------------------------------------------------------------------------------------------- ConnOpen() SQL1 = "SELECT FTP地址, FTP帳號, FTP密碼 FROM FTP資料庫管理 WHERE 地區 LIKE N'" & ComboBox1.Text & "'" CmdSet_For_dr() If dr.Read() Then Target = dr("FTP地址") : FTP帳號 = dr("FTP帳號") : FTP密碼 = dr("FTP密碼") End If : conn.Close() Set_清單1() For i As Integer = 0 To FDT_dgv.Rows.Count - 1 If FDT_dgv(1, i).Value.ToString = "AA00" Then : AA(0) = FDT_dgv(0, i).Value.ToString : End If If FDT_dgv(1, i).Value.ToString = "AA01" Then : AA(1) = FDT_dgv(0, i).Value.ToString : End If If FDT_dgv(1, i).Value.ToString = "AA02" Then : AA(2) = FDT_dgv(0, i).Value.ToString : End If If FDT_dgv(1, i).Value.ToString = "AA03" Then : AA(3) = FDT_dgv(0, i).Value.ToString : End If If FDT_dgv(1, i).Value.ToString = "AA04" Then : AA(4) = FDT_dgv(0, i).Value.ToString : End If Next If Strings.Right(Label1.Text, 10) <> Strings.Right(Label2.Text, 10) Then 自動更新2() Else Me.Size = New Size(466, 279) If screenWidth = 1920 And screenHeight = 1080 Then : Me.Location = New Point(727, 401) ElseIf screenWidth = 1366 And screenHeight = 768 Then : Me.Location = New Point(450, 245) ElseIf screenWidth = 1440 And screenHeight = 900 Then : Me.Location = New Point(487, 311) ElseIf screenWidth = 1280 And screenHeight = 1024 Then : Me.Location = New Point(407, 373) ElseIf screenWidth = 1600 And screenHeight = 900 Then : Me.Location = New Point(567, 311) End If End If End Sub Private Sub 自動更新1() Dim aa1 As MsgBoxResult aa1 = MsgBox("系統版本號 與 資料庫版本號 對應不上,請開發人員注意是否有其他人員修改。並決定是否下載最新的執行檔?", MsgBoxStyle.OkCancel) If aa1 = MsgBoxResult.Ok Then Dim Str As String = Application.StartupPath My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "SYS-UPDATE.exe", Str + "\SYS-UPDATE.exe") Shell(Str + "\SYS-UPDATE.exe", vbNormalFocus) Me.Close() Else 登入第二層() End If End Sub Private Sub 自動更新2() Dim aa1 As MsgBoxResult aa1 = MsgBox("系統版本號 與 資料庫版本號 對應不上,請下載最新的執行檔。", MsgBoxStyle.OkCancel) If aa1 = MsgBoxResult.Ok Then Dim Str As String = Application.StartupPath My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "SYS-UPDATE.exe", Str + "\SYS-UPDATE.exe") Shell(Str + "\SYS-UPDATE.exe", vbNormalFocus) Me.Close() End If End Sub Private Sub 登入第一層() If UsernameTextBox.Text = "" Then MsgBox("請輸入帳號! 如使用刷登入,請確定該卡片有合法註冊!") ElseIf UsernameTextBox.Text <> "" Then If UsernameTextBox.Text = "" Then MsgBox("請輸入帳號!") ElseIf UsernameTextBox.Text <> "" Then If TextBox4.Text = "1" Then '-----------考勤權限取得----------------------------------------------------------------------------------------------------------------- ConnOpen() MYSQL1 = "SELECT ID卡號 FROM 使用者權限管理表 WHERE (帳號 = '" & UsernameTextBox.Text & "')" cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader If dr.Read() Then ID卡號_tb.Text = dr("ID卡號") : conn.Close() ConnOpen_AM() SQL1 = "SELECT DIN" & 登入權限 & " FROM 使用者權限管理表 WHERE (ID卡號 LIKE '" & ID卡號_tb.Text & "')" CmdSet_For_dr() If dr.Read() Then For I As Integer = 1 To 權限數量 BB(I) = dr.Item(I) Next End If End If : conn.Close() '-----------主系統權限取得----------------------------------------------------------------------------------------------------------------- ConnOpen() MYSQL1 = "SELECT " & 登入權限AQL & " FROM 使用者權限管理表 WHERE (帳號 = '" & UsernameTextBox.Text & "')" cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader If dr.Read() Then TextBox1.Text = dr("密碼").ToString : gUserName = dr("姓名").ToString : TextBox2.Text = dr("密碼日期").ToString For I As Integer = 0 To 32 CC(I) = dr.Item(I + 4) Next FFGG = DateDiff("d", TextBox2.Text, Format(Today(), "yyyy/MM/dd")) conn.Close() ConnOpen() MYSQL1 = "SELECT 人員編號 FROM 人員資料 WHERE (姓名 = '" & gUserName & "')" cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader If dr.Read() Then 員工編號 = dr("人員編號").ToString : conn.Close() End If If CC(24) = True Then GGHH = 密碼時限 - FFGG If GGHH <= 0 Then MsgBox("密碼過期!") 個人帳號管理.ShowDialog() Else If Strings.Right(Label1.Text, 10) <> Strings.Right(Label2.Text, 10) Then If CC(26) = True Then 自動更新1() Else 自動更新2() End If Else 登入第二層() End If End If Else If Strings.Right(Label1.Text, 10) <> Strings.Right(Label2.Text, 10) Then If CC(26) = True Then 自動更新1() Else 自動更新2() End If Else 登入第二層() End If End If End If dr.Close() End If End If End If conn.Close() End Sub Private Sub 登入第二層() If PasswordTextBox.Text = TextBox1.Text Then If TextBox1.Text = "" Then MsgBox("帳號或密碼錯誤,請重新輸入!") Else Me.Hide() GCM_ERP_SYS.Show() : PasswordTextBox.Text = "" : UsernameTextBox.Text = "" End If ElseIf PasswordTextBox.Text <> TextBox1.Text Then MsgBox("帳號或密碼錯誤,請重新輸入!") End If End Sub Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click If ComboBox1.Text = "" Then MsgBox("請正確選擇正確資料庫!") Else '-----MAC碼---------------------------------------------------------------------------------------------- Dim Wmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration") For Each WmiObj As Management.ManagementObject In Wmi.Get If CBool(WmiObj("IPEnabled")) Then MACKK = WmiObj("MACAddress") End If Next '-----硬碟資料---------------------------------------------------------------------------------------------- Dim cmicWmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") For Each cmicWmiObj As Management.ManagementObject In cmicWmi.Get diskId = cmicWmiObj("signature") diskSerialNumber = cmicWmiObj("serialnumber") diskModel = cmicWmiObj("Model") Exit For Next If UsernameTextBox.Text = "b70340" Or UsernameTextBox.Text = "B70340" Then 登入第一層() : 判斷重登 = False ElseIf CheckBox3.Checked = True Then conn.Close() ConnOpen() SQL1 = "SELECT MAC碼 FROM 系統綁定電腦資訊 WHERE 硬碟ID LIKE N'" & diskId & "' AND 硬碟序列 LIKE N'" & diskSerialNumber & "' AND 磁盘型態 LIKE N'" & diskModel & "'" CmdSet_For_dr() If dr.Read() Then conn.Close() 登入第一層() Else conn.Close() MsgBox("該電腦沒有註冊,無法使用系統。") End If ElseIf CheckBox3.Checked = False Then 登入第一層() End If End If End Sub Private Sub Cancel_Click(sender As Object, e As EventArgs) Handles Cancel.Click Me.Close() End Sub Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles 更新下載_ch.CheckedChanged If 更新下載_ch.Checked = False Then Me.Size = New Size(466, 279) If screenWidth = 1920 And screenHeight = 1080 Then : Me.Location = New Point(727, 401) ElseIf screenWidth = 1366 And screenHeight = 768 Then : Me.Location = New Point(450, 245) ElseIf screenWidth = 1440 And screenHeight = 900 Then : Me.Location = New Point(487, 311) ElseIf screenWidth = 1280 And screenHeight = 1024 Then : Me.Location = New Point(407, 373) ElseIf screenWidth = 1600 And screenHeight = 900 Then : Me.Location = New Point(567, 311) End If Else Me.Size = New Size(705, 279) If screenWidth = 1920 And screenHeight = 1080 Then : Me.Location = New Point(608, 401) ElseIf screenWidth = 1366 And screenHeight = 768 Then : Me.Location = New Point(331, 245) ElseIf screenWidth = 1440 And screenHeight = 900 Then : Me.Location = New Point(368, 311) ElseIf screenWidth = 1280 And screenHeight = 1024 Then : Me.Location = New Point(288, 373) ElseIf screenWidth = 1600 And screenHeight = 900 Then : Me.Location = New Point(448, 311) End If End If End Sub Private Sub UsernameTextBox_TextChanged(sender As Object, e As EventArgs) Handles UsernameTextBox.TextChanged If CheckBox1.Checked = False Then Else If IsNumeric(UsernameTextBox.Text) = True Then If UsernameTextBox.Text.Length = 10 Then ID卡號_tb.Text = UsernameTextBox.Text ConnOpen() MYSQL1 = "SELECT 帳號, 密碼 FROM 使用者權限管理表 WHERE (ID卡號 = '" & UsernameTextBox.Text & "')" cmd.Connection = conn : cmd.CommandText = MYSQL1 : dr = cmd.ExecuteReader If dr.Read() Then UsernameTextBox.Text = dr("帳號").ToString PasswordTextBox.Text = dr("密碼").ToString conn.Close() Else UsernameTextBox.Text = "" : PasswordTextBox.Text = "" : conn.Close() End If Exit Sub : Me.OK.PerformClick() End If End If End If End Sub Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.Click UsernameTextBox.Focus() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim Str As String = Application.StartupPath My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "SYS-UPDATE.exe", Str + "\SYS-UPDATE.exe") Shell(Str + "\SYS-UPDATE.exe", vbNormalFocus) Me.Close() End Sub End Class