6 changed files with 452 additions and 32 deletions
			
			
		| @ -1,2 +1,4 @@ | |||||
| Form_main = 52, 52, 810, 479, , 26, 26, 784, 453, C | Form_main = 52, 52, 810, 479, , 26, 26, 784, 453, C | ||||
| Module = 134, 45, 892, 472,  | Module_hrd = 134, 45, 892, 472,  | ||||
|  | Module_main = 0, 0, 755, 427,  | ||||
|  | Module_update = 130, 130, 885, 557, Z | ||||
|  | |||||
| @ -0,0 +1,87 @@ | |||||
|  | Attribute VB_Name = "Module_main" | ||||
|  | Option Explicit | ||||
|  | Type Case_size ' 记录棋盘的大小 | ||||
|  |   start_x As Integer | ||||
|  |   start_y As Integer | ||||
|  |   square_width As Integer | ||||
|  |   gap As Integer | ||||
|  | End Type | ||||
|  | Type Case_style ' 记录显示的颜色与边框粗细 | ||||
|  |   block_line_width As Integer | ||||
|  |   case_line_width As Integer | ||||
|  |   block_line_color As OLE_COLOR | ||||
|  |   case_line_color As OLE_COLOR | ||||
|  |   block_color As OLE_COLOR | ||||
|  |   case_color As OLE_COLOR | ||||
|  | End Type | ||||
|  | Public version As String | ||||
|  | Public white_style As Case_style | ||||
|  | Public blue_style As Case_style | ||||
|  | Public yellow_style As Case_style | ||||
|  | Public green_style As Case_style | ||||
|  | Public pink_style As Case_style | ||||
|  | Public style As Case_style ' 通用显示样式 | ||||
|  | Public on_top As Boolean, is_tip As Boolean, style_color As String | ||||
|  | Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long | ||||
|  | Private Sub init_style() ' 预置配色 | ||||
|  |   'skin_white | ||||
|  |   white_style.block_line_width = 1 | ||||
|  |   white_style.case_line_width = 2 | ||||
|  |   white_style.block_line_color = RGB(0, 0, 0) | ||||
|  |   white_style.case_line_color = RGB(0, 0, 0) | ||||
|  |   white_style.block_color = RGB(250, 250, 250) | ||||
|  |   white_style.case_color = RGB(256, 256, 256) | ||||
|  |   'skin_blue | ||||
|  |   blue_style.block_line_width = 1 | ||||
|  |   blue_style.case_line_width = 2 | ||||
|  |   blue_style.block_line_color = RGB(0, 158, 240) | ||||
|  |   blue_style.case_line_color = RGB(0, 158, 240) | ||||
|  |   blue_style.block_color = RGB(225, 245, 255) | ||||
|  |   blue_style.case_color = RGB(248, 254, 255) | ||||
|  |   'skin_yellow | ||||
|  |   yellow_style.block_line_width = 1 | ||||
|  |   yellow_style.case_line_width = 2 | ||||
|  |   yellow_style.block_line_color = RGB(153, 0, 0) | ||||
|  |   yellow_style.case_line_color = RGB(149, 149, 149) | ||||
|  |   yellow_style.block_color = RGB(255, 215, 0) | ||||
|  |   yellow_style.case_color = RGB(231, 231, 231) | ||||
|  |   'skin_green | ||||
|  |   green_style.block_line_width = 1 | ||||
|  |   green_style.case_line_width = 2 | ||||
|  |   green_style.block_line_color = RGB(61, 184, 78) | ||||
|  |   green_style.case_line_color = RGB(46, 118, 72) | ||||
|  |   green_style.block_color = RGB(61, 184, 78) | ||||
|  |   green_style.case_color = RGB(233, 247, 212) | ||||
|  |   'skin_pink | ||||
|  |   pink_style.block_line_width = 1 | ||||
|  |   pink_style.case_line_width = 2 | ||||
|  |   pink_style.block_line_color = RGB(220, 20, 60) | ||||
|  |   pink_style.case_line_color = RGB(255, 20, 147) | ||||
|  |   pink_style.block_color = RGB(255, 192, 203) | ||||
|  |   pink_style.case_color = RGB(255, 240, 245) | ||||
|  | End Sub | ||||
|  | Public Sub Get_settings() ' 从注册表获取上一次的设置 | ||||
|  |   On Error GoTo first_time ' 出错表明注册表键值不存在 | ||||
|  |   Dim ws | ||||
|  |   Set ws = CreateObject("Wscript.Shell") | ||||
|  |   If ws.RegRead("HKEY_CURRENT_USER\Software\HRD_Visual\on_top") = "False" Then on_top = False Else on_top = True | ||||
|  |   If ws.RegRead("HKEY_CURRENT_USER\Software\HRD_Visual\is_tip") = "False" Then is_tip = False Else is_tip = True | ||||
|  |   style_color = ws.RegRead("HKEY_CURRENT_USER\Software\HRD_Visual\skin") | ||||
|  |   Exit Sub | ||||
|  | first_time: ' 第一次设置 | ||||
|  |   on_top = True | ||||
|  |   is_tip = True | ||||
|  |   style_color = "blue" | ||||
|  | End Sub | ||||
|  | Public Sub Save_settings() ' 保存设置到注册表 | ||||
|  |   Dim ws | ||||
|  |   Set ws = CreateObject("Wscript.Shell") | ||||
|  |   ws.RegWrite "HKEY_CURRENT_USER\Software\HRD_Visual\on_top", Trim(on_top), "REG_SZ" | ||||
|  |   ws.RegWrite "HKEY_CURRENT_USER\Software\HRD_Visual\is_tip", Trim(is_tip), "REG_SZ" | ||||
|  |   ws.RegWrite "HKEY_CURRENT_USER\Software\HRD_Visual\skin", style_color, "REG_SZ" | ||||
|  | End Sub | ||||
|  | Sub Main() ' 程序入口 | ||||
|  |   version = "v1.2" | ||||
|  |   Call init_style | ||||
|  |   Form_main.Show | ||||
|  | End Sub | ||||
| @ -0,0 +1,86 @@ | |||||
|  | Attribute VB_Name = "Module_update" | ||||
|  | Option Explicit | ||||
|  | Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long | ||||
|  | Dim update_version As String | ||||
|  | Dim update_file_name As String | ||||
|  | Dim update_url As String | ||||
|  | Dim update_detail As String | ||||
|  | Dim my_file_name As String | ||||
|  | Private Sub Get_update_information() ' 从服务器返回数据中提取更新信息 | ||||
|  |   Dim str As String | ||||
|  |   update_detail = "" | ||||
|  |   Open "update.txt" For Input As #1 | ||||
|  |     Line Input #1, str ' version | ||||
|  |     Line Input #1, str | ||||
|  |     update_version = str | ||||
|  |     Line Input #1, str ' file_name | ||||
|  |     Line Input #1, str | ||||
|  |     update_file_name = str | ||||
|  |     Line Input #1, str ' url | ||||
|  |     Line Input #1, str | ||||
|  |     update_url = str | ||||
|  |     Line Input #1, str ' detail | ||||
|  |     Do While Not EOF(1) | ||||
|  |       Line Input #1, str | ||||
|  |       If Left(str, 1) = "[" Then GoTo out | ||||
|  |       update_detail = update_detail & str & vbCrLf | ||||
|  |     Loop | ||||
|  | out: | ||||
|  |   Close #1 | ||||
|  | End Sub | ||||
|  | Private Sub Create_update_shell() ' 创建用于更新的vbs脚本 | ||||
|  |   my_file_name = App.EXEName & ".exe" | ||||
|  |   Open "update.vbs" For Output As #1 | ||||
|  |     Print #1, "Set ws = CreateObject(""Wscript.Shell"")" | ||||
|  |     Print #1, "Set fso = CreateObject(""Scripting.FileSystemObject"")" | ||||
|  |     Print #1, "ws.Run ""taskkill /f /im " & my_file_name & """, 0" | ||||
|  |     Print #1, "Wscript.sleep 2000" | ||||
|  |     Print #1, "fso.GetFile(""" & my_file_name & """).Attributes = 0" | ||||
|  |     Print #1, "fso.DeleteFile (""" & my_file_name & """)" | ||||
|  |     Print #1, "fso.MoveFile """ & update_file_name & """, """ & my_file_name & """" | ||||
|  |     Print #1, "msgbox ""更新完成"",, ""提示" & """" | ||||
|  |     Print #1, "Wscript.sleep 2000" | ||||
|  |     Print #1, "ws.Run """ & my_file_name & """, 9" | ||||
|  |     Print #1, "fso.DeleteFile(""update.vbs"")" | ||||
|  |     Print #1, "fso.DeleteFile (""" & my_file_name & "-bak" & """)" | ||||
|  |   Close #1 | ||||
|  |   SetAttr "update.vbs", vbHidden | ||||
|  | End Sub | ||||
|  | Public Sub Delete_file(file_name As String) ' 删除文件 自动规避错误 | ||||
|  |   If Check_file(file_name) = True Then | ||||
|  |     SetAttr file_name, 0 | ||||
|  |     Kill file_name | ||||
|  |   End If | ||||
|  | End Sub | ||||
|  | Public Function Download_file(url As String, file_name As String) As Boolean ' 下载文件 成功返回true 错误返回false | ||||
|  |   If URLDownloadToFile(0, url, file_name, 0, 0) = 0 Then | ||||
|  |     Download_file = True | ||||
|  |   Else | ||||
|  |     Download_file = False | ||||
|  |   End If | ||||
|  | End Function | ||||
|  | Public Function Check_file(file_name As String) As Boolean ' 判断文件是否存在 | ||||
|  |   If Dir(file_name, vbNormal Or vbHidden Or vbReadOnly Or vbSystem) <> "" Then ' 如果文件存在 | ||||
|  |     Check_file = True | ||||
|  |   Else | ||||
|  |     Check_file = False | ||||
|  |   End If | ||||
|  | End Function | ||||
|  | Public Sub Check_update() ' 检查更新 | ||||
|  |   Call Delete_file("update.txt") | ||||
|  |   Call Delete_file("update.vbs") | ||||
|  |   If Not Download_file("https://hrd.dnomd343.top/update/HRD_Visual", "update.txt") Then MsgBox "连接服务器失败", , "检查更新": Exit Sub | ||||
|  |   If Check_file("update.txt") = False Then MsgBox "更新失败", , "检查更新": Exit Sub | ||||
|  |   Call Get_update_information | ||||
|  |   Call Delete_file("update.txt") | ||||
|  |   If update_version = version Then MsgBox "当前已是最新版本", , "检查更新": Exit Sub | ||||
|  |   If MsgBox("检查到新版本:" & update_version & vbCrLf & vbCrLf & "更新特性" & vbCrLf & update_detail & vbCrLf & "是否更新?", vbYesNo, "检查更新") = vbNo Then Exit Sub | ||||
|  |   If Not Download_file(update_url, update_file_name) Then MsgBox "下载更新文件失败", , "检查更新": Exit Sub | ||||
|  |   If Check_file(update_file_name) = False Then MsgBox "下载发生错误", , "检查更新": Exit Sub | ||||
|  |   Call Create_update_shell | ||||
|  |   If Check_file("update.vbs") = False Then MsgBox "发生未知错误", , "检查更新": Exit Sub | ||||
|  |   Call Delete_file(App.EXEName & ".exe-bak") | ||||
|  |   FileCopy App.EXEName & ".exe", App.EXEName & ".exe-bak" | ||||
|  |   SetAttr App.EXEName & ".exe-bak", vbHidden | ||||
|  |   Shell "cmd.exe /c ""update.vbs""", vbHide | ||||
|  | End Sub | ||||
					Loading…
					
					
				
		Reference in new issue