公用模块.bas
上传用户:luoweizhao
上传日期:2022-08-01
资源大小:1290k
文件大小:29k
源码类别:

外挂编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "公用模块"
  2. Declare Function SetProcessWorkingSetSize Lib "KERNEL32" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
  3. Declare Function GetCurrentProcess Lib "KERNEL32" () As Long
  4. 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
  5. '读写INI文件
  6. Declare Function GetPrivateProfileString Lib "KERNEL32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  7. Declare Function WritePrivateProfileString Lib "KERNEL32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  8. '二进制转UTF8
  9. Declare Function MultiByteToWideChar Lib "KERNEL32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
  10. Declare Function GetTickCount Lib "KERNEL32" () As Long
  11. Declare Function Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long)
  12. '获取句柄之类的API
  13. Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
  14. Declare Function GetDesktopWindow Lib "user32" () As Long
  15. Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  16. Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  17. '获得一个句柄的类名
  18. Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
  19. '运行文件
  20. Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  21. Public Const SW_SHOW = 5   '运行文件
  22. Public Const GW_CHILD = 5
  23. Public Const GW_HWNDNEXT = 2
  24. Public Const WM_ACTIVATE = &H6
  25. Public Const HWND_TOPMOST = -1
  26. Public conn As ADODB.Connection
  27. Public httpi As Integer
  28. Public sendhttpi As Integer
  29. '======================================================base64加密======================================================
  30. Public Const base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  31. '========================= 设置WebBrowser代理 =========================
  32. Private Type INTERNET_PROXY_INFO
  33.     dwAccessType    As Long
  34.     lpszProxy       As String
  35.     lpszProxyBypass As String
  36. End Type
  37. Private Const INTERNET_OPTION_PROXY = 38
  38. Private Const INTERNET_OPTION_SETTINGS_CHANGED = 39
  39. Private Const INTERNET_OPEN_TYPE_DIRECT = 1
  40. Private Const INTERNET_OPEN_TYPE_PROXY = 3
  41. Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" (ByVal hInternet As Long, ByVal dwOption As Long, ByRef lpBuffer As Any, ByVal dwBufferLength As Long) As Long
  42. '========================= 设置WebBrowser代理 =========================
  43. '设置声音播放API  ==============
  44. Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
  45. Public Const SND_FILENAME = &H20000
  46. Public Const SND_ASYNC = &H1
  47. Public Const SND_SYNC = &H0
  48. '===============================
  49. Private Function Mult(ByVal X As Long, ByVal p As Long, ByVal m As Long) As Long
  50.     y = 1
  51.     On Error GoTo error1
  52.     Do While p > 0
  53.         Do While (p / 2) = (p  2)
  54.             X = (X * X) Mod m
  55.             p = p / 2
  56.         Loop
  57.         y = (X * y) Mod m
  58.         p = p - 1
  59.     Loop
  60.     Mult = y
  61.     Exit Function
  62. error1:
  63.     y = 0
  64. End Function
  65. Public Function Base64_Encode(DecryptedText As String) As String
  66.     On Error Resume Next
  67.     Dim c1, c2, c3 As Integer
  68.     Dim w1 As Integer
  69.     Dim w2 As Integer
  70.     Dim w3 As Integer
  71.     Dim w4 As Integer
  72.     Dim n As Integer
  73.     Dim retry As String
  74.     For n = 1 To Len(DecryptedText) Step 3
  75.         c1 = Asc(Mid$(DecryptedText, n, 1))
  76.         c2 = Asc(Mid$(DecryptedText, n + 1, 1) + Chr$(0))
  77.         c3 = Asc(Mid$(DecryptedText, n + 2, 1) + Chr$(0))
  78.         w1 = Int(c1 / 4)
  79.         w2 = (c1 And 3) * 16 + Int(c2 / 16)
  80.         If Len(DecryptedText) >= n + 1 Then w3 = (c2 And 15) * 4 + Int(c3 / 64) Else w3 = -1
  81.         If Len(DecryptedText) >= n + 2 Then w4 = c3 And 63 Else w4 = -1
  82.         retry = retry + mimeencode(w1) + mimeencode(w2) + mimeencode(w3) + mimeencode(w4)
  83.     Next
  84.     Base64_Encode = retry
  85. End Function
  86. Public Function Base64_Decode(a As String) As String
  87.     On Error Resume Next
  88.     Dim w1 As Integer
  89.     Dim w2 As Integer
  90.     Dim w3 As Integer
  91.     Dim w4 As Integer
  92.     Dim n As Integer
  93.     Dim retry As String
  94.     For n = 1 To Len(a) Step 4
  95.         w1 = mimedecode(Mid$(a, n, 1))
  96.         w2 = mimedecode(Mid$(a, n + 1, 1))
  97.         w3 = mimedecode(Mid$(a, n + 2, 1))
  98.         w4 = mimedecode(Mid$(a, n + 3, 1))
  99.         If w2 >= 0 Then retry = retry + Chr$(((w1 * 4 + Int(w2 / 16)) And 255))
  100.         If w3 >= 0 Then retry = retry + Chr$(((w2 * 16 + Int(w3 / 4)) And 255))
  101.         If w4 >= 0 Then retry = retry + Chr$(((w3 * 64 + w4) And 255))
  102.     Next
  103.     Base64_Decode = retry
  104. End Function
  105. Public Function mimeencode(w As Integer) As String
  106.     If w >= 0 Then mimeencode = Mid$(base64, w + 1, 1) Else mimeencode = ""
  107. End Function
  108. Public Function mimedecode(a As String) As Integer
  109.     If Len(a) = 0 Then mimedecode = -1: Exit Function
  110.     mimedecode = InStr(base64, a) - 1
  111. End Function
  112. Public Function Encode(ByVal Inp As String, ByVal e As Long, ByVal n As Long) As String
  113.     On Error Resume Next
  114.     Dim s As String
  115.     s = ""
  116.     m = Inp
  117.     If m = "" Then Exit Function
  118.     s = Mult(CLng(Asc(Mid(m, 1, 1))), e, n)
  119.     For i = 2 To Len(m)
  120.         s = s & "+" & Mult(CLng(Asc(Mid(m, i, 1))), e, n)
  121.     Next i
  122.     Encode = Base64_Encode(s)
  123. End Function
  124. Public Function Decode(ByVal Inp As String, ByVal d As Long, ByVal n As Long) As String
  125.     On Error Resume Next
  126.     St = ""
  127.     ind = Base64_Decode(Inp)
  128.     For i = 1 To Len(ind)
  129.         nxt = InStr(i, ind, "+")
  130.         If Not nxt = 0 Then
  131.             tok = Val(Mid(ind, i, nxt))
  132.         Else
  133.             tok = Val(Mid(ind, i))
  134.         End If
  135.         St = St + Chr(Mult(CLng(tok), d, n))
  136.         If Not nxt = 0 Then
  137.             i = nxt
  138.         Else
  139.             i = Len(ind)
  140.         End If
  141.     Next i
  142.     Decode = St
  143. End Function
  144. '从字符串到base64字符串
  145. Public Function StrtoBase64(ByVal str As String) As String
  146.     On Error Resume Next
  147.     Dim s1 As String
  148.     Dim m1 As Integer
  149.     s1 = Base64_Encode(str)
  150.     m1 = Len(s1) Mod 4
  151.     If m1 = 3 Then
  152.         s1 = s1 & "="
  153.     ElseIf m1 = 2 Then
  154.         s1 = s1 & "=="
  155.     ElseIf m1 = 1 Then
  156.         s1 = s1 & "==="
  157.     End If
  158.     StrtoBase64 = s1
  159. End Function
  160. '======================================================base64加密======================================================
  161. '==================================================
  162. '===============窗口固顶===========================
  163. Public Sub FormTop(ByVal FormhWnd As Long, Optional ByVal OnOff As Boolean = True)
  164.     '窗口固定
  165.     Dim TopMost As Long, SWP_NOSIZE As Long, SWP_NOMOVE As Long
  166.     SWP_NOSIZE& = &H1 ' 保持窗口大小
  167.     SWP_NOMOVE& = &H2 ' 保持窗口位置
  168.     If OnOff Then
  169.         TopMost = -1
  170.     Else
  171.         TopMost = -2
  172.     End If
  173.     SetWindowPos FormhWnd, TopMost, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
  174. End Sub
  175. '===============窗口固顶===========================
  176. '==================================================
  177. '======================================================================
  178. '========================= 设置WebBrowser代理 =========================
  179. Public Function SetProxy(aStrIP As String, aStrPort As String, aBolUseProxy As Boolean)
  180.     Dim strProxy As String
  181.     Dim inf As INTERNET_PROXY_INFO
  182.     
  183.     aStrIP = Trim(aStrIP)
  184.     aStrPort = Trim(aStrPort)
  185.     If (aStrIP + aStrPort = "") Or Not aBolUseProxy Then
  186.       strProxy = ""
  187.     Else
  188.       strProxy = "http=" + aStrIP + ":" + aStrPort
  189.     End If
  190.     
  191.     If Trim(strProxy) <> "" Then
  192.       inf.dwAccessType = INTERNET_OPEN_TYPE_PROXY
  193.       inf.lpszProxy = strProxy
  194.       inf.lpszProxyBypass = ""
  195.       Call InternetSetOption(0, INTERNET_OPTION_PROXY, inf, Len(inf))
  196.       Call InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, "", 0)
  197.     Else
  198.       inf.dwAccessType = INTERNET_OPEN_TYPE_DIRECT
  199.       inf.lpszProxy = ""
  200.       inf.lpszProxyBypass = ""
  201.     
  202.       Call InternetSetOption(0, INTERNET_OPTION_PROXY, inf, Len(inf))
  203.       Call InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, "", 0)
  204.     End If
  205. End Function
  206. '========================= 设置WebBrowser代理 =========================
  207. '======================================================================
  208. Function decipher(stext As String)      '加密程序
  209.     Const min_asc = 32
  210.     Const max_asc = 126
  211.     Const num_asc = max_asc - min_asc + 1
  212.     Dim offset As Long
  213.     Dim strlen As Integer
  214.     Dim i As Integer
  215.     Dim ch As Integer
  216.     Dim tem As String
  217.     Randomize Timer
  218.     tem = stext
  219.     If Mid(stext, 1, 5) <> "UU*23" Then
  220.         offset = 513
  221.         Rnd (-1)
  222.         Randomize (offset)
  223.         strlen = Len(stext)
  224.         For i = 1 To strlen
  225.             ch = Asc(Mid(stext, i, 1))
  226.             If ch >= min_asc And ch <= max_asc Then
  227.                 ch = ch - min_asc
  228.                 offset = Int((num_asc + 1) * Rnd())
  229.                 ch = ((ch - offset) Mod num_asc)
  230.                 If ch < 0 Then
  231.                     ch = ch + num_asc
  232.                 End If
  233.                 ch = ch + min_asc
  234.                 ptext = ptext & Chr(ch)
  235.             End If
  236.         Next i
  237.         decipher = "UU*23" & ptext
  238.     Else
  239.         decipher = tem
  240.     End If
  241. End Function
  242. Function cipher(stext As String)    '解密程序
  243.     Const min_asc = 32
  244.     Const max_asc = 126
  245.     Const num_asc = max_asc - min_asc + 1
  246.     Dim offset As Long
  247.     Dim strlen As Integer
  248.     Dim i As Integer
  249.     Dim ch As Integer
  250.     Dim tem As String
  251.     Randomize Timer
  252.     tem = stext
  253.     If Mid(stext, 1, 5) = "UU*23" Then
  254.         stext = Mid(stext, 6, Len(stext) - 5)
  255.         offset = 513
  256.         Rnd (-1)
  257.         Randomize (offset)
  258.         strlen = Len(stext)
  259.         For i = 1 To strlen
  260.             ch = Asc(Mid(stext, i, 1))
  261.             If ch >= min_asc And ch <= max_asc Then
  262.                 ch = ch - min_asc
  263.                 offset = Int((num_asc + 1) * Rnd())
  264.                 ch = ((ch + offset) Mod num_asc)
  265.                 ch = ch + min_asc
  266.                 ptext = ptext & Chr(ch)
  267.             End If
  268.         Next i
  269.         cipher = ptext
  270.     Else
  271.         cipher = tem
  272.     End If
  273. End Function
  274. Function cipher1(stext As String)    '解密程序
  275.     Const min_asc = 32
  276.     Const max_asc = 126
  277.     Const num_asc = max_asc - min_asc + 1
  278.     Dim offset As Long
  279.     Dim strlen As Integer
  280.     Dim i As Integer
  281.     Dim ch As Integer
  282.     Dim tem As String
  283.     Randomize Timer
  284.     tem = stext
  285.     If Mid(stext, 1, 6) = "count:" Then
  286.         stext = Mid(stext, 7, Len(stext) - 6)
  287.         offset = 8681
  288.         Rnd (-1)
  289.         Randomize (offset)
  290.         strlen = Len(stext)
  291.         For i = 1 To strlen
  292.             ch = Asc(Mid(stext, i, 1))
  293.             If ch >= min_asc And ch <= max_asc Then
  294.                 ch = ch - min_asc
  295.                 offset = Int((num_asc + 1) * Rnd())
  296.                 ch = ((ch + offset) Mod num_asc)
  297.                 ch = ch + min_asc
  298.                 ptext = ptext & Chr(ch)
  299.             End If
  300.         Next i
  301.         cipher1 = ptext
  302.     Else
  303.         cipher1 = tem
  304.     End If
  305. End Function
  306. Public Function UTF8_Decode(bUTF8() As Byte) As String  '二进制解析为UTF8
  307.     Dim lRet     As Long
  308.     Dim lLen     As Long
  309.     Dim lBufferSize     As Long
  310.     Dim sBuffer     As String
  311.     Dim bBuffer()     As Byte
  312.     lLen = UBound(bUTF8) + 1
  313.     If lLen = 0 Then Exit Function
  314.     lBufferSize = lLen * 2
  315.     sBuffer = String$(lBufferSize, Chr(0))
  316.     lRet = MultiByteToWideChar(65001, 0, VarPtr(bUTF8(0)), lLen, StrPtr(sBuffer), lBufferSize)
  317.     If lRet <> 0 Then
  318.         sBuffer = Mid(sBuffer, 1, lRet)
  319.     End If
  320.     UTF8_Decode = sBuffer
  321. End Function
  322. Public Function SaveFileFromRes(vntResourceID As Variant, sType As String, sFileName As String) As Boolean  '释放资源文件
  323.     On Error Resume Next
  324.     Dim bytImage() As Byte
  325.     Dim iFileNum As Integer
  326.     On Error GoTo SaveFileFromRes_Err
  327.     SaveFileFromRes = True
  328.     bytImage = LoadResData(vntResourceID, sType)
  329.     iFileNum = FreeFile
  330.     Open sFileName For Binary As iFileNum
  331.     Put #iFileNum, , bytImage
  332.     Close iFileNum
  333.     Exit Function
  334. SaveFileFromRes_Err:
  335.     SaveFileFromRes = False: Exit Function
  336. End Function
  337. Public Function vbEscape(psString)  'Escape加密
  338.     On Error Resume Next
  339.     Dim nTemp, sTemp, sTempChar, nTempAsc
  340.     For nTemp = 1 To Len(psString)
  341.         sTempChar = Mid(psString, nTemp, 1)
  342.         nTempAsc = AscW(sTempChar)
  343.         If (nTempAsc >= 48 And nTempAsc <= 57) Or (nTempAsc >= 65 And nTempAsc <= 90) Or (nTempAsc >= 97 And nTempAsc <= 122) Or InStr("@*_+-./", sTempChar) > 0 Then
  344.             sTemp = sTemp & sTempChar
  345.         ElseIf nTempAsc > 0 And nTempAsc < 16 Then
  346.             sTemp = sTemp & "%0" & Hex(nTempAsc)
  347.         ElseIf nTempAsc >= 16 And nTempAsc < 256 Then
  348.             sTemp = sTemp & "%" & Hex(nTempAsc)
  349.         Else
  350.             sTemp = sTemp & "u" & Hex(nTempAsc)
  351.         End If
  352.     Next
  353.     vbEscape = sTemp
  354. End Function
  355. Function vbUnEscape(psString)   'Escape解密
  356.     On Error Resume Next
  357.     Dim nTemp, sTemp, sTempChar
  358.     sTemp = ""
  359.     For nTemp = 1 To Len(psString)
  360.         sTempChar = Mid(psString, nTemp, 1)
  361.         If Mid(psString, nTemp, 2) = "u" And nTemp <= Len(psString) - 5 Then
  362.             If IsNumeric("&H" & Mid(psString, nTemp + 2, 4)) Then
  363.                 sTemp = sTemp & ChrW(CInt("&H" & Mid(psString, nTemp + 2, 4)))
  364.                 nTemp = nTemp + 5
  365.             Else
  366.                 sTemp = sTemp & sTempChar
  367.             End If
  368.         ElseIf sTempChar = "%" And nTemp <= Len(psString) - 2 Then
  369.             If IsNumeric("&H" & Mid(psString, nTemp + 1, 2)) Then
  370.                 sTemp = sTemp & ChrW(CInt("&H" & Mid(psString, nTemp + 1, 2)))
  371.                 nTemp = nTemp + 2
  372.             Else
  373.                 sTemp = sTemp & c
  374.             End If
  375.         Else
  376.             sTemp = sTemp & sTempChar
  377.         End If
  378.     Next
  379.     vbUnEscape = sTemp
  380. End Function
  381. Public Function dengji(sum As Long) As Integer  '计算等级
  382.     For i = 0 To 100
  383.         If (i * (i + 1)) * 100 > sum Then
  384.             Exit For
  385.         End If
  386.     Next i
  387.     dengji = i - 1
  388. End Function
  389. Public Function split_m(lx As String, temp As String, K As String) '农场信息分割
  390.     On Error Resume Next
  391.     Dim tem1 As String
  392.     If InStr(temp, K) > 0 Then
  393.         If lx = 1 Then
  394.             tem1 = Split(temp, """" & K & """:")(1)
  395.             split_m = Replace(Split(tem1, ",")(0), """", "")
  396.         ElseIf lx = 2 Then
  397.             tem1 = Split(temp, """" & K & """:")(1)
  398.             split_m = Replace(Split(tem1, "}")(0), """", "")
  399.         ElseIf lx = 3 Then
  400.             tem1 = Split(temp, """" & K & """:""")(1)
  401.             split_m = Split(tem1, """")(0)
  402.         ElseIf lx = 4 Then
  403.             tem1 = Split(temp, K & "=")(1)
  404.             split_m = Split(tem1, ";")(0)
  405.         End If
  406.     Else
  407.         split_m = ""
  408.     End If
  409. End Function
  410. Public Function time_m(T As Long) As String '计算时差   zhonglei(rs.Fields("Kind"), 1) - (time_m - rs.Fields("time"))
  411.     On Error Resume Next
  412.     Dim temp As Long, tem1 As String, tem2 As String, tem3 As String
  413.     temp = T - (DateDiff("s", DateSerial(1970, 1, 1), Now()) - shicha)
  414.     If temp >= 0 Then
  415.         tem1 = temp  3600
  416.         tem2 = (temp Mod 3600)  60
  417.         tem3 = (temp Mod 3600) Mod 60
  418.         time_m = "剩余:" & Format(tem1, "00") & ":" & Format(tem2, "00") & ":" & Format(tem3, "00")
  419.     Else
  420.         time_m = "已收割"
  421.     End If
  422. End Function
  423. Public Function time_mature(T As Long) As String '显示成熟列表
  424.     On Error Resume Next
  425.     Dim temp As Long, tem1 As String, tem2 As String, tem3 As String
  426.     temp = T - (DateDiff("s", DateSerial(1970, 1, 1), Now()) - shicha)
  427.     If temp >= 0 Then
  428.         tem1 = temp  3600
  429.         tem2 = (temp Mod 3600)  60
  430.         tem3 = (temp Mod 3600) Mod 60
  431.         time_mature = Format(tem1, "00") & ":" & Format(tem2, "00") & ":" & Format(tem3, "00")
  432.     Else
  433.         time_mature = "已经成熟"
  434.     End If
  435. End Function
  436. Public Function FromUnixTime(intTime, intTimeZone)
  437.     On Error Resume Next
  438.     If IsEmpty(intTime) Or Not IsNumeric(intTime) Then
  439.          FromUnixTime = Now()
  440.         Exit Function
  441.     End If
  442.     If IsEmpty(intTime) Or Not IsNumeric(intTimeZone) Then intTimeZone = 0
  443.      FromUnixTime = DateAdd("s", intTime, "1970-1-1 0:0:0")
  444.      FromUnixTime = DateAdd("h", intTimeZone, FromUnixTime)
  445. End Function
  446. Public Function Time_C() As Long '获得当前时间
  447.     On Error Resume Next
  448.     Time_C = DateDiff("s", DateSerial(1970, 1, 1), Now())
  449. End Function
  450. Public Function Time_Cx() As Long '计算时差
  451.     On Error Resume Next
  452.     Time_Cx = DateDiff("s", DateSerial(1970, 1, 1), Now()) - shicha
  453. End Function
  454. Public Function Wi()  'Winsock控件数组
  455.     httpi = httpi + 1
  456.     If httpi > 30 Then
  457.         httpi = 0
  458.     End If
  459.     Wi = httpi
  460. End Function
  461. Public Function SHi()  'Winsock控件数组
  462.     sendhttpi = sendhttpi + 1
  463.     If sendhttpi > 30 Then
  464.         sendhttpi = 0
  465.     End If
  466.     SHi = sendhttpi
  467. End Function
  468. Public Function jilu(leixing As String, qq As Long, neirong As String) '记录日志
  469.     On Error Resume Next
  470.     If Val(qq) <> 100 Then
  471.         MkDir App.Path & "伴侣日志"
  472.         MkDir App.Path & "伴侣日志" & Year(Now) & "-" & Month(Now) & ""
  473.         If Val(qq) > 10000 Then
  474.             MkDir App.Path & "伴侣日志" & Year(Now) & "-" & Month(Now) & "" & qq
  475.         End If
  476.         If leixing = "删除日志" And neirong = "del" Then
  477.             Kill App.Path & "伴侣日志" & Year(Now) & "-" & Month(Now) & "" & qq & "" & Year(Now) & "-" & Month(Now) & "-" & Day(Now) & ".txt"
  478.             MsgBox "当天日志文件删除成功!", 64, "提示"
  479.             Exit Function
  480.         End If
  481.         If leixing = "打开日志" And neirong = "open1" Then
  482.             If Dir(App.Path & "伴侣日志" & Year(Now) & "-" & Month(Now) & "" & qq & "" & Year(Now) & "-" & Month(Now) & "-" & Day(Now) & ".txt") = "" Then
  483.                 MsgBox "当天的日志文件不存在,可能已被删除,请进入日志目录查询!", 48, "提醒"
  484.             Else
  485.                 ShellExecute Form1.hwnd, "open", Year(Now) & "-" & Month(Now) & "-" & Day(Now) & ".txt", 0, App.Path & "伴侣日志" & Year(Now) & "-" & Month(Now) & "" & qq & "", SW_SHOW
  486.             End If
  487.             Exit Function
  488.         End If
  489.         If leixing = "打开日志" And neirong = "open2" Then
  490.             ShellExecute Form1.hwnd, "open", "", 0, App.Path & "伴侣日志", SW_SHOW
  491.             Exit Function
  492.         End If
  493.         If Val(qq) > 10000 Then
  494.             Open App.Path & "伴侣日志" & Year(Now) & "-" & Month(Now) & "" & qq & "" & Year(Now) & "-" & Month(Now) & "-" & Day(Now) & ".txt" For Append As #1 '打开写入文件
  495.             Print #1, "[" & Format(Hour(time), "00") & ":" & Format(Minute(time), "00") & ":" & Format(Second(time), "00") & "][" & leixing & "]:" & neirong & ""         '写入文件
  496.             Close #1                         '关闭文件
  497.         End If
  498.     End If
  499.     If Form1.List4.ListCount > 1000 Then
  500.         Form1.List4.Clear
  501.     End If
  502.     Form1.List4.AddItem "[" & Format(Hour(time), "00") & ":" & Format(Minute(time), "00") & ":" & Format(Second(time), "00") & "][" & leixing & "]:" & neirong, 0
  503. End Function
  504. Public Function FZDD(loginQQ As Long) As Boolean
  505.     On Error Resume Next
  506.     Dim lngDeskTopHandle As Long
  507.     Dim lngHand As Long
  508.     Dim strName As String * 255
  509.     Dim lngWindowCount As Long
  510.     Dim duodeng As Boolean
  511.     lngDeskTopHandle = GetDesktopWindow()
  512.     lngHand = GetWindow(lngDeskTopHandle, GW_CHILD)
  513.     lngWindowCount = 1
  514.     Do While lngHand <> 0
  515.         strName = ""
  516.         GetWindowText lngHand, strName, Len(strName)
  517.         If InStr(strName, "Mainload|" & loginQQ & "|") > 0 Then
  518.             duodeng = True
  519.             Exit Do
  520.         End If
  521.         lngHand = GetWindow(lngHand, GW_HWNDNEXT)
  522.         lngWindowCount = lngWindowCount + 1
  523.         DoEvents
  524.     Loop
  525.     If duodeng = True Then
  526.         MsgBox "您的QQ:" & loginQQ & "已登录,为了防止被封号,同一个QQ请勿重复登录!  ", 64, "温馨提醒"
  527.         FZDD = True
  528.     Else
  529.         FZDD = False
  530.     End If
  531. End Function
  532. Function UTF8EncodeURI(szInput)  '转换为UTF8编码的URL字符
  533.     On Error Resume Next
  534.     Dim wch, uch, szRet
  535.     Dim X
  536.     Dim nAsc, nAsc2, nAsc3
  537.     If szInput = "" Then
  538.         UTF8EncodeURI = szInput
  539.         Exit Function
  540.     End If
  541.     For X = 1 To Len(szInput)
  542.         wch = Mid(szInput, X, 1)
  543.         If wch = "╲" Then
  544.             szRet = szRet & "%E2%95%B2"
  545.         Else
  546.             If wch = "ˊ" Then
  547.                 szRet = szRet & "%CB%8A"
  548.             Else
  549.                 If wch = "伱" Then
  550.                     szRet = szRet & "%E4%BC%B1"
  551.                 Else
  552.                     If wch = "丫" Then
  553.                         szRet = szRet & "%E4%B8%AB"
  554.                     Else
  555.                         If wch = "╱" Then
  556.                             szRet = szRet & "%E2%95%B1"
  557.                         Else
  558.                             If wch = "╰" Then
  559.                                 szRet = szRet & "%E2%95%B0"
  560.                             Else
  561.                                 If wch = "˙" Then
  562.                                     szRet = szRet & "%CB%99"
  563.                                 Else
  564.                                     If wch = " " Then
  565.                                         szRet = szRet & "+"
  566.                                     Else
  567.                                         If wch = "=" Then
  568.                                             szRet = szRet & "%3D"
  569.                                         Else
  570.                                             If wch = "`" Then
  571.                                                 szRet = szRet & "%60"
  572.                                             Else
  573.                                                 If wch = "(" Then
  574.                                                     szRet = szRet & "%28"
  575.                                                 Else
  576.                                                     If wch = ")" Then
  577.                                                         szRet = szRet & "%29"
  578.                                                     Else
  579.                                                         If wch = """" Then
  580.                                                             szRet = szRet & "%22"
  581.                                                         Else
  582.                                                             If wch = "'" Then
  583.                                                                 szRet = szRet & "%27"
  584.                                                             Else
  585.                                                                 If wch = "%" Then
  586.                                                                     szRet = szRet & "%25"
  587.                                                                 Else
  588.                                                                     '-------------------------------
  589.                                                                     If wch = "$" Then
  590.                                                                         szRet = szRet & "%24"
  591.                                                                     Else
  592.                                                                         If wch = "!" Then
  593.                                                                             szRet = szRet & "%21"
  594.                                                                         Else
  595.                                                                             If wch = "#" Then
  596.                                                                                 szRet = szRet & "%23"
  597.                                                                             Else
  598.                                                                                 If wch = "&" Then
  599.                                                                                     szRet = szRet & "%26"
  600.                                                                                 Else
  601.                                                                                     If wch = "." Or wch = "@" Or wch = "*" Then
  602.                                                                                         szRet = szRet & wch
  603.                                                                                     Else
  604.                                                                                         nAsc = AscW(wch)
  605.                                                                                         If nAsc < 0 Then nAsc = nAsc + 65536
  606.                                                                                         If (nAsc And &HFF80) = 0 Then
  607.                                                                                             szRet = szRet & wch
  608.                                                                                         Else
  609.                                                                                             If (nAsc And &HF000) = 0 Then
  610.                                                                                                 uch = "%" & Hex(((nAsc  2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
  611.                                                                                                 szRet = szRet & uch
  612.                                                                                             Else
  613.                                                                                                 uch = "%" & Hex((nAsc  2 ^ 12) Or &HE0) & "%" & _
  614.                                                                                                 Hex((nAsc  2 ^ 6) And &H3F Or &H80) & "%" & _
  615.                                                                                                 Hex(nAsc And &H3F Or &H80)
  616.                                                                                                 szRet = szRet & uch
  617.                                                                                             End If
  618.                                                                                         End If
  619.                                                                                     End If
  620.                                                                                 End If
  621.                                                                             End If
  622.                                                                         End If
  623.                                                                     End If
  624.                                                                 End If
  625.                                                             End If
  626.                                                         End If
  627.                                                     End If
  628.                                                 End If
  629.                                             End If
  630.                                         End If
  631.                                     End If
  632.                                 End If
  633.                             End If
  634.                         End If
  635.                     End If
  636.                 End If
  637.             End If
  638.         End If
  639.     Next
  640.     UTF8EncodeURI = szRet
  641. End Function
  642. Function Farmkey_cx() As String  '获取农场密钥
  643.     Farmkey_cx = LCase(md5(Time_Cx & Mid(Fkey, (Time_Cx Mod 10) + 1, 20)))
  644. End Function
  645. Function addsxlb(uID As Long, rzl As Integer)  '加入刷新列表
  646.     Dim tem1 As String
  647.     Dim tem2 As String
  648.     tem2 = uID
  649.     If InStr(sxlb, "/" & tem2 & "//") > 0 Then  '刷新农场
  650.        tem1 = Mid(sxlb, 1, InStr(sxlb, "/" & tem2 & "//") + Len(tem2) + 2)
  651.        sxlb = tem1 & Time_C & Mid(sxlb, Len(tem1) + 11, Len(sxlb) - Len(tem1) - 9)
  652.     Else
  653.        sxlb = sxlb & "/" & tem2 & "//" & Time_C & "\" & rzl & "||,"
  654.     End If
  655.     
  656.     Debug.Print "等待刷新:" & sxlb
  657. End Function
  658. Function shichaini(sc As Long)  '保存时差
  659.     On Error Resume Next
  660.     If Abs(inisc - sc) > 1 Then
  661.         Debug.Print "更新时差:" & sc
  662.         Dim temp As String
  663.         Debug.Print "保存时差1:" & inisc & " " & sc
  664.         temp = sc
  665.         inisc = sc
  666.         WritePrivateProfileString "Config", "shicha", temp, App.Path & "Config.ini"
  667.     End If
  668. End Function