123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- Imports System.IO
- Imports System.Runtime.ConstrainedExecution
- Imports System.Security.Cryptography
- Imports System.Text
- Imports System.Threading
-
- Public Class LoginForm1
- ' TODO: 插入程式碼,利用提供的使用者名稱和密碼執行自訂驗證
- ' (請參閱 https://go.microsoft.com/fwlink/?LinkId=35339)。
- ' 如此便可將自訂主體附加到目前執行緒的主體,如下所示:
- ' My.User.CurrentPrincipal = CustomPrincipal
- ' 其中 CustomPrincipal 是用來執行驗證的 IPrincipal 實作。
- ' 接著,My.User 便會傳回封裝在 CustomPrincipal 物件中的識別資訊,
- ' 例如使用者名稱、顯示名稱等。
- Dim IP公, IP測1, IP測2, 印尼測試內網網段, 內網線路, 可登入 As Boolean
- Dim MACKK As String 'MAC碼
- Dim diskId As String '數字ID
- Dim diskSerialNumber As String '硬碟序列
- Dim diskModel As String '磁盘型態
- Private ReadOnly 對話框(15) As String : Dim FFGG As Integer : Dim GGHH As Integer
- Dim Str As String = Application.StartupPath
- Private Sub 語言轉換讀取()
- If 系統語言 = "繁體中文" Then : 語言 = "CH" : ElseIf 系統語言 = "English" Then : 語言 = "EN" : ElseIf 系統語言 = "Indonesian" Then : 語言 = "IN" : End If
- 密碼_lb.Text = 系統語言字典("G000-103-" & 語言) : 執行檔版本號_lb.Text = 系統語言字典("G000-102-" & 語言) & " : " & 版本
- 資料庫版本號_lb.Text = 系統語言字典("G000-104-" & 語言) & " : " & 資料庫版本 : 系統語言_lb.Text = 系統語言字典("G000-100-" & 語言)
- 公司線路_rb.Text = 系統語言字典("H000-100-" & 語言) : 伺服器區域_lb.Text = 系統語言字典("H000-101-" & 語言) : 對話框(5) = 系統語言字典("H000-113-" & 語言)
- 使用者名稱_lb.Text = 系統語言字典("H000-104-" & 語言) : 對話框(1) = 系統語言字典("H000-109-" & 語言) : 對話框(7) = 系統語言字典("H000-115-" & 語言)
- 測試線路_rb.Text = 系統語言字典("H000-105-" & 語言) : 對話框(3) = 系統語言字典("H000-111-" & 語言) : 對話框(9) = 系統語言字典("H000-108-" & 語言)
- 對話框(0) = 系統語言字典("H000-107-" & 語言) : 對話框(2) = 系統語言字典("H000-110-" & 語言) : 對話框(4) = 系統語言字典("H000-112-" & 語言)
- 對話框(6) = 系統語言字典("H000-114-" & 語言) : 對話框(8) = 系統語言字典("H000-116-" & 語言) : 對話框(10) = 系統語言字典("H000-106-" & 語言)
- 對話框(11) = 系統語言字典("H000-117-" & 語言) : 對話框(12) = 系統語言字典("H000-118-" & 語言) : 對話框(13) = 系統語言字典("H000-119-" & 語言)
- 對話框(14) = 系統語言字典("H000-120-" & 語言) : 對話框(15) = 系統語言字典("H000-102-" & 語言)
- End Sub
- Private Sub Set_清單1()
- Dim ds2 As New DataSet
- ftp清單_dgv.DataSource = Nothing : ds2.Clear()
- ftp清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- ftp清單_dgv.ColumnHeadersHeight = 25
- ftp清單_dgv.AllowUserToAddRows = False
- SQL_FTP資料夾路徑分配()
- da.Fill(ds2) : ftp清單_dgv.DataSource = ds2.Tables(0) : conn.Close()
- End Sub
- Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 伺服器區域_cb.SelectedIndexChanged
- '-----------------------確認登入伺服器位置-----------------------------------------------------------------------------------------------------------------------------------------
- If 伺服器區域_cb.Text = "公司內網" Then
- IP公 = True
- If IP公 = True Then : 登入人IP = "192.168.1.63,2433" : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
- ElseIf 伺服器區域_cb.Text = "公司雲端" Then
- IP公 = True
- If IP公 = True Then : 登入人IP = PA49 : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
- ElseIf 伺服器區域_cb.Text = "測試雲端" Then
- IP測1 = True
- If IP測1 = True Then : 登入人IP = "106.1.48.106,4567" : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
- ElseIf 伺服器區域_cb.Text = "印尼測試" Then
- If IP測2 = True Then : 登入人IP = "192.168.1.63,2433"
- If SQL_連線狀態模組2.ConnectTest2("192.168.1.63,2433") = True Then : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If
- Else : MGB(對話框(11), 1) : Me.Close() : End If
- End If
- End Sub
- Private Sub 登入()
- '-----------------------寫入連線字串-----------------------------------------------------------------------------------------------------------------------------------------------
- If Strings.Left(伺服器區域_cb.Text, 2) = "印尼" Or Strings.Left(伺服器區域_cb.Text, 2) = "公司" Then
- SQL_連線字串_正式() : SQL_連線字串_正式_工程SQL() : SQL_連線字串_正式_管理SQL()
- Else
- SQL_連線字串_測試() : SQL_連線字串_測試_工程SQL() : SQL_連線字串_測試_管理SQL()
- End If
- g_conn_type = 伺服器區域_cb.Text & "伺服器"
- '-----------------------系統版本號寫入-----------------------------------------------------------------------------------------------------------------------------------------------
- SQL_系統版本號驗證()
- If dr.Read() Then : 資料庫版本 = dr("內帳系統") : 版本號 = dr("內帳系統") : End If : conn.Close()
-
- 語言轉換讀取()
- 系統語言_cb.Items.Clear() : 系統語言_cb.Items.Add("繁體中文") : 系統語言_cb.Items.Add("Indonesian") : 系統語言_cb.Items.Add("English")
- '-----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("size") 'diskId = cmicWmiObj("signature")
- diskSerialNumber = cmicWmiObj("serialnumber")
- diskModel = cmicWmiObj("Model")
- Exit For
- Next
- End Sub
- Private Sub LoginForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- 語言轉換讀取()
- Panel1.SendToBack() : 伺服器區域_cb.Text = 計算機.伺服器區域_cb.Text : 系統語言_cb.Text = 系統語言
- 低網速模式 = True
- '-----------------------FTP資料夾登入位置宣告--------------------------------------------------------------------------------------------------------------------------------------
- SQL_FTP伺服器登入位置()
- If dr.Read() Then
- Target = dr("FTP地址") : FTP帳號 = dr("FTP帳號") : FTP密碼 = dr("FTP密碼") : FTP物理位置 = dr("FTP物理位置")
- End If : conn.Close()
- Set_清單1()
-
- Dim HH As String = ""
- For i As Integer = 0 To ftp清單_dgv.Rows.Count - 1
- If i < 10 Then : HH = "0" & i : ElseIf i >= 10 Then : HH = i : End If
- If ftp清單_dgv("指定", i).Value.ToString = "AA" & HH Then : AA(i) = ftp清單_dgv("資料夾名稱", i).Value.ToString : End If
- Next
-
- If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then
- 登入() : 自動更新2()
- Else : End If
- End Sub
- Private Sub LoginForm1_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing
- 計算機.Close()
- End Sub
- Private Sub 系統語言_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 系統語言_cb.SelectedIndexChanged
- 系統語言 = 系統語言_cb.Text
- Dim strDirName As String : Dim Strs As String = Application.StartupPath
- If File.Exists(Strs & "\LANGUAGE.txt") Then : File.Delete(Strs & "\LANGUAGE.txt") : End If
- strDirName = Strs & "\LANGUAGE.txt"
- Try
- Using fs As New IO.FileStream(strDirName, FileMode.Append)
- Using sw As New StreamWriter(fs, Encoding.Default)
- Dim stra As String
- If 系統語言 = "繁體中文" Then : stra = "CHER" : ElseIf 系統語言 = "English" Then : stra = "Engl"
- ElseIf 系統語言 = "Indonesian" Then : stra = "Indo" : Else : stra = "CHER" : End If
- sw.WriteLine(stra) '插入一整行
- sw.Flush()
- End Using
- End Using
- Catch ex As Exception : End Try : 語言轉換讀取()
- End Sub
- Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
- If 系統語言_cb.Text = " " Or 系統語言_cb.Text = "" Then : MGB(對話框(9), 1)
- Else
- '-----電腦綁定判斷-------------------------------------------------------------------------------------------------------------------------------------------------------------
- If 登入綁定_ch.Checked = True Then
- PA1 = MACKK : PA2 = diskId : PA3 = diskSerialNumber : PA4 = diskModel
- SQL_電腦綁定()
- If dr.Read() Then
- conn.Close() : 登入第一層()
- Else
- If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then
- conn.Close() : 登入第一層()
- Else
- conn.Close() : MGB(對話框(6), 1) : Me.Close()
- End If
- End If
- Else
- conn.Close() : 登入第一層()
- End If
- End If
- End Sub
- Private Sub 登入第一層()
- If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then
- If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then
- If 伺服器區域_cb.Text = "測試雲端" Then
- 自動更新2()
- 登入程序() : 判斷重登 = False
- Else
- MGB(對話框(1), 1)
- 登入程序() : 判斷重登 = False
- End If
- Else
- 登入程序() : 判斷重登 = False
- End If
- Else
- If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then
- If 伺服器區域_cb.Text = "測試雲端" Then
- 自動更新2()
- Else
- MGB(對話框(1), 1)
- End If
- Else
- 登入程序() : 判斷重登 = False
- End If
- End If
- End Sub
- Private Sub 登入程序()
- If 帳號_rtb.Text = "" Then : MGB(對話框(2), 1) : ElseIf 帳號_rtb.Text <> "" Then
- If 帳號_rtb.Text = "" Then : MGB(對話框(3), 1) : ElseIf 帳號_rtb.Text <> "" Then
- SQL_使用者級別宣告() : If dr.Read() Then : 登入人級別 = dr("級別").ToString : End If
- SQL_系統預設值()
- If dr.Read() Then
- 密碼時限 = dr("密碼重設天數") : 行政採購簽核級別基數 = dr("行政採購二級") : 建築採購簽核級別基數 = dr("建築採購二級")
- 比例1 = dr("比例1") : 比例2 = dr("比例2") : 比例3 = dr("比例3") : 分母 = dr("圖片伺服器上限") : 工程圖庫限制 = dr("圖片伺服器上限")
- End If
- SQL_使用者權限宣告()
- If dr.Read() Then
- 密碼驗證_tb.Text = dr("密碼").ToString : 密碼日期_tb.Text = dr("密碼日期").ToString
- gUserName = dr("姓名").ToString : 登入人部門 = dr("部門").ToString : 登入人課別 = dr("課別").ToString
- 登入人組別 = dr("組別").ToString
- For I As Integer = 1 To 權限數量 : CC(I) = dr.Item(I + 8 - 1) : Next
- FFGG = DateDiff("d", 密碼日期_tb.Text, Format(Today(), "yyyy/MM/dd"))
- If CC(45) = True Then : GGHH = 密碼時限 - FFGG
- If GGHH <= 0 Then
- MGB(對話框(4), 1) : 個人帳號管理.ShowDialog()
- Else : 登入第二層() : End If
- Else : 登入第二層() : End If
- Else : MGB(對話框(15), 1) : End If : dr.Close()
- End If
- End If
- conn.Close()
- End Sub
- Private Sub 登入第二層()
- If 密碼_rtb.Text = 密碼驗證_tb.Text Then
- If 密碼驗證_tb.Text = "" Then : MGB(對話框(5), 1)
- Else
- Me.Hide() : HX_PGS_ERP_SYS.Show() : 密碼_rtb.Text = "" : 帳號_rtb.Text = ""
- End If
- ElseIf 密碼_rtb.Text <> 密碼驗證_tb.Text Then : MGB(對話框(5), 1) : End If
- End Sub
- Private Sub 自動更新2()
- Dim Str As String = Application.StartupPath
- If File.Exists(Str + "\NOTAUTO.txt") Then
- If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then : Else : End If
- Else
- My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "Calculator-SYS-UPDATE.exe", Str + "\Calculator-SYS-UPDATE.exe")
- Shell(Str + "\Calculator-SYS-UPDATE.exe", vbNormalFocus) : Me.Close()
- End If
- End Sub
- Private Sub 公司線路_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 公司線路_rb.Click
- If IP公 = False Then : 公司線路_rb.Checked = False : 測試線路_rb.Checked = True : MGB(對話框(12), 1)
- Else : 伺服器區域_cb.Text = "公司雲端" : 公司線路_rb.Checked = True : 測試線路_rb.Checked = False : MGB(對話框(13), 1) : End If
- End Sub
- Private Sub 測試線路_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 測試線路_rb.Click
- 公司線路_rb.Checked = False : 測試線路_rb.Checked = True
- If IP測1 = True Or IP測2 = True Then : 伺服器區域_cb.Text = "測試雲端" : ElseIf IP測1 = False And IP測2 = False Then : 伺服器區域_cb.Text = "公司雲端" : MGB(對話框(14), 1) : End If
- End Sub
- Private Sub 帳號_rtb_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles 帳號_rtb.GotFocus
- 帳號_rtb.ImeMode = 2
- End Sub
- Private Sub UsernameTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 帳號_rtb.KeyPress
- If e.KeyChar = ChrW(13) Then : Me.OK.PerformClick() : End If
- End Sub
- Private Sub PasswordTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 密碼_rtb.KeyPress
- If e.KeyChar = ChrW(13) Then : Me.OK.PerformClick() : End If
- End Sub
- Private Sub UsernameTextBox_TextChanged(sender As Object, e As EventArgs) Handles 帳號_rtb.TextChanged
- If 刷卡登入_ch.Checked = False Then : Else
- If IsNumeric(帳號_rtb.Text) = True Then
- If 帳號_rtb.Text.Length = 10 Then
- SQL_刷卡登入()
- If dr.Read() Then
- 帳號_rtb.Text = dr("帳號").ToString : 密碼_rtb.Text = dr("密碼").ToString : conn.Close()
- Else
- 帳號_rtb.Text = "" : 密碼_rtb.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 刷卡登入_ch.Click
- 帳號_rtb.Focus()
- End Sub
- Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
- 計算機.Close()
- End Sub
- End Class
|