From c284e505f337a8fb727b1ff171aee9011bc43504 Mon Sep 17 00:00:00 2001 From: Yidaozhan Ya Date: Tue, 15 Feb 2022 21:09:05 +0800 Subject: [PATCH] qwq --- FuckComputer.vbp | 44 +++ FuckComputer.vbw | 5 + FuckComputerIcon.ico | Bin 0 -> 21662 bytes JSON.bas | 663 +++++++++++++++++++++++++++++++++++++++++++ README.md | 35 ++- cJSONScript.cls | 211 ++++++++++++++ cStringBuilder.cls | 244 ++++++++++++++++ frmMain.frm | 153 ++++++++++ frmMain.frx | Bin 0 -> 21674 bytes theShitCodes.bas | 14 + 10 files changed, 1368 insertions(+), 1 deletion(-) create mode 100644 FuckComputer.vbp create mode 100644 FuckComputer.vbw create mode 100644 FuckComputerIcon.ico create mode 100644 JSON.bas create mode 100644 cJSONScript.cls create mode 100644 cStringBuilder.cls create mode 100644 frmMain.frm create mode 100644 frmMain.frx create mode 100644 theShitCodes.bas diff --git a/FuckComputer.vbp b/FuckComputer.vbp new file mode 100644 index 0000000..3bc0fb2 --- /dev/null +++ b/FuckComputer.vbp @@ -0,0 +1,44 @@ +Type=Exe +Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\Windows\SysWOW64\stdole2.tlb#OLE Automation +Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#6.0#0#..\..\..\..\Windows\SysWOW64\msxml6.dll#Microsoft XML, v6.0 +Reference=*\G{00000205-0000-0010-8000-00AA006D2EA4}#2.5#0#..\..\..\..\Program Files (x86)\Common Files\System\ado\msado25.tlb#Microsoft ActiveX Data Objects 2.5 Library +Reference=*\G{7C0FFAB0-CD84-11D0-949A-00A0C91110ED}#1.0#0#..\..\..\..\Windows\SysWOW64\msdatsrc.tlb#Microsoft Data Source Interfaces for ActiveX Data Binding Type Library +Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#..\..\..\..\Windows\SysWOW64\scrrun.dll#Microsoft Scripting Runtime +Form=frmMain.frm +Module=theShitCodes; theShitCodes.bas +Class=cJSONScript; cJSONScript.cls +Class=cStringBuilder; cStringBuilder.cls +Module=JSON; JSON.bas +IconForm="frmMain" +Startup="frmMain" +HelpFile="" +Title="FuckComputer" +ExeName32="FuckComputer.exe" +Command32="" +Name="FuckComputer" +HelpContextID="0" +CompatibleMode="0" +MajorVer=1 +MinorVer=0 +RevisionVer=0 +AutoIncrementVer=0 +ServerSupportFiles=0 +VersionComments="FuckComputer for Windows" +VersionCompanyName="YidaozhanYa" +VersionFileDescription="FuckComputer for Windows" +VersionProductName="FuckComputer for Windows" +CompilationType=0 +OptimizationType=0 +FavorPentiumPro(tm)=0 +CodeViewDebugInfo=0 +NoAliasing=0 +BoundsCheck=0 +OverflowCheck=0 +FlPointCheck=0 +FDIVCheck=0 +UnroundedFP=0 +StartMode=0 +Unattended=0 +Retained=0 +ThreadPerObject=0 +MaxNumberOfThreads=1 diff --git a/FuckComputer.vbw b/FuckComputer.vbw new file mode 100644 index 0000000..f7741f6 --- /dev/null +++ b/FuckComputer.vbw @@ -0,0 +1,5 @@ +frmMain = 223, 99, 1572, 701, , 26, 26, 1375, 624, C +theShitCodes = 596, 191, 1945, 787, +cJSONScript = 0, 0, 0, 0, C +cStringBuilder = 0, 0, 0, 0, C +JSON = 0, 0, 0, 0, C diff --git a/FuckComputerIcon.ico b/FuckComputerIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aed9a6b86a9a93f6269d1adb4ca2b614970e4b37 GIT binary patch literal 21662 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
  • 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 "{" Then + psErrors = psErrors & "Invalid Object at position " & index & " : " & Mid(str, index) & vbCrLf + Exit Function + End If + + index = index + 1 + + Do + Call skipChar(str, index) + If "}" = Mid(str, index, 1) Then + index = index + 1 + Exit Do + ElseIf "," = Mid(str, index, 1) Then + index = index + 1 + Call skipChar(str, index) + ElseIf index > Len(str) Then + psErrors = psErrors & "Missing '}': " & Right(str, 20) & vbCrLf + Exit Do + End If + + + ' add key/value pair + sKey = parseKey(str, index) + On Error Resume Next + + parseObject.Add sKey, parseValue(str, index) + If Err.Number <> 0 Then + psErrors = psErrors & Err.Description & ": " & sKey & vbCrLf + Exit Do + End If + Loop +eh: + +End Function + +' +' parse list +' +Private Function parseArray(ByRef str As String, ByRef index As Long) As Collection + + Set parseArray = New Collection + + ' "[" + Call skipChar(str, index) + If Mid(str, index, 1) <> "[" Then + psErrors = psErrors & "Invalid Array at position " & index & " : " + Mid(str, index, 20) & vbCrLf + Exit Function + End If + + index = index + 1 + + Do + + Call skipChar(str, index) + If "]" = Mid(str, index, 1) Then + index = index + 1 + Exit Do + ElseIf "," = Mid(str, index, 1) Then + index = index + 1 + Call skipChar(str, index) + ElseIf index > Len(str) Then + psErrors = psErrors & "Missing ']': " & Right(str, 20) & vbCrLf + Exit Do + End If + + ' add value + On Error Resume Next + parseArray.Add parseValue(str, index) + If Err.Number <> 0 Then + psErrors = psErrors & Err.Description & ": " & Mid(str, index, 20) & vbCrLf + Exit Do + End If + Loop + +End Function + +' +' parse string / number / object / array / true / false / null +' +Private Function parseValue(ByRef str As String, ByRef index As Long) + + Call skipChar(str, index) + + Select Case Mid(str, index, 1) + Case "{" + Set parseValue = parseObject(str, index) + Case "[" + Set parseValue = parseArray(str, index) + Case """", "'" + parseValue = parseString(str, index) + Case "t", "f" + parseValue = parseBoolean(str, index) + Case "n" + parseValue = parseNull(str, index) + Case Else + parseValue = parseNumber(str, index) + End Select + +End Function + +' +' parse string +' +Private Function parseString(ByRef str As String, ByRef index As Long) As String + + Dim quote As String + Dim Char As String + Dim Code As String + + Dim SB As New cStringBuilder + + Call skipChar(str, index) + quote = Mid(str, index, 1) + index = index + 1 + + Do While index > 0 And index <= Len(str) + Char = Mid(str, index, 1) + Select Case (Char) + Case "\" + index = index + 1 + Char = Mid(str, index, 1) + Select Case (Char) + Case """", "\", "/", "'" + SB.Append Char + index = index + 1 + Case "b" + SB.Append vbBack + index = index + 1 + Case "f" + SB.Append vbFormFeed + index = index + 1 + Case "n" + SB.Append vbLf + index = index + 1 + Case "r" + SB.Append vbCr + index = index + 1 + Case "t" + SB.Append vbTab + index = index + 1 + Case "u" + index = index + 1 + Code = Mid(str, index, 4) + SB.Append ChrW(Val("&h" + Code)) + index = index + 4 + End Select + Case quote + index = index + 1 + + parseString = SB.toString + Set SB = Nothing + + Exit Function + + Case Else + SB.Append Char + index = index + 1 + End Select + Loop + + parseString = SB.toString + Set SB = Nothing + +End Function + +' +' parse number +' +Private Function parseNumber(ByRef str As String, ByRef index As Long) + + Dim Value As String + Dim Char As String + + Call skipChar(str, index) + Do While index > 0 And index <= Len(str) + Char = Mid(str, index, 1) + If InStr("+-0123456789.eE", Char) Then + Value = Value & Char + index = index + 1 + Else + parseNumber = CDec(Value) + Exit Function + End If + Loop +End Function + +' +' parse true / false +' +Private Function parseBoolean(ByRef str As String, ByRef index As Long) As Boolean + + Call skipChar(str, index) + If Mid(str, index, 4) = "true" Then + parseBoolean = True + index = index + 4 + ElseIf Mid(str, index, 5) = "false" Then + parseBoolean = False + index = index + 5 + Else + psErrors = psErrors & "Invalid Boolean at position " & index & " : " & Mid(str, index) & vbCrLf + End If + +End Function + +' +' parse null +' +Private Function parseNull(ByRef str As String, ByRef index As Long) + + Call skipChar(str, index) + If Mid(str, index, 4) = "null" Then + parseNull = Null + index = index + 4 + Else + psErrors = psErrors & "Invalid null value at position " & index & " : " & Mid(str, index) & vbCrLf + End If + +End Function + +Private Function parseKey(ByRef str As String, ByRef index As Long) As String + + Dim dquote As Boolean + Dim squote As Boolean + Dim Char As String + + Call skipChar(str, index) + Do While index > 0 And index <= Len(str) + Char = Mid(str, index, 1) + Select Case (Char) + Case """" + dquote = Not dquote + index = index + 1 + If Not dquote Then + Call skipChar(str, index) + If Mid(str, index, 1) <> ":" Then + psErrors = psErrors & "Invalid Key at position " & index & " : " & parseKey & vbCrLf + Exit Do + End If + End If + Case "'" + squote = Not squote + index = index + 1 + If Not squote Then + Call skipChar(str, index) + If Mid(str, index, 1) <> ":" Then + psErrors = psErrors & "Invalid Key at position " & index & " : " & parseKey & vbCrLf + Exit Do + End If + End If + Case ":" + index = index + 1 + If Not dquote And Not squote Then + Exit Do + Else + parseKey = parseKey & Char + End If + Case Else + If InStr(vbCrLf & vbCr & vbLf & vbTab & " ", Char) Then + Else + parseKey = parseKey & Char + End If + index = index + 1 + End Select + Loop + +End Function + +' +' skip special character +' +Private Sub skipChar(ByRef str As String, ByRef index As Long) + Dim bComment As Boolean + Dim bStartComment As Boolean + Dim bLongComment As Boolean + Do While index > 0 And index <= Len(str) + Select Case Mid(str, index, 1) + Case vbCr, vbLf + If Not bLongComment Then + bStartComment = False + bComment = False + End If + + Case vbTab, " ", "(", ")" + + Case "/" + If Not bLongComment Then + If bStartComment Then + bStartComment = False + bComment = True + Else + bStartComment = True + bComment = False + bLongComment = False + End If + Else + If bStartComment Then + bLongComment = False + bStartComment = False + bComment = False + End If + End If + + Case "*" + If bStartComment Then + bStartComment = False + bComment = True + bLongComment = True + Else + bStartComment = True + End If + + Case Else + If Not bComment Then + Exit Do + End If + End Select + + index = index + 1 + Loop + +End Sub + +Public Function toString(ByRef obj As Variant) As String + Dim SB As New cStringBuilder + Select Case VarType(obj) + Case vbNull + SB.Append "null" + Case vbDate + SB.Append """" & CStr(obj) & """" + Case vbString + SB.Append """" & Encode(obj) & """" + Case vbObject + + Dim bFI As Boolean + Dim i As Long + + bFI = True + If TypeName(obj) = "Dictionary" Then + + SB.Append "{" + Dim keys + keys = obj.keys + For i = 0 To obj.Count - 1 + If bFI Then bFI = False Else SB.Append "," + Dim key + key = keys(i) + SB.Append """" & key & """:" & toString(obj.Item(key)) + Next i + SB.Append "}" + + ElseIf TypeName(obj) = "Collection" Then + + SB.Append "[" + Dim Value + For Each Value In obj + If bFI Then bFI = False Else SB.Append "," + SB.Append toString(Value) + Next Value + SB.Append "]" + + End If + Case vbBoolean + If obj Then SB.Append "true" Else SB.Append "false" + Case vbVariant, vbArray, vbArray + vbVariant + Dim sEB + SB.Append multiArray(obj, 1, "", sEB) + Case Else + SB.Append Replace(obj, ",", ".") + End Select + + toString = SB.toString + Set SB = Nothing + +End Function + +Private Function Encode(str) As String + + Dim SB As New cStringBuilder + Dim i As Long + Dim j As Long + Dim aL1 As Variant + Dim aL2 As Variant + Dim c As String + Dim p As Boolean + + aL1 = Array(&H22, &H5C, &H2F, &H8, &HC, &HA, &HD, &H9) + aL2 = Array(&H22, &H5C, &H2F, &H62, &H66, &H6E, &H72, &H74) + For i = 1 To Len(str) + p = True + c = Mid(str, i, 1) + For j = 0 To 7 + If c = Chr(aL1(j)) Then + SB.Append "\" & Chr(aL2(j)) + p = False + Exit For + End If + Next + + If p Then + Dim a + a = AscW(c) + If a > 31 And a < 127 Then + SB.Append c + ElseIf a > -1 Or a < 65535 Then + SB.Append "\u" & String(4 - Len(Hex(a)), "0") & Hex(a) + End If + End If + Next + + Encode = SB.toString + Set SB = Nothing + +End Function + +Private Function multiArray(aBD, iBC, sPS, ByRef sPT) ' Array BoDy, Integer BaseCount, String PoSition + + Dim iDU As Long + Dim iDL As Long + Dim i As Long + + On Error Resume Next + iDL = LBound(aBD, iBC) + iDU = UBound(aBD, iBC) + + Dim SB As New cStringBuilder + + Dim sPB1, sPB2 ' String PointBuffer1, String PointBuffer2 + If Err.Number = 9 Then + sPB1 = sPT & sPS + For i = 1 To Len(sPB1) + If i <> 1 Then sPB2 = sPB2 & "," + sPB2 = sPB2 & Mid(sPB1, i, 1) + Next + ' multiArray = multiArray & toString(Eval("aBD(" & sPB2 & ")")) + SB.Append toString(aBD(sPB2)) + Else + sPT = sPT & sPS + SB.Append "[" + For i = iDL To iDU + SB.Append multiArray(aBD, iBC + 1, i, sPT) + If i < iDU Then SB.Append "," + Next + SB.Append "]" + sPT = Left(sPT, iBC - 2) + End If + Err.Clear + multiArray = SB.toString + + Set SB = Nothing +End Function + +' Miscellaneous JSON functions + +Public Function StringToJSON(st As String) As String + + Const FIELD_SEP = "~" + Const RECORD_SEP = "|" + + Dim sFlds As String + Dim sRecs As New cStringBuilder + Dim lRecCnt As Long + Dim lFld As Long + Dim fld As Variant + Dim rows As Variant + + lRecCnt = 0 + If st = "" Then + StringToJSON = "null" + Else + rows = Split(st, RECORD_SEP) + For lRecCnt = LBound(rows) To UBound(rows) + sFlds = "" + fld = Split(rows(lRecCnt), FIELD_SEP) + For lFld = LBound(fld) To UBound(fld) Step 2 + sFlds = (sFlds & IIf(sFlds <> "", ",", "") & """" & fld(lFld) & """:""" & toUnicode(fld(lFld + 1) & "") & """") + Next 'fld + sRecs.Append IIf((Trim(sRecs.toString) <> ""), "," & vbCrLf, "") & "{" & sFlds & "}" + Next 'rec + StringToJSON = ("( {""Records"": [" & vbCrLf & sRecs.toString & vbCrLf & "], " & """RecordCount"":""" & lRecCnt & """ } )") + End If +End Function + + +Public Function RStoJSON(rs As ADODB.Recordset) As String + On Error GoTo errHandler + Dim sFlds As String + Dim sRecs As New cStringBuilder + Dim lRecCnt As Long + Dim fld As ADODB.Field + + lRecCnt = 0 + If rs.State = adStateClosed Then + RStoJSON = "null" + Else + If rs.EOF Or rs.BOF Then + RStoJSON = "null" + Else + Do While Not rs.EOF And Not rs.BOF + lRecCnt = lRecCnt + 1 + sFlds = "" + For Each fld In rs.Fields + sFlds = (sFlds & IIf(sFlds <> "", ",", "") & """" & fld.Name & """:""" & toUnicode(fld.Value & "") & """") + Next 'fld + sRecs.Append IIf((Trim(sRecs.toString) <> ""), "," & vbCrLf, "") & "{" & sFlds & "}" + rs.MoveNext + Loop + RStoJSON = ("( {""Records"": [" & vbCrLf & sRecs.toString & vbCrLf & "], " & """RecordCount"":""" & lRecCnt & """ } )") + End If + End If + + Exit Function +errHandler: + +End Function + +'Public Function JsonRpcCall(url As String, methName As String, args(), Optional user As String, Optional pwd As String) As Object +' Dim r As Object +' Dim cli As Object +' Dim pText As String +' Static reqId As Integer +' +' reqId = reqId + 1 +' +' Set r = CreateObject("Scripting.Dictionary") +' r("jsonrpc") = "2.0" +' r("method") = methName +' r("params") = args +' r("id") = reqId +' +' pText = toString(r) +' +' Set cli = CreateObject("MSXML2.XMLHTTP.6.0") +' ' Set cli = New MSXML2.XMLHTTP60 +' If Len(user) > 0 Then ' If Not IsMissing(user) Then +' cli.Open "POST", url, False, user, pwd +' Else +' cli.Open "POST", url, False +' End If +' cli.setRequestHeader "Content-Type", "application/json" +' cli.Send pText +' +' If cli.Status <> 200 Then +' Err.Raise vbObjectError + INVALID_RPC_CALL + cli.Status, , cli.statusText +' End If +' +' Set r = parse(cli.responseText) +' Set cli = Nothing +' +' If r("id") <> reqId Then Err.Raise vbObjectError + INVALID_RPC_CALL, , "Bad Response id" +' +' If r.Exists("error") Or Not r.Exists("result") Then +' Err.Raise vbObjectError + INVALID_RPC_CALL, , "Json-Rpc Response error: " & r("error")("message") +' End If +' +' If Not r.Exists("result") Then Err.Raise vbObjectError + INVALID_RPC_CALL, , "Bad Response, missing result" +' +' Set JsonRpcCall = r("result") +'End Function + + + + +Public Function toUnicode(str As String) As String + + Dim x As Long + Dim uStr As New cStringBuilder + Dim uChrCode As Integer + + For x = 1 To Len(str) + uChrCode = Asc(Mid(str, x, 1)) + Select Case uChrCode + Case 8: ' backspace + uStr.Append "\b" + Case 9: ' tab + uStr.Append "\t" + Case 10: ' line feed + uStr.Append "\n" + Case 12: ' formfeed + uStr.Append "\f" + Case 13: ' carriage return + uStr.Append "\r" + Case 34: ' quote + uStr.Append "\""" + Case 39: ' apostrophe + uStr.Append "\'" + Case 92: ' backslash + uStr.Append "\\" + Case 123, 125: ' "{" and "}" + uStr.Append ("\u" & Right("0000" & Hex(uChrCode), 4)) + Case Is < 32, Is > 127: ' non-ascii characters + uStr.Append ("\u" & Right("0000" & Hex(uChrCode), 4)) + Case Else + uStr.Append Chr$(uChrCode) + End Select + Next + toUnicode = uStr.toString + Exit Function + +End Function + +Private Sub Class_Initialize() + psErrors = "" +End Sub + + diff --git a/README.md b/README.md index f143ac3..b0f0987 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,35 @@ +> *Let everyone enjoy the fun of fucking* +> +> -- Chi\_Tang + +[![State-of-the-art Shitcode](https://img.shields.io/static/v1?label=State-of-the-art&message=Shitcode&color=7B5804) + # FuckComputer-Windows -FuckComputer launcher but ported to Windows +This is a **GREAT** program to fuck your computer! +It mixed other **GREAT** programs by FuckComputer together. +For more information, see [FuckComputer](https://github.com/FuckComputer). + +## Compile from source code +### Dependencies +- Microsoft Visual Basic 6 IDE + +## Run directly +### Dependencies +- Dependencies of other programs by FuckComputer + +Just run + +```shell +FuckComputer.exe +``` + +And it will work! + +> *Windows is a piece of SHIT!* +> -- Chi\_Tang + +## Usage +Follow the instructions in the program. + +## License +GPL-3.0 diff --git a/cJSONScript.cls b/cJSONScript.cls new file mode 100644 index 0000000..40cffea --- /dev/null +++ b/cJSONScript.cls @@ -0,0 +1,211 @@ +VERSION 1.0 CLASS +BEGIN + MultiUse = -1 'True + Persistable = 0 'NotPersistable + DataBindingBehavior = 0 'vbNone + DataSourceBehavior = 0 'vbNone + MTSTransactionMode = 0 'NotAnMTSObject +END +Attribute VB_Name = "cJSONScript" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = True +Attribute VB_PredeclaredId = False +Attribute VB_Exposed = False +Option Explicit + +Dim dictVars As New Dictionary +Dim plNestCount As Long + + +Public Function Eval(sJSON As String) As String + Dim SB As New cStringBuilder + Dim o As Object + Dim c As Object + Dim i As Long + + Set o = JSON.parse(sJSON) + If (JSON.GetParserErrors = "") And Not (o Is Nothing) Then + For i = 1 To o.Count + Select Case VarType(o.Item(i)) + Case vbNull + SB.Append "null" + Case vbDate + SB.Append CStr(o.Item(i)) + Case vbString + SB.Append CStr(o.Item(i)) + Case Else + Set c = o.Item(i) + SB.Append ExecCommand(c) + End Select + Next + Else + MsgBox JSON.GetParserErrors, vbExclamation, "Parser Error" + End If + Eval = SB.toString +End Function + +Public Function ExecCommand(ByRef obj As Variant) As String + Dim SB As New cStringBuilder + + If plNestCount > 40 Then + ExecCommand = "ERROR: Nesting level exceeded." + Else + plNestCount = plNestCount + 1 + + Select Case VarType(obj) + Case vbNull + SB.Append "null" + Case vbDate + SB.Append CStr(obj) + Case vbString + SB.Append CStr(obj) + Case vbObject + + Dim i As Long + Dim j As Long + Dim this As Object + Dim key + Dim paramKeys + + If TypeName(obj) = "Dictionary" Then + Dim sOut As String + Dim sRet As String + + Dim keys + keys = obj.keys + For i = 0 To obj.Count - 1 + sRet = "" + + key = keys(i) + If VarType(obj.Item(key)) = vbString Then + sRet = obj.Item(key) + Else + Set this = obj.Item(key) + End If + + ' command implementation + Select Case LCase(key) + Case "alert": + MsgBox ExecCommand(this.Item("message")), vbInformation, ExecCommand(this.Item("title")) + + Case "input": + SB.Append InputBox(ExecCommand(this.Item("prompt")), ExecCommand(this.Item("title")), ExecCommand(this.Item("default"))) + + Case "switch" + sOut = ExecCommand(this.Item("default")) + sRet = LCase(ExecCommand(this.Item("case"))) + For j = 0 To this.Item("items").Count - 1 + If LCase(this.Item("items").Item(j + 1).Item("case")) = sRet Then + sOut = ExecCommand(this.Item("items").Item(j + 1).Item("return")) + Exit For + End If + Next + SB.Append sOut + + Case "set": + If dictVars.Exists(this.Item("name")) Then + dictVars.Item(this.Item("name")) = ExecCommand(this.Item("value")) + Else + dictVars.Add this.Item("name"), ExecCommand(this.Item("value")) + End If + + Case "get": + sRet = ExecCommand(dictVars(CStr(this.Item("name")))) + If sRet = "" Then + sRet = ExecCommand(this.Item("default")) + End If + + SB.Append sRet + + Case "if" + Dim val1 As String + Dim val2 As String + Dim bRes As Boolean + val1 = ExecCommand(this.Item("value1")) + val2 = ExecCommand(this.Item("value2")) + + bRes = False + Select Case LCase(this.Item("type")) + Case "eq" ' = + If LCase(val1) = LCase(val2) Then + bRes = True + End If + + Case "gt" ' > + If val1 > val2 Then + bRes = True + End If + + Case "lt" ' < + If val1 < val2 Then + bRes = True + End If + + Case "gte" ' >= + If val1 >= val2 Then + bRes = True + End If + + Case "lte" ' <= + If val1 <= val2 Then + bRes = True + End If + + End Select + + If bRes Then + SB.Append ExecCommand(this.Item("true")) + Else + SB.Append ExecCommand(this.Item("false")) + End If + + Case "return" + SB.Append obj.Item(key) + + + Case Else + If TypeName(this) = "Dictionary" Then + paramKeys = this.keys + For j = 0 To this.Count - 1 + If j > 0 Then + sRet = sRet & "," + End If + sRet = sRet & CStr(this.Item(paramKeys(j))) + Next + End If + + + SB.Append "<%" & UCase(key) & "(" & sRet & ")%>" + + End Select + Next i + + ElseIf TypeName(obj) = "Collection" Then + + Dim Value + For Each Value In obj + SB.Append ExecCommand(Value) + Next Value + + End If + Set this = Nothing + + Case vbBoolean + If obj Then SB.Append "true" Else SB.Append "false" + + Case vbVariant, vbArray, vbArray + vbVariant + + Case Else + SB.Append Replace(obj, ",", ".") + End Select + plNestCount = plNestCount - 1 + End If + + ExecCommand = SB.toString + Set SB = Nothing + +End Function + + + + diff --git a/cStringBuilder.cls b/cStringBuilder.cls new file mode 100644 index 0000000..f17a6d1 --- /dev/null +++ b/cStringBuilder.cls @@ -0,0 +1,244 @@ +VERSION 1.0 CLASS +BEGIN + MultiUse = -1 'True + Persistable = 0 'NotPersistable + DataBindingBehavior = 0 'vbNone + DataSourceBehavior = 0 'vbNone + MTSTransactionMode = 0 'NotAnMTSObject +END +Attribute VB_Name = "cStringBuilder" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = True +Attribute VB_PredeclaredId = False +Attribute VB_Exposed = False +Option Explicit + +' ====================================================================================== +' Name: vbAccelerator cStringBuilder +' Author: Steve McMahon (steve@vbaccelerator.com) +' Date: 1 January 2002 +' +' Copyright © 2002 Steve McMahon for vbAccelerator +' -------------------------------------------------------------------------------------- +' Visit vbAccelerator - advanced free source code for VB programmers +' http://vbaccelerator.com +' -------------------------------------------------------------------------------------- +' +' VB can be slow to append strings together because of the continual +' reallocation of string size. This class pre-allocates a string in +' blocks and hence removes the performance restriction. +' +' Quicker insert and remove is also possible since string space does +' not have to be reallocated. +' +' Example: +' Adding "http://vbaccelerator.com/" 10,000 times to a string: +' Standard VB: 34s +' This Class: 0.35s +' +' ====================================================================================== + +Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ + (pDst As Any, pSrc As Any, ByVal ByteLen As Long) + + +Private m_sString As String +Private m_iChunkSize As Long +Private m_iPos As Long +Private m_iLen As Long + +Public Property Get Length() As Long + Length = m_iPos \ 2 +End Property + +Public Property Get Capacity() As Long + Capacity = m_iLen \ 2 +End Property + +Public Property Get ChunkSize() As Long + ' Return the unicode character chunk size: + ChunkSize = m_iChunkSize \ 2 +End Property + +Public Property Let ChunkSize(ByVal iChunkSize As Long) + ' Set the chunksize. We multiply by 2 because internally + ' we are considering bytes: + m_iChunkSize = iChunkSize * 2 +End Property + +Public Property Get toString() As String + ' The internal string: + If m_iPos > 0 Then + toString = Left$(m_sString, m_iPos \ 2) + End If +End Property + +Public Property Let TheString(ByRef sThis As String) + Dim lLen As Long + + ' Setting the string: + lLen = LenB(sThis) + If lLen = 0 Then + 'Clear + m_sString = "" + m_iPos = 0 + m_iLen = 0 + Else + If m_iLen < lLen Then + ' Need to expand string to accommodate: + Do + m_sString = m_sString & Space$(m_iChunkSize \ 2) + m_iLen = m_iLen + m_iChunkSize + Loop While m_iLen < lLen + End If + CopyMemory ByVal StrPtr(m_sString), ByVal StrPtr(sThis), lLen + m_iPos = lLen + End If + +End Property + +Public Sub Clear() + m_sString = "" + m_iPos = 0 + m_iLen = 0 +End Sub + +Public Sub AppendNL(ByRef sThis As String) + Append sThis + Append vbCrLf +End Sub + +Public Sub Append(ByRef sThis As String) + Dim lLen As Long + Dim lLenPlusPos As Long + + ' Append an item to the string: + lLen = LenB(sThis) + lLenPlusPos = lLen + m_iPos + If lLenPlusPos > m_iLen Then + Dim lTemp As Long + + lTemp = m_iLen + Do While lTemp < lLenPlusPos + lTemp = lTemp + m_iChunkSize + Loop + + m_sString = m_sString & Space$((lTemp - m_iLen) \ 2) + m_iLen = lTemp + End If + + CopyMemory ByVal UnsignedAdd(StrPtr(m_sString), m_iPos), ByVal StrPtr(sThis), lLen + m_iPos = m_iPos + lLen +End Sub + +Public Sub AppendByVal(ByVal sThis As String) + Append sThis +End Sub + +Public Sub Insert(ByVal iIndex As Long, ByRef sThis As String) + Dim lLen As Long + Dim lPos As Long + Dim lSize As Long + + ' is iIndex within bounds? + If (iIndex * 2 > m_iPos) Then + Err.Raise 9 + Else + + lLen = LenB(sThis) + If (m_iPos + lLen) > m_iLen Then + m_sString = m_sString & Space$(m_iChunkSize \ 2) + m_iLen = m_iLen + m_iChunkSize + End If + + ' Move existing characters from current position + lPos = UnsignedAdd(StrPtr(m_sString), iIndex * 2) + lSize = m_iPos - iIndex * 2 + + ' moving from iIndex to iIndex + lLen + CopyMemory ByVal UnsignedAdd(lPos, lLen), ByVal lPos, lSize + + ' Insert new characters: + CopyMemory ByVal lPos, ByVal StrPtr(sThis), lLen + + m_iPos = m_iPos + lLen + End If +End Sub + +Public Sub InsertByVal(ByVal iIndex As Long, ByVal sThis As String) + Insert iIndex, sThis +End Sub + +Public Sub Remove(ByVal iIndex As Long, ByVal lLen As Long) + Dim lSrc As Long + Dim lDst As Long + Dim lSize As Long + + ' is iIndex within bounds? + If (iIndex * 2 > m_iPos) Then + Err.Raise 9 + Else + ' is there sufficient length? + If ((iIndex + lLen) * 2 > m_iPos) Then + Err.Raise 9 + Else + ' Need to copy characters from iIndex*2 to m_iPos back by lLen chars: + lSrc = UnsignedAdd(StrPtr(m_sString), (iIndex + lLen) * 2) + lDst = UnsignedAdd(StrPtr(m_sString), iIndex * 2) + lSize = (m_iPos - (iIndex + lLen) * 2) + CopyMemory ByVal lDst, ByVal lSrc, lSize + m_iPos = m_iPos - lLen * 2 + End If + End If +End Sub + +Public Function Find(ByVal sToFind As String, _ + Optional ByVal lStartIndex As Long = 1, _ + Optional ByVal compare As VbCompareMethod = vbTextCompare _ + ) As Long + + Dim lInstr As Long + If (lStartIndex > 0) Then + lInstr = InStr(lStartIndex, m_sString, sToFind, compare) + Else + lInstr = InStr(m_sString, sToFind, compare) + End If + If (lInstr < m_iPos \ 2) Then + Find = lInstr + End If +End Function + +Public Sub HeapMinimize() + Dim iLen As Long + + ' Reduce the string size so only the minimal chunks + ' are allocated: + If (m_iLen - m_iPos) > m_iChunkSize Then + iLen = m_iLen + Do While (iLen - m_iPos) > m_iChunkSize + iLen = iLen - m_iChunkSize + Loop + m_sString = Left$(m_sString, iLen \ 2) + m_iLen = iLen + End If + +End Sub +Private Function UnsignedAdd(Start As Long, Incr As Long) As Long +' This function is useful when doing pointer arithmetic, +' but note it only works for positive values of Incr + + If Start And &H80000000 Then 'Start < 0 + UnsignedAdd = Start + Incr + ElseIf (Start Or &H80000000) < -Incr Then + UnsignedAdd = Start + Incr + Else + UnsignedAdd = (Start + &H80000000) + (Incr + &H80000000) + End If + +End Function +Private Sub Class_Initialize() + ' The default allocation: 8192 characters. + m_iChunkSize = 16384 +End Sub + + diff --git a/frmMain.frm b/frmMain.frm new file mode 100644 index 0000000..95de7cf --- /dev/null +++ b/frmMain.frm @@ -0,0 +1,153 @@ +VERSION 5.00 +Begin VB.Form frmMain + BackColor = &H80000005& + Caption = "FuckComputer for Windows" + ClientHeight = 3660 + ClientLeft = 60 + ClientTop = 405 + ClientWidth = 6360 + BeginProperty Font + Name = "΢ÈíÑÅºÚ Light" + Size = 12 + Charset = 134 + Weight = 290 + Underline = 0 'False + Italic = 0 'False + Strikethrough = 0 'False + EndProperty + Icon = "frmMain.frx":0000 + LinkTopic = "Form1" + ScaleHeight = 3660 + ScaleWidth = 6360 + StartUpPosition = 3 '´°¿Úȱʡ + Begin VB.ListBox List1 + Height = 2895 + Left = 120 + TabIndex = 1 + Top = 600 + Width = 6135 + End + Begin VB.Label lblConsole + BackStyle = 0 'Transparent + Caption = "The Fake Console" + Height = 3255 + Left = 120 + TabIndex = 0 + Top = 120 + Width = 6135 + End +End +Attribute VB_Name = "frmMain" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False +'FuckComputer ported to wInDoWs by YidaozhanYa + +'Let everyone enjoy the fun of fucking. --Chi_Tang + +Private Sub Form_Activate() +List1.Visible = False +lblConsole.Caption = "Let everyone enjoy the fun of fucking." +DoEvents +CheckInternet +PrintW "Checking git..." +Shell "cmd /c git --version > %TEMP%\fuckcomputer.tmp", vbHide +Sleep 100 +Open Environ("Temp") & "\fuckcomputer.tmp" For Input As #1 + Dim TmpVal As String + Input #1, TmpVal + If InStr(TmpVal, "git version") = False Then + MsgBox "Git is not found!", vbOKOnly + vbCritical, "FuckComputer for Windows" + End If +Close #1 +Set objJson = JSON.parse(JsonString) +lblConsole.Caption = "Welcome to FuckComputer " & CStr(objJson.Count) & " in 1 (Windows ver)!" +List1.Clear +Dim y As Integer +y = 0 +For Each x In objJson.keys + y = y + 1 + List1.AddItem "(" & y & ") " & x +Next x +List1.Visible = True +DoEvents +End Sub + +Private Sub CheckInternet() +On Error GoTo GreatConnection +PrintW "Checking Internet..." +Dim xhr As Object +Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0") +xhr.open "GET", "https://ssmzhn.github.io/FuckComputer.json", True ' Async +xhr.send +xhr.waitForResponse 10 +If xhr.Status = 200 Then + JsonString = xhr.responseText + Set xhr = Nothing + Exit Sub +Else + GoTo GreatConnection +End If +GreatConnection: + MsgBox "Great connection!", vbOKOnly + vbCritical, "FuckComputer for Windows" +End Sub + +Private Sub List1_Click() + Dim TmpVal As String +Dim choice As String +List1.Visible = False +choice = Split(List1.Text, ") ")(1) +PrintW "Cloing respository..." +ShellAndWait "cmd /c cd " & Chr(34) & App.Path & Chr(34) & " && git clone https://github.com/FuckComputer/" & choice +Select Case objJson(choice) + Case "cpp" + PrintW "Checking g++..." + Shell "cmd /c g++ --version > %TEMP%\fuckcomputer.tmp", vbHide + Sleep 100 + Open Environ("Temp") & "\fuckcomputer.tmp" For Input As #1 + Input #1, TmpVal + Close #1 + If InStr(TmpVal, "g++ (GCC)") = False Then + MsgBox "G++ is not found!", vbOKOnly + vbCritical, "FuckComputer for Windows" + Else + ShellAndWait "cmd /c g++ " & Chr(34) & App.Path & "\" & choice & "\src\main.cpp" & Chr(34) + Shell "cmd /k " & Chr(34) & App.Path & "\" & choice & "\a.exe" & Chr(34), vbNormalFocus + End If + Case "nim" + PrintW "Checking nim..." + Shell "cmd /c nim --version > %TEMP%\fuckcomputer.tmp", vbHide + Sleep 100 + Open Environ("Temp") & "\fuckcomputer.tmp" For Input As #1 + Input #1, TmpVal + Close #1 + If InStr(TmpVal, "Nim Compiler") = False Then + MsgBox "Nim is not found!", vbOKOnly + vbCritical, "FuckComputer for Windows" + Else + ShellAndWait "cmd /c nim compile -d:release " & Chr(34) & App.Path & "\" & choice & "\src\main.nim" & Chr(34) + ShellAndWait "cmd /c rename " & Chr(34) & App.Path & "\" & choice & "\src\main" & Chr(34) & " main.exe" + Shell "cmd /k " & Chr(34) & App.Path & "\" & choice & "\src\main.exe" & Chr(34), vbNormalFocus + End If + Case "python" + PrintW "Checking Python..." + Shell "cmd /c python --version > %TEMP%\fuckcomputer.tmp", vbHide + Sleep 100 + Open Environ("Temp") & "\fuckcomputer.tmp" For Input As #1 + Input #1, TmpVal + Close #1 + If InStr(TmpVal, "Python ") = False Then + MsgBox "Python is not found!", vbOKOnly + vbCritical, "FuckComputer for Windows" + Else + Shell "cmd /k python " & Chr(34) & App.Path & "\" & choice & "\src\main.py" & Chr(34), vbNormalFocus + End If +End Select +End +End Sub + +Private Sub Form_Initialize() +InitCommonControls +End Sub + +Private Sub Form_Unload(Cancel As Integer) +End +End Sub diff --git a/frmMain.frx b/frmMain.frx new file mode 100644 index 0000000000000000000000000000000000000000..8d1409ac5ad09043db605da2977d49933de9072e GIT binary patch literal 21674 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