├── .gitattributes ├── .gitignore ├── Launcher.sln ├── Launcher ├── AndroidApk.Designer.vb ├── AndroidApk.resx ├── AndroidApk.vb ├── App.config ├── Form1.Designer.vb ├── Form1.resx ├── Form1.vb ├── Launcher.vbproj ├── My Project │ ├── Application.Designer.vb │ ├── Application.myapp │ ├── AssemblyInfo.vb │ ├── Resources.Designer.vb │ ├── Resources.resx │ ├── Settings.Designer.vb │ └── Settings.settings ├── ProfileExecutor.vb ├── PromptEditor.Designer.vb ├── PromptEditor.resx ├── PromptEditor.vb ├── packages.config └── runcmd.vb └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc -------------------------------------------------------------------------------- /Launcher.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.33423.255 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Launcher", "Launcher\Launcher.vbproj", "{5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x64 = Debug|x64 12 | Release|Any CPU = Release|Any CPU 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Debug|x64.ActiveCfg = Debug|x64 19 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Debug|x64.Build.0 = Debug|x64 20 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Release|x64.ActiveCfg = Release|x64 23 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E}.Release|x64.Build.0 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {1CF28A5F-9FA7-4CA7-A7A3-7AA587C12C40} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Launcher/AndroidApk.Designer.vb: -------------------------------------------------------------------------------- 1 |  2 | Partial Class SelectClient 3 | 'Inherits System.Windows.Forms.Form 4 | Inherits MaterialSkin.Controls.MaterialForm 5 | 6 | 'Form 重写 Dispose,以清理组件列表。 7 | 8 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 9 | Try 10 | If disposing AndAlso components IsNot Nothing Then 11 | components.Dispose() 12 | End If 13 | Finally 14 | MyBase.Dispose(disposing) 15 | End Try 16 | End Sub 17 | 18 | 'Windows 窗体设计器所必需的 19 | Private components As System.ComponentModel.IContainer 20 | 21 | '注意: 以下过程是 Windows 窗体设计器所必需的 22 | '可以使用 Windows 窗体设计器修改它。 23 | '不要使用代码编辑器修改它。 24 | 25 | Private Sub InitializeComponent() 26 | Me.components = New System.ComponentModel.Container() 27 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(SelectClient)) 28 | Me.ActionBar = New System.Windows.Forms.Label() 29 | Me.GroupBox1 = New System.Windows.Forms.GroupBox() 30 | Me.Save = New MaterialSkin.Controls.MaterialButton() 31 | Me.GroupBox2 = New System.Windows.Forms.GroupBox() 32 | Me.Label2 = New System.Windows.Forms.Label() 33 | Me.Label1 = New System.Windows.Forms.Label() 34 | Me.PictureBox1 = New System.Windows.Forms.PictureBox() 35 | Me.IPAddr = New System.Windows.Forms.Label() 36 | Me.Label3 = New System.Windows.Forms.Label() 37 | Me.MaterialButton1 = New MaterialSkin.Controls.MaterialButton() 38 | Me.ClientDetector = New System.Windows.Forms.Timer(Me.components) 39 | Me.GroupBox1.SuspendLayout() 40 | Me.GroupBox2.SuspendLayout() 41 | CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() 42 | Me.SuspendLayout() 43 | ' 44 | 'ActionBar 45 | ' 46 | Me.ActionBar.BackColor = System.Drawing.Color.FromArgb(CType(CType(63, Byte), Integer), CType(CType(81, Byte), Integer), CType(CType(181, Byte), Integer)) 47 | Me.ActionBar.Font = New System.Drawing.Font("微软雅黑", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 48 | Me.ActionBar.ForeColor = System.Drawing.SystemColors.ButtonHighlight 49 | Me.ActionBar.Location = New System.Drawing.Point(0, 24) 50 | Me.ActionBar.Name = "ActionBar" 51 | Me.ActionBar.Size = New System.Drawing.Size(328, 40) 52 | Me.ActionBar.TabIndex = 17 53 | Me.ActionBar.Text = " 选择客户端" 54 | Me.ActionBar.TextAlign = System.Drawing.ContentAlignment.MiddleLeft 55 | ' 56 | 'GroupBox1 57 | ' 58 | Me.GroupBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(242, Byte), Integer), CType(CType(242, Byte), Integer), CType(CType(242, Byte), Integer)) 59 | Me.GroupBox1.Controls.Add(Me.Save) 60 | Me.GroupBox1.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 61 | Me.GroupBox1.Location = New System.Drawing.Point(24, 80) 62 | Me.GroupBox1.Name = "GroupBox1" 63 | Me.GroupBox1.Size = New System.Drawing.Size(224, 88) 64 | Me.GroupBox1.TabIndex = 18 65 | Me.GroupBox1.TabStop = False 66 | Me.GroupBox1.Text = "电脑端" 67 | ' 68 | 'Save 69 | ' 70 | Me.Save.AutoSize = False 71 | Me.Save.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 72 | Me.Save.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 73 | Me.Save.Depth = 0 74 | Me.Save.FlatStyle = System.Windows.Forms.FlatStyle.Popup 75 | Me.Save.HighEmphasis = True 76 | Me.Save.Icon = Nothing 77 | Me.Save.Location = New System.Drawing.Point(24, 32) 78 | Me.Save.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 79 | Me.Save.MouseState = MaterialSkin.MouseState.HOVER 80 | Me.Save.Name = "Save" 81 | Me.Save.NoAccentTextColor = System.Drawing.Color.Empty 82 | Me.Save.Size = New System.Drawing.Size(176, 40) 83 | Me.Save.TabIndex = 32 84 | Me.Save.Text = "连接" 85 | Me.Save.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 86 | Me.Save.UseAccentColor = False 87 | Me.Save.UseVisualStyleBackColor = True 88 | ' 89 | 'GroupBox2 90 | ' 91 | Me.GroupBox2.BackColor = System.Drawing.Color.FromArgb(CType(CType(242, Byte), Integer), CType(CType(242, Byte), Integer), CType(CType(242, Byte), Integer)) 92 | Me.GroupBox2.Controls.Add(Me.IPAddr) 93 | Me.GroupBox2.Controls.Add(Me.Label3) 94 | Me.GroupBox2.Controls.Add(Me.Label2) 95 | Me.GroupBox2.Controls.Add(Me.Label1) 96 | Me.GroupBox2.Controls.Add(Me.PictureBox1) 97 | Me.GroupBox2.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 98 | Me.GroupBox2.Location = New System.Drawing.Point(24, 192) 99 | Me.GroupBox2.Name = "GroupBox2" 100 | Me.GroupBox2.Size = New System.Drawing.Size(224, 312) 101 | Me.GroupBox2.TabIndex = 19 102 | Me.GroupBox2.TabStop = False 103 | Me.GroupBox2.Text = "手机端" 104 | ' 105 | 'Label2 106 | ' 107 | Me.Label2.AutoSize = True 108 | Me.Label2.Cursor = System.Windows.Forms.Cursors.Hand 109 | Me.Label2.Font = New System.Drawing.Font("微软雅黑", 12.0!, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 110 | Me.Label2.ForeColor = System.Drawing.SystemColors.HotTrack 111 | Me.Label2.Location = New System.Drawing.Point(136, 200) 112 | Me.Label2.Name = "Label2" 113 | Me.Label2.Size = New System.Drawing.Size(74, 21) 114 | Me.Label2.TabIndex = 5 115 | Me.Label2.Text = "手动安装" 116 | Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter 117 | ' 118 | 'Label1 119 | ' 120 | Me.Label1.AutoSize = True 121 | Me.Label1.Font = New System.Drawing.Font("微软雅黑", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 122 | Me.Label1.Location = New System.Drawing.Point(16, 200) 123 | Me.Label1.Name = "Label1" 124 | Me.Label1.Size = New System.Drawing.Size(126, 21) 125 | Me.Label1.TabIndex = 4 126 | Me.Label1.Text = "扫码下载APK 或" 127 | Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter 128 | ' 129 | 'PictureBox1 130 | ' 131 | Me.PictureBox1.Image = CType(resources.GetObject("PictureBox1.Image"), System.Drawing.Image) 132 | Me.PictureBox1.Location = New System.Drawing.Point(32, 32) 133 | Me.PictureBox1.Name = "PictureBox1" 134 | Me.PictureBox1.Size = New System.Drawing.Size(160, 160) 135 | Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage 136 | Me.PictureBox1.TabIndex = 3 137 | Me.PictureBox1.TabStop = False 138 | ' 139 | 'IPAddr 140 | ' 141 | Me.IPAddr.BackColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(0, Byte), Integer)) 142 | Me.IPAddr.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 143 | Me.IPAddr.ForeColor = System.Drawing.Color.White 144 | Me.IPAddr.Location = New System.Drawing.Point(16, 272) 145 | Me.IPAddr.Name = "IPAddr" 146 | Me.IPAddr.Size = New System.Drawing.Size(192, 24) 147 | Me.IPAddr.TabIndex = 7 148 | Me.IPAddr.Text = "IP" 149 | Me.IPAddr.TextAlign = System.Drawing.ContentAlignment.MiddleCenter 150 | ' 151 | 'Label3 152 | ' 153 | Me.Label3.AutoSize = True 154 | Me.Label3.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 155 | Me.Label3.Location = New System.Drawing.Point(32, 240) 156 | Me.Label3.Name = "Label3" 157 | Me.Label3.Size = New System.Drawing.Size(163, 20) 158 | Me.Label3.TabIndex = 6 159 | Me.Label3.Text = "启动后填写以下信息连接" 160 | Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter 161 | ' 162 | 'MaterialButton1 163 | ' 164 | Me.MaterialButton1.AutoSize = False 165 | Me.MaterialButton1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 166 | Me.MaterialButton1.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 167 | Me.MaterialButton1.Depth = 0 168 | Me.MaterialButton1.FlatStyle = System.Windows.Forms.FlatStyle.Popup 169 | Me.MaterialButton1.HighEmphasis = True 170 | Me.MaterialButton1.Icon = Nothing 171 | Me.MaterialButton1.Location = New System.Drawing.Point(40, 568) 172 | Me.MaterialButton1.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 173 | Me.MaterialButton1.MouseState = MaterialSkin.MouseState.HOVER 174 | Me.MaterialButton1.Name = "MaterialButton1" 175 | Me.MaterialButton1.NoAccentTextColor = System.Drawing.Color.Empty 176 | Me.MaterialButton1.Size = New System.Drawing.Size(176, 40) 177 | Me.MaterialButton1.TabIndex = 2 178 | Me.MaterialButton1.Text = "启动" 179 | Me.MaterialButton1.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 180 | Me.MaterialButton1.UseAccentColor = False 181 | Me.MaterialButton1.UseVisualStyleBackColor = True 182 | ' 183 | 'ClientDetector 184 | ' 185 | Me.ClientDetector.Enabled = True 186 | Me.ClientDetector.Interval = 1000 187 | ' 188 | 'SelectClient 189 | ' 190 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) 191 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 192 | Me.ClientSize = New System.Drawing.Size(269, 519) 193 | Me.Controls.Add(Me.MaterialButton1) 194 | Me.Controls.Add(Me.GroupBox2) 195 | Me.Controls.Add(Me.GroupBox1) 196 | Me.Controls.Add(Me.ActionBar) 197 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle 198 | Me.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None 199 | Me.MaximizeBox = False 200 | Me.MinimizeBox = False 201 | Me.Name = "SelectClient" 202 | Me.Padding = New System.Windows.Forms.Padding(3, 26, 3, 3) 203 | Me.Sizable = False 204 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 205 | Me.Text = "选择客户端" 206 | Me.GroupBox1.ResumeLayout(False) 207 | Me.GroupBox2.ResumeLayout(False) 208 | Me.GroupBox2.PerformLayout() 209 | CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() 210 | Me.ResumeLayout(False) 211 | 212 | End Sub 213 | Friend WithEvents ActionBar As Label 214 | Friend WithEvents GroupBox1 As GroupBox 215 | Friend WithEvents Save As MaterialSkin.Controls.MaterialButton 216 | Friend WithEvents GroupBox2 As GroupBox 217 | Friend WithEvents Label2 As Label 218 | Friend WithEvents Label1 As Label 219 | Friend WithEvents PictureBox1 As PictureBox 220 | Friend WithEvents IPAddr As Label 221 | Friend WithEvents Label3 As Label 222 | Friend WithEvents MaterialButton1 As MaterialSkin.Controls.MaterialButton 223 | Friend WithEvents ClientDetector As Timer 224 | End Class 225 | -------------------------------------------------------------------------------- /Launcher/AndroidApk.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | 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 151 | viiKYo+7RVEUe9ydsy+Konia1xTF3M2lzxbF07ymKObsi6Io9rhbFEWxx905+6Ioiqd5TVHM3Vz6bFE8 152 | zWuKYs6+KIpij7tFURR73J2zL4qieJrXFMXczaXPFsXTvKYo5uyLoij2uFsURbHH3Tn7oiiKp3lNUczd 153 | XPpsUTzNa4pizr4oimKPu0VRFHvcnbMviqJ4mtcUxdzNpc8WxdO8pijm7IuiKPa4WxRFscfdOfuiKIqn 154 | eU1RzN1c+mxRPM1rimLOviiKYo+7RVEUe9ydsy+Konia1xTF3M2lzxbF07ymKObsi6Io9rhbFEWxx905 155 | +6Ioiqd5TVHM3Vz67G/yG4rigqgoiqIoiqIoiqIoiqIoiuKCqCiK4jf5DXM3lz77m/yGorggKoqiKIqi 156 | KIqiKIqiKIqiuCAqiqL4TX7D3M2lz/4mv6EoLoiKoiiKoiiKoiiKoiiKoiguiIqiKH6T3zB3c+mzv8lv 157 | KIoLoqIoiqIoiqIoiqIoiqIoiguioiiK3+Q3zN1c+uxv8huK4oKoKIqiKIqiKIqiKIqiKIrigqgoiuI3 158 | +Q1zN5c++5v8hqK4ICqKoiiKoiiKoiiKoiiKorggKoqi+E1+w9zNpc/+Jr+hKC6IiqIoiqIoiqIoiqIo 159 | iqIoLoiKoih+k98wd3Pps7/JbyiKC6KiKIqiKIqiKIqiKIqiKIoLoqIoit/kN8zdXPrsb/IbiuKCqCiK 160 | oiiKoiiKoiiKoiiK4oKoKIriN/kNc/eX/x/yh/00r9nj7pDxBVFRfP7x/YkM+Ef0NK/Z4+6Q8QVRUXz+ 161 | 8f2JDPhH9DSv2ePukPEFUVF8/vH9iQz4R/Q0r9nj7pDxBVFRfP7x/YkM+Ef0NK/Z4+6Q8QVRUXz+8f2J 162 | DPhH9DSv2ePukPEFUVF8/vH9iQz4R/Q0r9nj7pDxBVFRfP7x/YkM+Ef0NK/Z4+6Q8QVRUXz+8f2JDPhH 163 | 9DSv2ePukPEFUVF8/nHzT8QfZ1EURVEURVEURVHM2e9xtyiKYo+7p/jqHneLYsi4KFYdfaWiKIqiKIqi 164 | KObs97hbFEWxx91TfHWPu0UxZFwUq46+UlEURVEURVEUc/Z73C2Kotjj7im+usfdohgyLopVR1+pKIqi 165 | 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 266 | 267 | 268 | 269 | 17, 17 270 | 271 | -------------------------------------------------------------------------------- /Launcher/AndroidApk.vb: -------------------------------------------------------------------------------- 1 | Public Class SelectClient 2 | Dim ip = Login.IPBox.Text 3 | Dim port = Login.PortBox.Text 4 | Private Sub AndroidApk_Load(sender As Object, e As EventArgs) Handles MyBase.Load 5 | Height = 520 6 | Width = 270 7 | IPAddr.Text = ip & ":" & port 8 | End Sub 9 | 10 | Private Sub Label2_Click_1(sender As Object, e As EventArgs) Handles Label2.Click 11 | Shell("cmd /c explorer.exe apks", vbHide) 12 | 13 | End Sub 14 | 15 | Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click 16 | Log("Starting UE process") 17 | Shell("cmd /c Client\T.exe -ip=" & ip & " -port=" & port, vbHide) 18 | End Sub 19 | 20 | Private Sub ClientDetector_Tick(sender As Object, e As EventArgs) Handles ClientDetector.Tick 21 | If Not Login.TextStatus.Text = "服务器已启动!点击此处选择客户端" Then 22 | ClientDetector.Enabled = False 23 | Close() 24 | End If 25 | End Sub 26 | End Class -------------------------------------------------------------------------------- /Launcher/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Launcher/Form1.Designer.vb: -------------------------------------------------------------------------------- 1 |  2 | Partial Class Login 3 | Inherits MaterialSkin.Controls.MaterialForm 4 | 5 | 'Form 重写 Dispose,以清理组件列表。 6 | 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Windows 窗体设计器所必需的 18 | Private components As System.ComponentModel.IContainer 19 | 20 | '注意: 以下过程是 Windows 窗体设计器所必需的 21 | '可以使用 Windows 窗体设计器修改它。 22 | '不要使用代码编辑器修改它。 23 | 24 | Private Sub InitializeComponent() 25 | Me.components = New System.ComponentModel.Container() 26 | Me.GroupGPTVersion = New System.Windows.Forms.GroupBox() 27 | Me.CheckBW = New MaterialSkin.Controls.MaterialCheckbox() 28 | Me.CheckStream = New MaterialSkin.Controls.MaterialCheckbox() 29 | Me.ComboCharacterSelect = New MaterialSkin.Controls.MaterialComboBox() 30 | Me.GroupLogin = New System.Windows.Forms.GroupBox() 31 | Me.GetCookie = New MaterialSkin.Controls.MaterialButton() 32 | Me.TextOpenAIAcc = New MaterialSkin.Controls.MaterialMaskedTextBox() 33 | Me.CheckIsPlus = New MaterialSkin.Controls.MaterialCheckbox() 34 | Me.TextOpenAICookie = New MaterialSkin.Controls.MaterialMaskedTextBox() 35 | Me.TextOpenAIPass = New MaterialSkin.Controls.MaterialMaskedTextBox() 36 | Me.OptionCookie = New MaterialSkin.Controls.MaterialRadioButton() 37 | Me.OptionAccAndPass = New MaterialSkin.Controls.MaterialRadioButton() 38 | Me.GetAPI = New MaterialSkin.Controls.MaterialButton() 39 | Me.ComboModSelect = New MaterialSkin.Controls.MaterialComboBox() 40 | Me.TextProxServer = New MaterialSkin.Controls.MaterialMaskedTextBox() 41 | Me.TextAPIKey = New MaterialSkin.Controls.MaterialMaskedTextBox() 42 | Me.OptionAPI = New MaterialSkin.Controls.MaterialRadioButton() 43 | Me.OptionWeb = New MaterialSkin.Controls.MaterialRadioButton() 44 | Me.Launch = New MaterialSkin.Controls.MaterialButton() 45 | Me.ActionBar = New System.Windows.Forms.Label() 46 | Me.MaterialRadioButton1 = New MaterialSkin.Controls.MaterialRadioButton() 47 | Me.para = New System.Windows.Forms.TextBox() 48 | Me.logData = New System.Windows.Forms.TextBox() 49 | Me.Save = New MaterialSkin.Controls.MaterialButton() 50 | Me.TextStatus = New System.Windows.Forms.Label() 51 | Me.CheckLog = New MaterialSkin.Controls.MaterialCheckbox() 52 | Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) 53 | Me.Editor = New MaterialSkin.Controls.MaterialButton() 54 | Me.IPBox = New System.Windows.Forms.TextBox() 55 | Me.PortBox = New System.Windows.Forms.TextBox() 56 | Me.ComboIPSelect = New MaterialSkin.Controls.MaterialComboBox() 57 | Me.GroupGPTVersion.SuspendLayout() 58 | Me.GroupLogin.SuspendLayout() 59 | Me.SuspendLayout() 60 | ' 61 | 'GroupGPTVersion 62 | ' 63 | Me.GroupGPTVersion.BackColor = System.Drawing.SystemColors.Control 64 | Me.GroupGPTVersion.Controls.Add(Me.CheckBW) 65 | Me.GroupGPTVersion.Controls.Add(Me.CheckStream) 66 | Me.GroupGPTVersion.Controls.Add(Me.ComboCharacterSelect) 67 | Me.GroupGPTVersion.Controls.Add(Me.GroupLogin) 68 | Me.GroupGPTVersion.Controls.Add(Me.GetAPI) 69 | Me.GroupGPTVersion.Controls.Add(Me.ComboModSelect) 70 | Me.GroupGPTVersion.Controls.Add(Me.TextProxServer) 71 | Me.GroupGPTVersion.Controls.Add(Me.TextAPIKey) 72 | Me.GroupGPTVersion.Controls.Add(Me.OptionAPI) 73 | Me.GroupGPTVersion.Controls.Add(Me.OptionWeb) 74 | Me.GroupGPTVersion.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 75 | Me.GroupGPTVersion.Location = New System.Drawing.Point(24, 88) 76 | Me.GroupGPTVersion.Name = "GroupGPTVersion" 77 | Me.GroupGPTVersion.Size = New System.Drawing.Size(424, 456) 78 | Me.GroupGPTVersion.TabIndex = 3 79 | Me.GroupGPTVersion.TabStop = False 80 | Me.GroupGPTVersion.Text = "ChatGPT 版本" 81 | ' 82 | 'CheckBW 83 | ' 84 | Me.CheckBW.Depth = 0 85 | Me.CheckBW.Location = New System.Drawing.Point(304, 400) 86 | Me.CheckBW.Margin = New System.Windows.Forms.Padding(0) 87 | Me.CheckBW.MouseLocation = New System.Drawing.Point(-1, -1) 88 | Me.CheckBW.MouseState = MaterialSkin.MouseState.HOVER 89 | Me.CheckBW.Name = "CheckBW" 90 | Me.CheckBW.ReadOnly = False 91 | Me.CheckBW.Ripple = True 92 | Me.CheckBW.Size = New System.Drawing.Size(99, 40) 93 | Me.CheckBW.TabIndex = 38 94 | Me.CheckBW.Text = "洗脑模式" 95 | Me.ToolTip1.SetToolTip(Me.CheckBW, "每隔5句话发送一次设定,有助于解决ChatGPT忘了自己的设定的问题。(仅网页版可用)") 96 | Me.CheckBW.UseVisualStyleBackColor = True 97 | ' 98 | 'CheckStream 99 | ' 100 | Me.CheckStream.Depth = 0 101 | Me.CheckStream.Location = New System.Drawing.Point(200, 400) 102 | Me.CheckStream.Margin = New System.Windows.Forms.Padding(0) 103 | Me.CheckStream.MouseLocation = New System.Drawing.Point(-1, -1) 104 | Me.CheckStream.MouseState = MaterialSkin.MouseState.HOVER 105 | Me.CheckStream.Name = "CheckStream" 106 | Me.CheckStream.ReadOnly = False 107 | Me.CheckStream.Ripple = True 108 | Me.CheckStream.Size = New System.Drawing.Size(99, 40) 109 | Me.CheckStream.TabIndex = 37 110 | Me.CheckStream.Text = "流式语音" 111 | Me.ToolTip1.SetToolTip(Me.CheckStream, "每一个完整句子都会生成一次语音,可以显著改善回答延迟问题") 112 | Me.CheckStream.UseVisualStyleBackColor = True 113 | ' 114 | 'ComboCharacterSelect 115 | ' 116 | Me.ComboCharacterSelect.AutoResize = False 117 | Me.ComboCharacterSelect.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer)) 118 | Me.ComboCharacterSelect.Depth = 0 119 | Me.ComboCharacterSelect.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable 120 | Me.ComboCharacterSelect.DropDownHeight = 174 121 | Me.ComboCharacterSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList 122 | Me.ComboCharacterSelect.DropDownWidth = 121 123 | Me.ComboCharacterSelect.Font = New System.Drawing.Font("微软雅黑", 10.0!) 124 | Me.ComboCharacterSelect.ForeColor = System.Drawing.Color.FromArgb(CType(CType(222, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) 125 | Me.ComboCharacterSelect.FormattingEnabled = True 126 | Me.ComboCharacterSelect.Hint = "角色选择" 127 | Me.ComboCharacterSelect.IntegralHeight = False 128 | Me.ComboCharacterSelect.ItemHeight = 43 129 | Me.ComboCharacterSelect.Location = New System.Drawing.Point(24, 392) 130 | Me.ComboCharacterSelect.MaxDropDownItems = 4 131 | Me.ComboCharacterSelect.MouseState = MaterialSkin.MouseState.OUT 132 | Me.ComboCharacterSelect.Name = "ComboCharacterSelect" 133 | Me.ComboCharacterSelect.Size = New System.Drawing.Size(168, 49) 134 | Me.ComboCharacterSelect.StartIndex = 0 135 | Me.ComboCharacterSelect.TabIndex = 36 136 | ' 137 | 'GroupLogin 138 | ' 139 | Me.GroupLogin.BackColor = System.Drawing.SystemColors.Control 140 | Me.GroupLogin.Controls.Add(Me.GetCookie) 141 | Me.GroupLogin.Controls.Add(Me.TextOpenAIAcc) 142 | Me.GroupLogin.Controls.Add(Me.CheckIsPlus) 143 | Me.GroupLogin.Controls.Add(Me.TextOpenAICookie) 144 | Me.GroupLogin.Controls.Add(Me.TextOpenAIPass) 145 | Me.GroupLogin.Controls.Add(Me.OptionCookie) 146 | Me.GroupLogin.Controls.Add(Me.OptionAccAndPass) 147 | Me.GroupLogin.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 148 | Me.GroupLogin.Location = New System.Drawing.Point(16, 72) 149 | Me.GroupLogin.Name = "GroupLogin" 150 | Me.GroupLogin.Size = New System.Drawing.Size(392, 208) 151 | Me.GroupLogin.TabIndex = 26 152 | Me.GroupLogin.TabStop = False 153 | Me.GroupLogin.Text = "登录方式" 154 | ' 155 | 'GetCookie 156 | ' 157 | Me.GetCookie.AutoSize = False 158 | Me.GetCookie.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 159 | Me.GetCookie.CharacterCasing = MaterialSkin.Controls.MaterialButton.CharacterCasingEnum.Lower 160 | Me.GetCookie.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 161 | Me.GetCookie.Depth = 0 162 | Me.GetCookie.FlatStyle = System.Windows.Forms.FlatStyle.Popup 163 | Me.GetCookie.HighEmphasis = True 164 | Me.GetCookie.Icon = Nothing 165 | Me.GetCookie.Location = New System.Drawing.Point(16, 120) 166 | Me.GetCookie.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 167 | Me.GetCookie.MouseState = MaterialSkin.MouseState.HOVER 168 | Me.GetCookie.Name = "GetCookie" 169 | Me.GetCookie.NoAccentTextColor = System.Drawing.Color.Empty 170 | Me.GetCookie.Size = New System.Drawing.Size(360, 40) 171 | Me.GetCookie.TabIndex = 16 172 | Me.GetCookie.Text = "如何获取cookie" 173 | Me.GetCookie.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 174 | Me.GetCookie.UseAccentColor = False 175 | Me.GetCookie.UseVisualStyleBackColor = True 176 | Me.GetCookie.Visible = False 177 | ' 178 | 'TextOpenAIAcc 179 | ' 180 | Me.TextOpenAIAcc.AllowPromptAsInput = True 181 | Me.TextOpenAIAcc.AnimateReadOnly = False 182 | Me.TextOpenAIAcc.AsciiOnly = False 183 | Me.TextOpenAIAcc.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None 184 | Me.TextOpenAIAcc.BeepOnError = False 185 | Me.TextOpenAIAcc.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 186 | Me.TextOpenAIAcc.Depth = 0 187 | Me.TextOpenAIAcc.Enabled = False 188 | Me.TextOpenAIAcc.Font = New System.Drawing.Font("微软雅黑", 10.0!) 189 | Me.TextOpenAIAcc.HidePromptOnLeave = False 190 | Me.TextOpenAIAcc.HideSelection = True 191 | Me.TextOpenAIAcc.Hint = "openAI 账号(暂不可用)" 192 | Me.TextOpenAIAcc.InsertKeyMode = System.Windows.Forms.InsertKeyMode.[Default] 193 | Me.TextOpenAIAcc.LeadingIcon = Nothing 194 | Me.TextOpenAIAcc.Location = New System.Drawing.Point(16, 72) 195 | Me.TextOpenAIAcc.Mask = "" 196 | Me.TextOpenAIAcc.MaxLength = 32767 197 | Me.TextOpenAIAcc.MouseState = MaterialSkin.MouseState.OUT 198 | Me.TextOpenAIAcc.Name = "TextOpenAIAcc" 199 | Me.TextOpenAIAcc.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0) 200 | Me.TextOpenAIAcc.PrefixSuffixText = Nothing 201 | Me.TextOpenAIAcc.PromptChar = Global.Microsoft.VisualBasic.ChrW(95) 202 | Me.TextOpenAIAcc.ReadOnly = False 203 | Me.TextOpenAIAcc.RejectInputOnFirstFailure = False 204 | Me.TextOpenAIAcc.ResetOnPrompt = True 205 | Me.TextOpenAIAcc.ResetOnSpace = True 206 | Me.TextOpenAIAcc.RightToLeft = System.Windows.Forms.RightToLeft.No 207 | Me.TextOpenAIAcc.SelectedText = "" 208 | Me.TextOpenAIAcc.SelectionLength = 0 209 | Me.TextOpenAIAcc.SelectionStart = 0 210 | Me.TextOpenAIAcc.ShortcutsEnabled = True 211 | Me.TextOpenAIAcc.Size = New System.Drawing.Size(360, 36) 212 | Me.TextOpenAIAcc.SkipLiterals = True 213 | Me.TextOpenAIAcc.TabIndex = 14 214 | Me.TextOpenAIAcc.TabStop = False 215 | Me.TextOpenAIAcc.TextAlign = System.Windows.Forms.HorizontalAlignment.Left 216 | Me.TextOpenAIAcc.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 217 | Me.TextOpenAIAcc.TrailingIcon = Nothing 218 | Me.TextOpenAIAcc.UseSystemPasswordChar = False 219 | Me.TextOpenAIAcc.UseTallSize = False 220 | Me.TextOpenAIAcc.ValidatingType = Nothing 221 | ' 222 | 'CheckIsPlus 223 | ' 224 | Me.CheckIsPlus.AutoSize = True 225 | Me.CheckIsPlus.Depth = 0 226 | Me.CheckIsPlus.Enabled = False 227 | Me.CheckIsPlus.Location = New System.Drawing.Point(16, 165) 228 | Me.CheckIsPlus.Margin = New System.Windows.Forms.Padding(0) 229 | Me.CheckIsPlus.MouseLocation = New System.Drawing.Point(-1, -1) 230 | Me.CheckIsPlus.MouseState = MaterialSkin.MouseState.HOVER 231 | Me.CheckIsPlus.Name = "CheckIsPlus" 232 | Me.CheckIsPlus.ReadOnly = False 233 | Me.CheckIsPlus.Ripple = True 234 | Me.CheckIsPlus.Size = New System.Drawing.Size(194, 37) 235 | Me.CheckIsPlus.TabIndex = 13 236 | Me.CheckIsPlus.Text = "Plus账号(暂不可用)" 237 | Me.ToolTip1.SetToolTip(Me.CheckIsPlus, "请在开始之前确保你的网络可以访问chatGPT") 238 | Me.CheckIsPlus.UseVisualStyleBackColor = True 239 | ' 240 | 'TextOpenAICookie 241 | ' 242 | Me.TextOpenAICookie.AllowPromptAsInput = True 243 | Me.TextOpenAICookie.AnimateReadOnly = False 244 | Me.TextOpenAICookie.AsciiOnly = False 245 | Me.TextOpenAICookie.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None 246 | Me.TextOpenAICookie.BeepOnError = False 247 | Me.TextOpenAICookie.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 248 | Me.TextOpenAICookie.Depth = 0 249 | Me.TextOpenAICookie.Font = New System.Drawing.Font("微软雅黑", 10.0!) 250 | Me.TextOpenAICookie.HidePromptOnLeave = False 251 | Me.TextOpenAICookie.HideSelection = True 252 | Me.TextOpenAICookie.Hint = "openAI Cookie" 253 | Me.TextOpenAICookie.InsertKeyMode = System.Windows.Forms.InsertKeyMode.[Default] 254 | Me.TextOpenAICookie.LeadingIcon = Nothing 255 | Me.TextOpenAICookie.Location = New System.Drawing.Point(16, 72) 256 | Me.TextOpenAICookie.Mask = "" 257 | Me.TextOpenAICookie.MaxLength = 32767 258 | Me.TextOpenAICookie.MouseState = MaterialSkin.MouseState.OUT 259 | Me.TextOpenAICookie.Name = "TextOpenAICookie" 260 | Me.TextOpenAICookie.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0) 261 | Me.TextOpenAICookie.PrefixSuffixText = Nothing 262 | Me.TextOpenAICookie.PromptChar = Global.Microsoft.VisualBasic.ChrW(95) 263 | Me.TextOpenAICookie.ReadOnly = False 264 | Me.TextOpenAICookie.RejectInputOnFirstFailure = False 265 | Me.TextOpenAICookie.ResetOnPrompt = True 266 | Me.TextOpenAICookie.ResetOnSpace = True 267 | Me.TextOpenAICookie.RightToLeft = System.Windows.Forms.RightToLeft.No 268 | Me.TextOpenAICookie.SelectedText = "" 269 | Me.TextOpenAICookie.SelectionLength = 0 270 | Me.TextOpenAICookie.SelectionStart = 0 271 | Me.TextOpenAICookie.ShortcutsEnabled = True 272 | Me.TextOpenAICookie.Size = New System.Drawing.Size(360, 36) 273 | Me.TextOpenAICookie.SkipLiterals = True 274 | Me.TextOpenAICookie.TabIndex = 11 275 | Me.TextOpenAICookie.TabStop = False 276 | Me.TextOpenAICookie.TextAlign = System.Windows.Forms.HorizontalAlignment.Left 277 | Me.TextOpenAICookie.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 278 | Me.TextOpenAICookie.TrailingIcon = Nothing 279 | Me.TextOpenAICookie.UseSystemPasswordChar = False 280 | Me.TextOpenAICookie.UseTallSize = False 281 | Me.TextOpenAICookie.ValidatingType = Nothing 282 | ' 283 | 'TextOpenAIPass 284 | ' 285 | Me.TextOpenAIPass.AllowPromptAsInput = True 286 | Me.TextOpenAIPass.AnimateReadOnly = False 287 | Me.TextOpenAIPass.AsciiOnly = False 288 | Me.TextOpenAIPass.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None 289 | Me.TextOpenAIPass.BeepOnError = False 290 | Me.TextOpenAIPass.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 291 | Me.TextOpenAIPass.Depth = 0 292 | Me.TextOpenAIPass.Enabled = False 293 | Me.TextOpenAIPass.Font = New System.Drawing.Font("微软雅黑", 10.0!) 294 | Me.TextOpenAIPass.HidePromptOnLeave = False 295 | Me.TextOpenAIPass.HideSelection = True 296 | Me.TextOpenAIPass.Hint = "openAI 密码(暂不可用)" 297 | Me.TextOpenAIPass.InsertKeyMode = System.Windows.Forms.InsertKeyMode.[Default] 298 | Me.TextOpenAIPass.LeadingIcon = Nothing 299 | Me.TextOpenAIPass.Location = New System.Drawing.Point(16, 120) 300 | Me.TextOpenAIPass.Mask = "" 301 | Me.TextOpenAIPass.MaxLength = 32767 302 | Me.TextOpenAIPass.MouseState = MaterialSkin.MouseState.OUT 303 | Me.TextOpenAIPass.Name = "TextOpenAIPass" 304 | Me.TextOpenAIPass.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0) 305 | Me.TextOpenAIPass.PrefixSuffixText = Nothing 306 | Me.TextOpenAIPass.PromptChar = Global.Microsoft.VisualBasic.ChrW(95) 307 | Me.TextOpenAIPass.ReadOnly = False 308 | Me.TextOpenAIPass.RejectInputOnFirstFailure = False 309 | Me.TextOpenAIPass.ResetOnPrompt = True 310 | Me.TextOpenAIPass.ResetOnSpace = True 311 | Me.TextOpenAIPass.RightToLeft = System.Windows.Forms.RightToLeft.No 312 | Me.TextOpenAIPass.SelectedText = "" 313 | Me.TextOpenAIPass.SelectionLength = 0 314 | Me.TextOpenAIPass.SelectionStart = 0 315 | Me.TextOpenAIPass.ShortcutsEnabled = True 316 | Me.TextOpenAIPass.Size = New System.Drawing.Size(360, 36) 317 | Me.TextOpenAIPass.SkipLiterals = True 318 | Me.TextOpenAIPass.TabIndex = 8 319 | Me.TextOpenAIPass.TabStop = False 320 | Me.TextOpenAIPass.TextAlign = System.Windows.Forms.HorizontalAlignment.Left 321 | Me.TextOpenAIPass.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 322 | Me.TextOpenAIPass.TrailingIcon = Nothing 323 | Me.TextOpenAIPass.UseSystemPasswordChar = False 324 | Me.TextOpenAIPass.UseTallSize = False 325 | Me.TextOpenAIPass.ValidatingType = Nothing 326 | ' 327 | 'OptionCookie 328 | ' 329 | Me.OptionCookie.AutoSize = True 330 | Me.OptionCookie.Depth = 0 331 | Me.OptionCookie.Location = New System.Drawing.Point(64, 24) 332 | Me.OptionCookie.Margin = New System.Windows.Forms.Padding(0) 333 | Me.OptionCookie.MouseLocation = New System.Drawing.Point(-1, -1) 334 | Me.OptionCookie.MouseState = MaterialSkin.MouseState.HOVER 335 | Me.OptionCookie.Name = "OptionCookie" 336 | Me.OptionCookie.Ripple = True 337 | Me.OptionCookie.Size = New System.Drawing.Size(88, 37) 338 | Me.OptionCookie.TabIndex = 4 339 | Me.OptionCookie.TabStop = True 340 | Me.OptionCookie.Text = "Cookie" 341 | Me.ToolTip1.SetToolTip(Me.OptionCookie, "使用cookie登录") 342 | Me.OptionCookie.UseVisualStyleBackColor = True 343 | ' 344 | 'OptionAccAndPass 345 | ' 346 | Me.OptionAccAndPass.AutoSize = True 347 | Me.OptionAccAndPass.Checked = True 348 | Me.OptionAccAndPass.Depth = 0 349 | Me.OptionAccAndPass.Location = New System.Drawing.Point(240, 24) 350 | Me.OptionAccAndPass.Margin = New System.Windows.Forms.Padding(0) 351 | Me.OptionAccAndPass.MouseLocation = New System.Drawing.Point(-1, -1) 352 | Me.OptionAccAndPass.MouseState = MaterialSkin.MouseState.HOVER 353 | Me.OptionAccAndPass.Name = "OptionAccAndPass" 354 | Me.OptionAccAndPass.Ripple = True 355 | Me.OptionAccAndPass.Size = New System.Drawing.Size(99, 37) 356 | Me.OptionAccAndPass.TabIndex = 3 357 | Me.OptionAccAndPass.TabStop = True 358 | Me.OptionAccAndPass.Text = "账号密码" 359 | Me.ToolTip1.SetToolTip(Me.OptionAccAndPass, "使用账号密码登录(暂不可用)") 360 | Me.OptionAccAndPass.UseVisualStyleBackColor = True 361 | ' 362 | 'GetAPI 363 | ' 364 | Me.GetAPI.AutoSize = False 365 | Me.GetAPI.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 366 | Me.GetAPI.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 367 | Me.GetAPI.Depth = 0 368 | Me.GetAPI.FlatStyle = System.Windows.Forms.FlatStyle.Popup 369 | Me.GetAPI.HighEmphasis = True 370 | Me.GetAPI.Icon = Nothing 371 | Me.GetAPI.Location = New System.Drawing.Point(24, 120) 372 | Me.GetAPI.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 373 | Me.GetAPI.MouseState = MaterialSkin.MouseState.HOVER 374 | Me.GetAPI.Name = "GetAPI" 375 | Me.GetAPI.NoAccentTextColor = System.Drawing.Color.Empty 376 | Me.GetAPI.Size = New System.Drawing.Size(376, 40) 377 | Me.GetAPI.TabIndex = 25 378 | Me.GetAPI.Text = "如何获取API" 379 | Me.GetAPI.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 380 | Me.GetAPI.UseAccentColor = False 381 | Me.GetAPI.UseVisualStyleBackColor = True 382 | ' 383 | 'ComboModSelect 384 | ' 385 | Me.ComboModSelect.AutoResize = False 386 | Me.ComboModSelect.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer)) 387 | Me.ComboModSelect.Depth = 0 388 | Me.ComboModSelect.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable 389 | Me.ComboModSelect.DropDownHeight = 118 390 | Me.ComboModSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList 391 | Me.ComboModSelect.DropDownWidth = 121 392 | Me.ComboModSelect.Font = New System.Drawing.Font("微软雅黑", 10.0!) 393 | Me.ComboModSelect.ForeColor = System.Drawing.Color.FromArgb(CType(CType(222, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) 394 | Me.ComboModSelect.FormattingEnabled = True 395 | Me.ComboModSelect.Hint = "模型选择" 396 | Me.ComboModSelect.IntegralHeight = False 397 | Me.ComboModSelect.ItemHeight = 29 398 | Me.ComboModSelect.Location = New System.Drawing.Point(24, 344) 399 | Me.ComboModSelect.MaxDropDownItems = 4 400 | Me.ComboModSelect.MouseState = MaterialSkin.MouseState.OUT 401 | Me.ComboModSelect.Name = "ComboModSelect" 402 | Me.ComboModSelect.Size = New System.Drawing.Size(376, 35) 403 | Me.ComboModSelect.StartIndex = 0 404 | Me.ComboModSelect.TabIndex = 24 405 | Me.ComboModSelect.UseTallSize = False 406 | ' 407 | 'TextProxServer 408 | ' 409 | Me.TextProxServer.AllowPromptAsInput = True 410 | Me.TextProxServer.AnimateReadOnly = False 411 | Me.TextProxServer.AsciiOnly = False 412 | Me.TextProxServer.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None 413 | Me.TextProxServer.BeepOnError = False 414 | Me.TextProxServer.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 415 | Me.TextProxServer.Depth = 0 416 | Me.TextProxServer.Font = New System.Drawing.Font("微软雅黑", 10.0!) 417 | Me.TextProxServer.HidePromptOnLeave = False 418 | Me.TextProxServer.HideSelection = True 419 | Me.TextProxServer.Hint = "代理(可不填,连接前请确保你的网路能访问chatGPT)" 420 | Me.TextProxServer.InsertKeyMode = System.Windows.Forms.InsertKeyMode.[Default] 421 | Me.TextProxServer.LeadingIcon = Nothing 422 | Me.TextProxServer.Location = New System.Drawing.Point(24, 296) 423 | Me.TextProxServer.Mask = "" 424 | Me.TextProxServer.MaxLength = 32767 425 | Me.TextProxServer.MouseState = MaterialSkin.MouseState.OUT 426 | Me.TextProxServer.Name = "TextProxServer" 427 | Me.TextProxServer.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0) 428 | Me.TextProxServer.PrefixSuffixText = Nothing 429 | Me.TextProxServer.PromptChar = Global.Microsoft.VisualBasic.ChrW(95) 430 | Me.TextProxServer.ReadOnly = False 431 | Me.TextProxServer.RejectInputOnFirstFailure = False 432 | Me.TextProxServer.ResetOnPrompt = True 433 | Me.TextProxServer.ResetOnSpace = True 434 | Me.TextProxServer.RightToLeft = System.Windows.Forms.RightToLeft.No 435 | Me.TextProxServer.SelectedText = "" 436 | Me.TextProxServer.SelectionLength = 0 437 | Me.TextProxServer.SelectionStart = 0 438 | Me.TextProxServer.ShortcutsEnabled = True 439 | Me.TextProxServer.Size = New System.Drawing.Size(376, 36) 440 | Me.TextProxServer.SkipLiterals = True 441 | Me.TextProxServer.TabIndex = 22 442 | Me.TextProxServer.TabStop = False 443 | Me.TextProxServer.TextAlign = System.Windows.Forms.HorizontalAlignment.Left 444 | Me.TextProxServer.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 445 | Me.ToolTip1.SetToolTip(Me.TextProxServer, "请在开始之前确保你的网络可以访问chatGPT") 446 | Me.TextProxServer.TrailingIcon = Nothing 447 | Me.TextProxServer.UseSystemPasswordChar = False 448 | Me.TextProxServer.UseTallSize = False 449 | Me.TextProxServer.ValidatingType = Nothing 450 | ' 451 | 'TextAPIKey 452 | ' 453 | Me.TextAPIKey.AllowPromptAsInput = True 454 | Me.TextAPIKey.AnimateReadOnly = False 455 | Me.TextAPIKey.AsciiOnly = False 456 | Me.TextAPIKey.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None 457 | Me.TextAPIKey.BeepOnError = False 458 | Me.TextAPIKey.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 459 | Me.TextAPIKey.Depth = 0 460 | Me.TextAPIKey.Font = New System.Drawing.Font("微软雅黑", 10.0!) 461 | Me.TextAPIKey.HidePromptOnLeave = False 462 | Me.TextAPIKey.HideSelection = True 463 | Me.TextAPIKey.Hint = "API Key" 464 | Me.TextAPIKey.InsertKeyMode = System.Windows.Forms.InsertKeyMode.[Default] 465 | Me.TextAPIKey.LeadingIcon = Nothing 466 | Me.TextAPIKey.Location = New System.Drawing.Point(24, 72) 467 | Me.TextAPIKey.Mask = "" 468 | Me.TextAPIKey.MaxLength = 32767 469 | Me.TextAPIKey.MouseState = MaterialSkin.MouseState.OUT 470 | Me.TextAPIKey.Name = "TextAPIKey" 471 | Me.TextAPIKey.PasswordChar = Global.Microsoft.VisualBasic.ChrW(0) 472 | Me.TextAPIKey.PrefixSuffixText = Nothing 473 | Me.TextAPIKey.PromptChar = Global.Microsoft.VisualBasic.ChrW(95) 474 | Me.TextAPIKey.ReadOnly = False 475 | Me.TextAPIKey.RejectInputOnFirstFailure = False 476 | Me.TextAPIKey.ResetOnPrompt = True 477 | Me.TextAPIKey.ResetOnSpace = True 478 | Me.TextAPIKey.RightToLeft = System.Windows.Forms.RightToLeft.No 479 | Me.TextAPIKey.SelectedText = "" 480 | Me.TextAPIKey.SelectionLength = 0 481 | Me.TextAPIKey.SelectionStart = 0 482 | Me.TextAPIKey.ShortcutsEnabled = True 483 | Me.TextAPIKey.Size = New System.Drawing.Size(376, 36) 484 | Me.TextAPIKey.SkipLiterals = True 485 | Me.TextAPIKey.TabIndex = 18 486 | Me.TextAPIKey.TabStop = False 487 | Me.TextAPIKey.TextAlign = System.Windows.Forms.HorizontalAlignment.Left 488 | Me.TextAPIKey.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludeLiterals 489 | Me.TextAPIKey.TrailingIcon = Nothing 490 | Me.TextAPIKey.UseSystemPasswordChar = False 491 | Me.TextAPIKey.UseTallSize = False 492 | Me.TextAPIKey.ValidatingType = Nothing 493 | ' 494 | 'OptionAPI 495 | ' 496 | Me.OptionAPI.AutoSize = True 497 | Me.OptionAPI.Depth = 0 498 | Me.OptionAPI.Location = New System.Drawing.Point(256, 24) 499 | Me.OptionAPI.Margin = New System.Windows.Forms.Padding(0) 500 | Me.OptionAPI.MouseLocation = New System.Drawing.Point(-1, -1) 501 | Me.OptionAPI.MouseState = MaterialSkin.MouseState.HOVER 502 | Me.OptionAPI.Name = "OptionAPI" 503 | Me.OptionAPI.Ripple = True 504 | Me.OptionAPI.Size = New System.Drawing.Size(77, 37) 505 | Me.OptionAPI.TabIndex = 4 506 | Me.OptionAPI.TabStop = True 507 | Me.OptionAPI.Text = "API版" 508 | Me.ToolTip1.SetToolTip(Me.OptionAPI, "使用OpenAI官方的API接入。不填APIKey会使用我们的APIKey") 509 | Me.OptionAPI.UseVisualStyleBackColor = True 510 | ' 511 | 'OptionWeb 512 | ' 513 | Me.OptionWeb.AutoSize = True 514 | Me.OptionWeb.Checked = True 515 | Me.OptionWeb.Depth = 0 516 | Me.OptionWeb.Location = New System.Drawing.Point(80, 24) 517 | Me.OptionWeb.Margin = New System.Windows.Forms.Padding(0) 518 | Me.OptionWeb.MouseLocation = New System.Drawing.Point(-1, -1) 519 | Me.OptionWeb.MouseState = MaterialSkin.MouseState.HOVER 520 | Me.OptionWeb.Name = "OptionWeb" 521 | Me.OptionWeb.Ripple = True 522 | Me.OptionWeb.Size = New System.Drawing.Size(83, 37) 523 | Me.OptionWeb.TabIndex = 3 524 | Me.OptionWeb.TabStop = True 525 | Me.OptionWeb.Text = "网页版" 526 | Me.ToolTip1.SetToolTip(Me.OptionWeb, "使用逆向的网页版ChatGPT API,链接有可能不稳定") 527 | Me.OptionWeb.UseVisualStyleBackColor = True 528 | ' 529 | 'Launch 530 | ' 531 | Me.Launch.AutoSize = False 532 | Me.Launch.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 533 | Me.Launch.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 534 | Me.Launch.Depth = 0 535 | Me.Launch.FlatStyle = System.Windows.Forms.FlatStyle.Popup 536 | Me.Launch.Font = New System.Drawing.Font("微软雅黑", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 537 | Me.Launch.HighEmphasis = True 538 | Me.Launch.Icon = Nothing 539 | Me.Launch.Location = New System.Drawing.Point(24, 608) 540 | Me.Launch.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 541 | Me.Launch.MouseState = MaterialSkin.MouseState.HOVER 542 | Me.Launch.Name = "Launch" 543 | Me.Launch.NoAccentTextColor = System.Drawing.Color.Empty 544 | Me.Launch.Size = New System.Drawing.Size(104, 40) 545 | Me.Launch.TabIndex = 15 546 | Me.Launch.Text = "启动服务器" 547 | Me.ToolTip1.SetToolTip(Me.Launch, "启动服务") 548 | Me.Launch.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 549 | Me.Launch.UseAccentColor = False 550 | Me.Launch.UseVisualStyleBackColor = True 551 | ' 552 | 'ActionBar 553 | ' 554 | Me.ActionBar.BackColor = System.Drawing.Color.FromArgb(CType(CType(63, Byte), Integer), CType(CType(81, Byte), Integer), CType(CType(181, Byte), Integer)) 555 | Me.ActionBar.Font = New System.Drawing.Font("微软雅黑", 15.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 556 | Me.ActionBar.ForeColor = System.Drawing.SystemColors.ButtonHighlight 557 | Me.ActionBar.Location = New System.Drawing.Point(0, 24) 558 | Me.ActionBar.Name = "ActionBar" 559 | Me.ActionBar.Size = New System.Drawing.Size(1128, 48) 560 | Me.ActionBar.TabIndex = 16 561 | Me.ActionBar.Text = " 《数字生命》" 562 | Me.ActionBar.TextAlign = System.Drawing.ContentAlignment.MiddleLeft 563 | ' 564 | 'MaterialRadioButton1 565 | ' 566 | Me.MaterialRadioButton1.AutoSize = True 567 | Me.MaterialRadioButton1.Depth = 0 568 | Me.MaterialRadioButton1.Location = New System.Drawing.Point(1000, 768) 569 | Me.MaterialRadioButton1.Margin = New System.Windows.Forms.Padding(0) 570 | Me.MaterialRadioButton1.MouseLocation = New System.Drawing.Point(-1, -1) 571 | Me.MaterialRadioButton1.MouseState = MaterialSkin.MouseState.HOVER 572 | Me.MaterialRadioButton1.Name = "MaterialRadioButton1" 573 | Me.MaterialRadioButton1.Ripple = True 574 | Me.MaterialRadioButton1.Size = New System.Drawing.Size(202, 37) 575 | Me.MaterialRadioButton1.TabIndex = 1 576 | Me.MaterialRadioButton1.TabStop = True 577 | Me.MaterialRadioButton1.Text = "MaterialRadioButton1" 578 | Me.MaterialRadioButton1.UseVisualStyleBackColor = True 579 | ' 580 | 'para 581 | ' 582 | Me.para.Font = New System.Drawing.Font("微软雅黑", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 583 | Me.para.Location = New System.Drawing.Point(24, 664) 584 | Me.para.Multiline = True 585 | Me.para.Name = "para" 586 | Me.para.Size = New System.Drawing.Size(1024, 24) 587 | Me.para.TabIndex = 26 588 | ' 589 | 'logData 590 | ' 591 | Me.logData.BackColor = System.Drawing.SystemColors.Menu 592 | Me.logData.Font = New System.Drawing.Font("微软雅黑", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 593 | Me.logData.Location = New System.Drawing.Point(480, 96) 594 | Me.logData.Multiline = True 595 | Me.logData.Name = "logData" 596 | Me.logData.ReadOnly = True 597 | Me.logData.Size = New System.Drawing.Size(568, 552) 598 | Me.logData.TabIndex = 30 599 | ' 600 | 'Save 601 | ' 602 | Me.Save.AutoSize = False 603 | Me.Save.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 604 | Me.Save.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 605 | Me.Save.Depth = 0 606 | Me.Save.FlatStyle = System.Windows.Forms.FlatStyle.Popup 607 | Me.Save.HighEmphasis = True 608 | Me.Save.Icon = Nothing 609 | Me.Save.Location = New System.Drawing.Point(24, 560) 610 | Me.Save.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 611 | Me.Save.MouseState = MaterialSkin.MouseState.HOVER 612 | Me.Save.Name = "Save" 613 | Me.Save.NoAccentTextColor = System.Drawing.Color.Empty 614 | Me.Save.Size = New System.Drawing.Size(104, 32) 615 | Me.Save.TabIndex = 31 616 | Me.Save.Text = "保存配置" 617 | Me.ToolTip1.SetToolTip(Me.Save, "保存所有配置项") 618 | Me.Save.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 619 | Me.Save.UseAccentColor = False 620 | Me.Save.UseVisualStyleBackColor = True 621 | ' 622 | 'TextStatus 623 | ' 624 | Me.TextStatus.BackColor = System.Drawing.Color.Red 625 | Me.TextStatus.Font = New System.Drawing.Font("微软雅黑", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 626 | Me.TextStatus.ForeColor = System.Drawing.SystemColors.ControlLightLight 627 | Me.TextStatus.Location = New System.Drawing.Point(136, 608) 628 | Me.TextStatus.Name = "TextStatus" 629 | Me.TextStatus.Size = New System.Drawing.Size(224, 40) 630 | Me.TextStatus.TabIndex = 33 631 | Me.TextStatus.Text = "未启动" 632 | Me.TextStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter 633 | ' 634 | 'CheckLog 635 | ' 636 | Me.CheckLog.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter 637 | Me.CheckLog.Depth = 0 638 | Me.CheckLog.Location = New System.Drawing.Point(368, 610) 639 | Me.CheckLog.Margin = New System.Windows.Forms.Padding(0) 640 | Me.CheckLog.MouseLocation = New System.Drawing.Point(-1, -1) 641 | Me.CheckLog.MouseState = MaterialSkin.MouseState.HOVER 642 | Me.CheckLog.Name = "CheckLog" 643 | Me.CheckLog.ReadOnly = False 644 | Me.CheckLog.Ripple = True 645 | Me.CheckLog.Size = New System.Drawing.Size(80, 40) 646 | Me.CheckLog.TabIndex = 40 647 | Me.CheckLog.Text = "日志" 648 | Me.ToolTip1.SetToolTip(Me.CheckLog, "显示实时日志") 649 | Me.CheckLog.UseVisualStyleBackColor = True 650 | ' 651 | 'Editor 652 | ' 653 | Me.Editor.AutoSize = False 654 | Me.Editor.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 655 | Me.Editor.CharacterCasing = MaterialSkin.Controls.MaterialButton.CharacterCasingEnum.Lower 656 | Me.Editor.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 657 | Me.Editor.Depth = 0 658 | Me.Editor.FlatStyle = System.Windows.Forms.FlatStyle.Popup 659 | Me.Editor.HighEmphasis = True 660 | Me.Editor.Icon = Nothing 661 | Me.Editor.Location = New System.Drawing.Point(136, 560) 662 | Me.Editor.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 663 | Me.Editor.MouseState = MaterialSkin.MouseState.HOVER 664 | Me.Editor.Name = "Editor" 665 | Me.Editor.NoAccentTextColor = System.Drawing.Color.Empty 666 | Me.Editor.Size = New System.Drawing.Size(112, 32) 667 | Me.Editor.TabIndex = 39 668 | Me.Editor.Text = "编辑提示词" 669 | Me.Editor.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 670 | Me.Editor.UseAccentColor = False 671 | Me.Editor.UseVisualStyleBackColor = True 672 | ' 673 | 'IPBox 674 | ' 675 | Me.IPBox.Location = New System.Drawing.Point(664, 840) 676 | Me.IPBox.Name = "IPBox" 677 | Me.IPBox.Size = New System.Drawing.Size(128, 21) 678 | Me.IPBox.TabIndex = 41 679 | ' 680 | 'PortBox 681 | ' 682 | Me.PortBox.Location = New System.Drawing.Point(664, 864) 683 | Me.PortBox.Name = "PortBox" 684 | Me.PortBox.Size = New System.Drawing.Size(128, 21) 685 | Me.PortBox.TabIndex = 42 686 | ' 687 | 'ComboIPSelect 688 | ' 689 | Me.ComboIPSelect.AutoResize = False 690 | Me.ComboIPSelect.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer)) 691 | Me.ComboIPSelect.Depth = 0 692 | Me.ComboIPSelect.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable 693 | Me.ComboIPSelect.DropDownHeight = 118 694 | Me.ComboIPSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList 695 | Me.ComboIPSelect.DropDownWidth = 121 696 | Me.ComboIPSelect.Font = New System.Drawing.Font("微软雅黑", 10.0!) 697 | Me.ComboIPSelect.ForeColor = System.Drawing.Color.FromArgb(CType(CType(222, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer)) 698 | Me.ComboIPSelect.FormattingEnabled = True 699 | Me.ComboIPSelect.Hint = "本机IP" 700 | Me.ComboIPSelect.IntegralHeight = False 701 | Me.ComboIPSelect.ItemHeight = 29 702 | Me.ComboIPSelect.Location = New System.Drawing.Point(256, 560) 703 | Me.ComboIPSelect.MaxDropDownItems = 4 704 | Me.ComboIPSelect.MouseState = MaterialSkin.MouseState.OUT 705 | Me.ComboIPSelect.Name = "ComboIPSelect" 706 | Me.ComboIPSelect.Size = New System.Drawing.Size(192, 35) 707 | Me.ComboIPSelect.StartIndex = 0 708 | Me.ComboIPSelect.TabIndex = 43 709 | Me.ComboIPSelect.UseTallSize = False 710 | ' 711 | 'Login 712 | ' 713 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) 714 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 715 | Me.BackColor = System.Drawing.SystemColors.Control 716 | Me.ClientSize = New System.Drawing.Size(1117, 1074) 717 | Me.Controls.Add(Me.ComboIPSelect) 718 | Me.Controls.Add(Me.PortBox) 719 | Me.Controls.Add(Me.IPBox) 720 | Me.Controls.Add(Me.Editor) 721 | Me.Controls.Add(Me.CheckLog) 722 | Me.Controls.Add(Me.TextStatus) 723 | Me.Controls.Add(Me.Save) 724 | Me.Controls.Add(Me.logData) 725 | Me.Controls.Add(Me.para) 726 | Me.Controls.Add(Me.MaterialRadioButton1) 727 | Me.Controls.Add(Me.ActionBar) 728 | Me.Controls.Add(Me.Launch) 729 | Me.Controls.Add(Me.GroupGPTVersion) 730 | Me.DrawerWidth = 400 731 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle 732 | Me.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None 733 | Me.MaximizeBox = False 734 | Me.Name = "Login" 735 | Me.Padding = New System.Windows.Forms.Padding(3, 26, 3, 3) 736 | Me.Sizable = False 737 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 738 | Me.Text = "数字生命" 739 | Me.GroupGPTVersion.ResumeLayout(False) 740 | Me.GroupGPTVersion.PerformLayout() 741 | Me.GroupLogin.ResumeLayout(False) 742 | Me.GroupLogin.PerformLayout() 743 | Me.ResumeLayout(False) 744 | Me.PerformLayout() 745 | 746 | End Sub 747 | Friend WithEvents GroupGPTVersion As GroupBox 748 | Friend WithEvents OptionAPI As MaterialSkin.Controls.MaterialRadioButton 749 | Friend WithEvents OptionWeb As MaterialSkin.Controls.MaterialRadioButton 750 | Friend WithEvents TextAPIKey As MaterialSkin.Controls.MaterialMaskedTextBox 751 | Friend WithEvents Launch As MaterialSkin.Controls.MaterialButton 752 | Friend WithEvents ActionBar As Label 753 | Friend WithEvents MaterialRadioButton1 As MaterialSkin.Controls.MaterialRadioButton 754 | Friend WithEvents ComboModSelect As MaterialSkin.Controls.MaterialComboBox 755 | Friend WithEvents TextProxServer As MaterialSkin.Controls.MaterialMaskedTextBox 756 | Friend WithEvents para As TextBox 757 | Friend WithEvents logData As TextBox 758 | Friend WithEvents Save As MaterialSkin.Controls.MaterialButton 759 | Friend WithEvents TextStatus As Label 760 | Friend WithEvents GroupLogin As GroupBox 761 | Friend WithEvents GetCookie As MaterialSkin.Controls.MaterialButton 762 | Friend WithEvents TextOpenAIAcc As MaterialSkin.Controls.MaterialMaskedTextBox 763 | Friend WithEvents CheckIsPlus As MaterialSkin.Controls.MaterialCheckbox 764 | Friend WithEvents TextOpenAICookie As MaterialSkin.Controls.MaterialMaskedTextBox 765 | Friend WithEvents TextOpenAIPass As MaterialSkin.Controls.MaterialMaskedTextBox 766 | Friend WithEvents OptionCookie As MaterialSkin.Controls.MaterialRadioButton 767 | Friend WithEvents OptionAccAndPass As MaterialSkin.Controls.MaterialRadioButton 768 | Friend WithEvents GetAPI As MaterialSkin.Controls.MaterialButton 769 | Friend WithEvents CheckBW As MaterialSkin.Controls.MaterialCheckbox 770 | Friend WithEvents CheckStream As MaterialSkin.Controls.MaterialCheckbox 771 | Friend WithEvents ComboCharacterSelect As MaterialSkin.Controls.MaterialComboBox 772 | Friend WithEvents CheckLog As MaterialSkin.Controls.MaterialCheckbox 773 | Friend WithEvents ToolTip1 As ToolTip 774 | Friend WithEvents Editor As MaterialSkin.Controls.MaterialButton 775 | Friend WithEvents IPBox As TextBox 776 | Friend WithEvents PortBox As TextBox 777 | Friend WithEvents ComboIPSelect As MaterialSkin.Controls.MaterialComboBox 778 | End Class 779 | -------------------------------------------------------------------------------- /Launcher/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 17, 17 125 | 126 | -------------------------------------------------------------------------------- /Launcher/Form1.vb: -------------------------------------------------------------------------------- 1 | Imports System.Threading 2 | Imports System.IO 3 | Imports System.Text 4 | 5 | Public Class Login 6 | Dim model(), characterName() As String 7 | Dim apiKey, chatVer, account, passwd, cookie, proxy, plusVer, mode, stream, chara, brainWash As String 8 | Dim ip, port As String 9 | Dim apiKeyConfig, chatVerConfig, accountConfig, passwdConfig, ipConfig, cookieConfig, proxyConfig, plusVerConfig, modeConfig, actionBarText, streamConfig, showCommand, charaConfig, brainWashConfig, showLog As String 10 | Dim lastLine As String 11 | Dim configFile = Application.StartupPath & "/Config/config.ini" 12 | Dim modelFile = Application.StartupPath & "/Config/model.ini" 13 | 14 | Private Sub Login_Load(sender As Object, e As EventArgs) Handles MyBase.Load 15 | 16 | Shell("cmd /c del loglauncher.log") 17 | actionBarText = " 《数字生命》" & ReadConfig("uiconfig", "version", configFile) 18 | Thread.Sleep(500) 19 | 'logData.Text = My.Settings.testmode 20 | ActionBar.Text = actionBarText 21 | logData.BackColor = Color.FromArgb(231, 231, 231) 22 | CheckForIllegalCrossThreadCalls = False 23 | Height = 700 24 | Width = 470 25 | Shell("cmd /c del log.log") 26 | Shell("cmd /c echo. > log.log") 27 | Shell("cmd /c echo. > logdata.txt") 28 | TextOpenAICookie.Visible = False 29 | apiKeyConfig = ReadConfig("uiconfig", "apikey", configFile) 30 | chatVerConfig = ReadConfig("uiconfig", "chatver", configFile) 31 | accountConfig = ReadConfig("uiconfig", "acco", configFile) 32 | passwdConfig = ReadConfig("uiconfig", "password", configFile) 33 | cookieConfig = ReadConfig("uiconfig", "accesstoken", configFile) 34 | proxyConfig = ReadConfig("uiconfig", "proxy", configFile) 35 | plusVerConfig = ReadConfig("uiconfig", "paid", configFile) 36 | modeConfig = ReadConfig("uiconfig", "model", configFile) 37 | streamConfig = ReadConfig("uiconfig", "stream", configFile) 38 | charaConfig = ReadConfig("uiconfig", "character", configFile) 39 | showLog = ReadConfig("uiconfig", "showlog", configFile) 40 | showCommand = ReadConfig("uiconfig", "showcommand", configFile) 41 | ComboIPSelect.Items.Clear() 42 | 43 | For Each ii In GetIpAddress() 44 | ComboIPSelect.Items.Add(ii) 45 | Next ii 46 | ComboIPSelect.SelectedIndex = 0 47 | ip = " --ip " & ComboIPSelect.Text 48 | If showCommand = "True" Then 49 | Height = 700 50 | Else 51 | Height = 660 52 | End If 53 | Log("Starting launcher.") 54 | If Not Directory.Exists("GPT\prompts") Then 55 | Shell("cmd /c echo d | xcopy GPT\prompts_default GPT\prompts") 56 | Log("Prompts not exist, copied.") 57 | Else 58 | Log("Prompts folder exist, skip copy.") 59 | 60 | End If 61 | 62 | If showLog = "True" Then 63 | Width = 1060 64 | CheckLog.Checked = True 65 | Else 66 | Width = 470 67 | CheckLog.Checked = False 68 | End If 69 | If apiKeyConfig = "" Then 70 | apiKey = "" 71 | Else 72 | apiKey = " --APIKey " & apiKeyConfig 73 | TextAPIKey.Text = apiKeyConfig 74 | End If 75 | 'End If 76 | 77 | 78 | 79 | '3 80 | If accountConfig = "" And OptionAPI.Checked = False Then 81 | account = "" 82 | Else 83 | account = " --email " & accountConfig 84 | TextOpenAIAcc.Text = accountConfig 85 | End If 86 | 87 | '4 88 | If passwdConfig = "" And OptionAPI.Checked = False Then 89 | passwd = "" 90 | Else 91 | passwd = " --password " & passwdConfig 92 | TextOpenAIPass.Text = passwdConfig 93 | End If 94 | 95 | 96 | '5 97 | If cookieConfig = "" And OptionAPI.Checked = False Then 98 | cookie = "" 99 | Else 100 | cookie = " --accessToken " & cookieConfig 101 | TextOpenAICookie.Text = cookieConfig 102 | End If 103 | 104 | 105 | '6 106 | 107 | If proxyConfig = "" Then 108 | proxy = "" 109 | Else 110 | proxy = " --proxy " & proxyConfig 111 | TextProxServer.Text = proxyConfig 112 | End If 113 | 114 | 115 | '7 116 | 'MsgBox(modeConfig) 117 | 118 | If OptionAPI.Checked Then 119 | plusVer = "" 120 | Dim comboData = ReadConfig("model", "api", modelFile) 121 | model = Split(comboData, ",") 122 | ComboModSelect.Items.Clear() 123 | GetCookie.Visible = True 124 | For Each ii In model 125 | ComboModSelect.Items.Add(ii) 126 | Next ii 127 | 128 | TextAPIKey.Text = apiKey 129 | Else 130 | Dim comboData = ReadConfig("model", "web", modelFile) 131 | model = Split(comboData, ",") 132 | ComboModSelect.Items.Clear() 133 | GetCookie.Visible = False 134 | For Each i In model 135 | ComboModSelect.Items.Add(i) 136 | Next i 137 | If plusVerConfig = "True" Then 138 | CheckIsPlus.Checked = True 139 | Else 140 | CheckIsPlus.Checked = False 141 | 142 | End If 143 | End If 144 | ComboModSelect.Text = modeConfig 145 | 146 | 147 | 148 | '9 149 | If streamConfig = "True" Then 150 | CheckStream.Checked = True 151 | stream = " --stream True" 152 | 153 | Else 154 | stream = " --stream False" 155 | CheckStream.Checked = False 156 | End If 157 | 158 | If brainWashConfig = "True" Then 159 | CheckBW.Checked = True 160 | brainWash = " --brainwash True" 161 | 162 | Else 163 | brainWash = " --brainwash False" 164 | CheckBW.Checked = False 165 | End If 166 | 167 | '10 168 | Dim comboDataCharacter = ReadConfig("model", "character", modelFile) 169 | model = Split(comboDataCharacter, ",") 170 | ComboCharacterSelect.Items.Clear() 171 | 172 | For Each u In model 173 | ComboCharacterSelect.Items.Add(u) 174 | Next u 175 | ComboCharacterSelect.Text = charaConfig 176 | 177 | 178 | 179 | mode = " --model " & modeConfig 180 | chara = " --character " & charaConfig 181 | 182 | chatVer = " --chatVer " & chatVerConfig 183 | If chatVerConfig = "3" Then 184 | OptionAPI.PerformClick() 185 | account = "" 186 | passwd = "" 187 | plusVer = "" 188 | End If 189 | 'ComboModSelect.SelectedText = modeConfig 190 | UpdateCommand() 191 | OptionCookie.PerformClick() 192 | 193 | End Sub 194 | 195 | 196 | Private Sub OptionWeb_CheckedChanged(sender As Object, e As EventArgs) Handles OptionWeb.Click 197 | 198 | CheckBW.Enabled = True 199 | If CheckBW.Checked Then 200 | brainWash = " --brainwash True" 201 | Else 202 | brainWash = " --brainwash False" 203 | End If 204 | 205 | TextAPIKey.Visible = False 206 | 'TextProxServer.Hint = "代理服务器链接(必填)" 207 | GroupLogin.Visible = True 208 | ComboModSelect.Location = New Point(24, 344) 209 | TextProxServer.Location = New Point(24, 296) 210 | apiKey = "" 211 | Dim comboData = ReadConfig("model", "web", modelFile) 212 | model = Split(comboData, ",") 213 | ComboModSelect.Items.Clear() 214 | 215 | For Each i In model 216 | ComboModSelect.Items.Add(i) 217 | Next i 218 | ComboModSelect.Text = modeConfig 219 | 220 | account = " --email " & TextOpenAIAcc.Text 221 | passwd = " --password " & TextOpenAIPass.Text 222 | cookie = " --accessToken " & TextOpenAICookie.Text 223 | If CheckIsPlus.Checked Then 224 | plusVer = " --paid True" 225 | Else 226 | plusVer = " --paid False" 227 | End If 228 | 229 | chatVer = " --chatVer 1" 230 | chatVerConfig = "1" 231 | My.Settings.Save() 232 | UpdateCommand() 233 | 234 | End Sub 235 | 236 | Private Sub OptionAPI_CheckedChanged_1(sender As Object, e As EventArgs) Handles OptionAPI.CheckedChanged 237 | 238 | End Sub 239 | 240 | Private Sub OptionAPI_CheckedChanged(sender As Object, e As EventArgs) Handles OptionAPI.Click 241 | 242 | TextAPIKey.Visible = True 243 | CheckBW.Enabled = False 244 | brainWash = " --brainwash False" 245 | 246 | GroupLogin.Visible = False 247 | 'TextProxServer.Hint = "代理服务器链接(必填)" 248 | ComboModSelect.Location = New Point(24, 224) 249 | TextProxServer.Location = New Point(24, 176) 250 | chatVer = " --chatVer 3" 251 | Dim comboData = ReadConfig("model", "api", modelFile) 252 | model = Split(comboData, ",") 253 | ComboModSelect.Items.Clear() 254 | 255 | For Each ii In model 256 | ComboModSelect.Items.Add(ii) 257 | Next ii 258 | ComboModSelect.Text = modeConfig 259 | If TextAPIKey.Text = "" Then 260 | apiKey = "" 261 | Else 262 | apiKey = " --APIKey " & TextAPIKey.Text 263 | End If 264 | 265 | If TextProxServer.Text = "" Then 266 | proxy = "" 267 | Else 268 | proxy = " --proxy " & TextProxServer.Text 269 | End If 270 | account = "" 271 | passwd = "" 272 | cookie = "" 273 | plusVer = "" 274 | 275 | chatVerConfig = "3" 276 | My.Settings.Save() 277 | UpdateCommand() 278 | End Sub 279 | 280 | Private Sub TextOpenAIAcc_Click_1(sender As Object, e As EventArgs) Handles TextAPIKey.TextChanged 281 | apiKey = " --APIKey " & TextAPIKey.Text 282 | 283 | UpdateCommand() 284 | End Sub 285 | 286 | 287 | 288 | 289 | Private Sub CheckLog_CheckedChanged(sender As Object, e As EventArgs) Handles CheckLog.CheckedChanged 290 | If CheckLog.Checked Then 291 | Width = 1070 292 | Else 293 | Width = 470 294 | End If 295 | End Sub 296 | 297 | Private Sub CheckLog_NewCheckedChanged(sender As Object, e As EventArgs) Handles CheckLog.Click 298 | If CheckLog.Checked Then 299 | Width = 1060 300 | Else 301 | Width = 470 302 | End If 303 | End Sub 304 | 305 | Private Sub ComboIPSelect_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboIPSelect.SelectedIndexChanged 306 | ip = " --ip " & ComboIPSelect.Text 307 | UpdateCommand() 308 | End Sub 309 | 310 | Private Sub LaunchPH_Click(sender As Object, e As EventArgs) 311 | End Sub 312 | 313 | Private Sub GetAPI_Click(sender As Object, e As EventArgs) Handles GetAPI.Click 314 | Shell("cmd /c start guide/getapi.html") 315 | End Sub 316 | 317 | Private Sub ActionBar_Click(sender As Object, e As EventArgs) Handles ActionBar.Click 318 | If showCommand = "True" Then 319 | showCommand = "False" 320 | WriteConfig("uiconfig", "showcommand", "False", configFile) 321 | Height = 660 322 | Else 323 | showCommand = "True" 324 | WriteConfig("uiconfig", "showcommand", "True", configFile) 325 | Height = 700 326 | End If 327 | 328 | End Sub 329 | 330 | Private Sub TextStatus_Click_1(sender As Object, e As EventArgs) Handles TextStatus.Click 331 | If TextStatus.Text = "服务器已启动!点击此处选择客户端" Then 332 | SelectClient.Show() 333 | End If 334 | End Sub 335 | 336 | 'Private Sub TextStatus_Click(sender As Object, e As EventArgs) Handles TextStatus.MouseWheel 337 | ' Shell("cmd /c start loglauncher.log", vbHide) 338 | 339 | 'End Sub 340 | 341 | Private Sub Editor_Click(sender As Object, e As EventArgs) Handles Editor.Click 342 | PromptEditor.Show() 343 | End Sub 344 | 345 | Private Sub CheckBW_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBW.CheckedChanged 346 | 347 | 348 | If CheckBW.Checked = "True" Then 349 | brainWash = " --brainwash True" 350 | Else 351 | brainWash = " --brainwash False" 352 | End If 353 | UpdateCommand() 354 | 355 | End Sub 356 | 357 | Private Sub TextOpenAIAcc_Click(sender As Object, e As EventArgs) Handles TextOpenAIAcc.Click 358 | If OptionAPI.Checked = False Then 359 | account = " --email " & TextOpenAIAcc.Text 360 | End If 361 | UpdateCommand() 362 | End Sub 363 | 364 | Private Sub TextOpenAIPass_Click(sender As Object, e As EventArgs) Handles TextOpenAIPass.Click 365 | If OptionAPI.Checked = False Then 366 | 367 | passwd = " --password " & TextOpenAIPass.Text 368 | End If 369 | UpdateCommand() 370 | End Sub 371 | 372 | Private Sub CheckIsPlus_CheckedChanged(sender As Object, e As EventArgs) Handles CheckIsPlus.Click 373 | If CheckIsPlus.Checked And OptionAPI.Checked = False Then 374 | plusVer = " --paid True" 375 | Else 376 | plusVer = " --paid False" 377 | 378 | End If 379 | 380 | UpdateCommand() 381 | End Sub 382 | 383 | Private Sub ComboModSelect_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboModSelect.SelectedIndexChanged 384 | 'MsgBox(ComboModSelect.SelectedIndex) 385 | mode = " --model " & ComboModSelect.Text 386 | 387 | UpdateCommand() 388 | End Sub 389 | 390 | Private Sub MaterialButton1_Click(sender As Object, e As EventArgs) Handles Launch.Click 391 | SaveConfig() 392 | 393 | 'Shell("cmd /c del log_async.log") 394 | Shell("cmd /c echo. > log_async.log") 395 | Dim launcher As New Thread(AddressOf StartServer) 396 | launcher.Start() 397 | End Sub 398 | 399 | Sub StartServer() 400 | Log("Starting socketserver.") 401 | Launch.Text = "启动中" 402 | TextStatus.Text = "正在启动..." 403 | TextStatus.BackColor = Color.Red 404 | 405 | 'Dim confirm As String 406 | 'confirm = Msgbox2(Me, "服务器已启动", "请选择客户端类型", "手机端", True, "电脑端") 407 | 'If confirm = "OK" Then 408 | ' MsgBox("OK") 409 | 'Else 410 | ' MsgBox("no") 411 | 'End If 412 | 413 | Shell("cmd /c taskkill /f /t /im SocketServer.exe", vbHide) 414 | Shell("cmd /c taskkill /f /t /im T.exe", vbHide) 415 | SelectClient.Close() 416 | Thread.Sleep(1000) 417 | Shell("cmd /c " & para.Text, vbHide) 418 | Log("Using flags:" & para.Text) 419 | Dim logContent, logSpliter(), lastContent, totalContent() As String 420 | Dim totalLine As Integer 421 | Do 422 | 423 | 424 | Thread.Sleep(1000) 425 | 'Log("Read log_async.log.") 426 | logContent = File.ReadAllText("log_async.log", Encoding.Default) 427 | logSpliter = Split(logContent, " INFO ") 428 | totalContent = Split(logContent, vbCrLf) 429 | totalLine = UBound(totalContent) 430 | logData.Text = logContent + vbCrLf 431 | logData.SelectionStart = logData.Text.Length 432 | logData.ScrollToCaret() 433 | 434 | 'If totalLine < 32 Then 435 | ' logData.Text = logContent 436 | 'Else 437 | ' 'AuxData.Text = "" 438 | ' For i = totalLine - 32 To totalLine 439 | ' AuxData.AppendText(totalContent(i) + vbCrLf) 440 | ' Next i 441 | 442 | ' File.WriteAllText("temp", AuxData.Text) 443 | ' logData.Text = File.ReadAllText("temp") 444 | 'End If 445 | Try 446 | lastContent = logSpliter(UBound(logSpliter)) 447 | 'If lastContent.Contains("退出") Then 448 | ' Log("Detect [退出] keyword, kill all process.") 449 | 450 | ' Shell("cmd /c taskkill /f /t /im Launcher.exe", vbHide) 451 | ' Shell("cmd /c taskkill /f /t /im SocketServer.exe", vbHide) 452 | ' Shell("cmd /c taskkill /f /t /im T.exe", vbHide) 453 | 'End If 454 | 455 | If logContent.Contains("Initializing Server") Then 456 | If Not SC("tasklist | findstr /i SocketServer.exe").Contains("Console") Then 457 | 458 | Log("Socketserver status: offline !!!") 459 | TextStatus.Text = "未启动" 460 | TextStatus.BackColor = Color.Red 461 | logData.AppendText(vbCrLf + "服务器进程已退出!") 462 | Shell("cmd /c taskkill /f /t /im T.exe", vbHide) 463 | 464 | Exit Do 465 | Else 466 | Log("Socketserver status: online.") 467 | End If 468 | End If 469 | 470 | 471 | If lastContent.Contains("Server is listening on") Then 472 | Log("Waiting for connection...") 473 | 474 | 475 | Dim ipData() = Split(logSpliter(UBound(logSpliter)), ":") 476 | ip = ComboIPSelect.Text 477 | port = Replace(ipData(1), "...", "") 478 | Launch.Text = "重启服务器" 479 | TextStatus.Text = "服务已启动。点击此处选择客户端" 480 | 'TextStatus.Text = "服务器已启动" 481 | IPBox.Text = ip 482 | PortBox.Text = Replace(port, vbCrLf, "") 483 | 'SelectClient.Show() 484 | TextStatus.BackColor = Color.FromArgb(0, 192, 0) 485 | 'TextStatus.p 486 | Thread.Sleep(2000) 487 | 488 | End If 489 | 490 | If lastContent.Contains("Connected by") Then 491 | Log("Client connected.") 492 | 493 | Launch.Text = "重启服务器" 494 | TextStatus.Text = "已连接" 495 | SelectClient.Close() 496 | 'LaunchPH.Enabled = False 497 | 'LaunchUE.Enabled = False 498 | 499 | End If 500 | 501 | If lastContent.Contains("WinError") Then 502 | Log("Client disconnected.") 503 | 504 | Launch.Text = "重启服务器" 505 | TextStatus.Text = "未启动" 506 | TextStatus.BackColor = Color.Red 507 | 'Dim confirm As String 508 | 'confirm = Msgbox2(Me, "客户端已断开", "请选择客户端类型重新连接", "电脑端", True, "手机端") 509 | 'If confirm = "OK" Then 510 | ' Log("Starting UE process") 511 | 512 | ' Shell("cmd /c Client\T.exe -ip=" & ip & " -port=" & port, vbHide) 513 | 'Else 514 | ' AndroidApk.Show() 515 | 516 | 'End If 517 | 518 | End If 519 | logData.Focus() 520 | logData.ScrollToCaret() 521 | 522 | Catch 523 | End Try 524 | Loop 525 | logData.Height = 584 526 | Dim ipRawData() As String 527 | 528 | ipRawData = Split(File.ReadAllText("logdata.txt"), "Server is listening on ") 529 | 530 | End Sub 531 | 532 | Private Sub ComboCharacterSelect_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboCharacterSelect.SelectedIndexChanged 533 | chara = " --character " & ComboCharacterSelect.Text 534 | UpdateCommand() 535 | End Sub 536 | 537 | Private Sub CheckStream_CheckedChanged(sender As Object, e As EventArgs) Handles CheckStream.CheckedChanged 538 | If CheckStream.Checked Then 539 | stream = " --stream True" 540 | WriteConfig("uiconfig", "stream", "True", configFile) 541 | 542 | Else 543 | stream = " --stream False" 544 | WriteConfig("uiconfig", "stream", "False", configFile) 545 | 546 | 547 | End If 548 | My.Settings.Save() 549 | UpdateCommand() 550 | End Sub 551 | 552 | 553 | Private Sub TextOpenAIPass_Click_1(sender As Object, e As EventArgs) Handles TextOpenAIPass.TextChanged 554 | passwd = " --password " & TextOpenAIPass.Text 555 | UpdateCommand() 556 | End Sub 557 | 558 | 559 | 560 | Private Sub GetCookie_Click(sender As Object, e As EventArgs) Handles GetCookie.Click 561 | Shell("cmd /c start guide/getcookie.html", vbHide) 562 | End Sub 563 | 564 | 565 | Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click 566 | SaveConfig() 567 | Msgbox2(Me, "成功", "已保存配置!",, False, ) 568 | End Sub 569 | 570 | Private Sub TextOpenAICookie_Click(sender As Object, e As EventArgs) Handles TextOpenAICookie.TextChanged 571 | cookie = " --accessToken " & TextOpenAICookie.Text 572 | UpdateCommand() 573 | End Sub 574 | 575 | Private Sub TextOpenAIProxy_Click(sender As Object, e As EventArgs) Handles TextProxServer.TextChanged 576 | proxy = " --proxy " & TextProxServer.Text 577 | UpdateCommand() 578 | End Sub 579 | 580 | 581 | 582 | 583 | Private Sub OptionCookie_CheckedChanged_1(sender As Object, e As EventArgs) Handles OptionCookie.Click 584 | TextOpenAICookie.Visible = True 585 | TextOpenAIAcc.Visible = False 586 | TextOpenAIPass.Visible = False 587 | GetCookie.Visible = True 588 | CheckIsPlus.Enabled = True 589 | CheckIsPlus.Text = "Plus账号" 590 | GroupLogin.Height = 208 591 | cookie = " --accessToken " & TextOpenAICookie.Text 592 | account = "" 593 | passwd = "" 594 | plusVer = "" 595 | If CheckIsPlus.Checked Then 596 | plusVer = " --paid True" 597 | Else 598 | plusVer = " --paid False" 599 | End If 600 | UpdateCommand() 601 | End Sub 602 | 603 | Private Sub OptionAccAndPass_CheckedChanged(sender As Object, e As EventArgs) Handles OptionAccAndPass.CheckedChanged 604 | 605 | End Sub 606 | 607 | Private Sub OptionAccAndPass_CheckedChanged_1(sender As Object, e As EventArgs) Handles OptionAccAndPass.Click 608 | TextOpenAICookie.Visible = False 609 | TextOpenAIAcc.Visible = True 610 | GetCookie.Visible = False 611 | CheckIsPlus.Enabled = False 612 | CheckIsPlus.Text = "Plus账号(暂不可用)" 613 | plusVer = " --paid False" 614 | TextOpenAIPass.Visible = True 615 | GroupLogin.Height = 208 616 | account = " --email " & TextOpenAIAcc.Text 617 | passwd = " --password " & TextOpenAIPass.Text 618 | 'If CheckIsPlus.Checked Then 619 | ' plusVer = " --paid True" 620 | 'Else 621 | ' plusVer = " --paid False" 622 | 'End If 623 | cookie = "" 624 | 625 | UpdateCommand() 626 | End Sub 627 | 628 | Sub UpdateCommand() 629 | If TextAPIKey.Text = "" Then 630 | apiKey = "" 631 | End If 632 | If TextOpenAIAcc.Text = "" Then 633 | account = "" 634 | End If 635 | 636 | If TextOpenAIPass.Text = "" Then 637 | passwd = "" 638 | End If 639 | 640 | If TextOpenAICookie.Text = "" Then 641 | cookie = "" 642 | End If 643 | 644 | If TextProxServer.Text = "" Then 645 | proxy = "" 646 | End If 647 | 648 | 649 | para.Text = "SocketServer.exe " & chatVer & apiKey & account & ip & passwd & cookie & proxy & plusVer & brainWash & mode & stream & chara 650 | Log("Command update:" & para.Text) 651 | 652 | End Sub 653 | 654 | Private Sub CloseForm() Handles Me.FormClosed 655 | 656 | Shell("cmd /c taskkill /f /t /im SocketServer.exe", vbHide) 657 | Shell("cmd /c taskkill /f /t /im Launcher.exe", vbHide) 658 | 659 | End Sub 660 | 661 | Sub SaveConfig() 662 | 'Log("Save all config.") 663 | 664 | If OptionWeb.Checked Then 665 | WriteConfig("uiconfig", "chatver", "1", configFile) 666 | Else 667 | WriteConfig("uiconfig", "chatver", "3", configFile) 668 | End If 669 | 670 | WriteConfig("uiconfig", "apikey", TextAPIKey.Text, configFile) 671 | WriteConfig("uiconfig", "acco", TextOpenAIAcc.Text, configFile) 672 | WriteConfig("uiconfig", "password", TextOpenAIPass.Text, configFile) 673 | WriteConfig("uiconfig", "accesstoken", TextOpenAICookie.Text, configFile) 674 | WriteConfig("uiconfig", "proxy", TextProxServer.Text, configFile) 675 | WriteConfig("uiconfig", "model", ComboModSelect.Text, configFile) 676 | 677 | If CheckStream.Checked Then 678 | WriteConfig("uiconfig", "stream", "True", configFile) 679 | Else 680 | WriteConfig("uiconfig", "stream", "False", configFile) 681 | 682 | End If 683 | 684 | WriteConfig("uiconfig", "character", ComboCharacterSelect.Text, configFile) 685 | 686 | If CheckLog.Checked Then 687 | 688 | WriteConfig("uiconfig", "showlog", "True", configFile) 689 | 690 | Else 691 | WriteConfig("uiconfig", "showlog", "False", configFile) 692 | 693 | End If 694 | End Sub 695 | 696 | End Class 697 | 698 | 699 | 700 | '"--chatVer", type = int, required = True) 接入chatgpt版本,1为网页版,3为api版 701 | ' "--APIKey", type = str, required = False) chatVer=3专用:openAI的API Key, 不填就用我们的服务器, 有流量限制。 702 | ' "--email", type = str, required = False) chatVer=1专用:openAI账号 703 | '"--password", type = str, required = False) chatVer=1专用:openAI密码 704 | '"--accessToken", type = str, required = False) chatVer=1专用:openAI cookie, 705 | ' "--proxy", type=str, required=False) 代理服务器链接,用clash可以设置成127.0.0.1:7890 706 | ' "--paid", type = bool, required = False) chatVer=1专用:是否为plus账号 True / False 707 | ' "--model", type = str, required = False) 模型选择,chatVer=1时且 708 | ' "--stream", type = bool, required = True) 是否流式输出语音 True/False 709 | ' "--character", type = str, required = True) 角色选择,现在有两个 paimon yunfei -------------------------------------------------------------------------------- /Launcher/Launcher.vbproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {5C99C784-1B0E-4B0A-BDB6-7A276BDC633E} 8 | WinExe 9 | Launcher.My.MyApplication 10 | Launcher 11 | Launcher 12 | 512 13 | WindowsForms 14 | v4.6.2 15 | true 16 | true 17 | publish\ 18 | true 19 | Disk 20 | false 21 | Foreground 22 | 7 23 | Days 24 | false 25 | false 26 | true 27 | 0 28 | 1.0.0.%2a 29 | false 30 | false 31 | true 32 | 33 | 34 | AnyCPU 35 | true 36 | full 37 | true 38 | true 39 | bin\Debug\ 40 | Launcher.xml 41 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 42 | 43 | 44 | AnyCPU 45 | pdbonly 46 | false 47 | true 48 | true 49 | bin\Release\ 50 | Launcher.xml 51 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 52 | 53 | 54 | On 55 | 56 | 57 | Binary 58 | 59 | 60 | Off 61 | 62 | 63 | On 64 | 65 | 66 | true 67 | true 68 | true 69 | bin\x64\Debug\ 70 | Launcher.xml 71 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 72 | full 73 | x64 74 | MinimumRecommendedRules.ruleset 75 | true 76 | 77 | 78 | true 79 | bin\x64\Release\ 80 | Launcher.xml 81 | true 82 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 83 | pdbonly 84 | x64 85 | MinimumRecommendedRules.ruleset 86 | true 87 | 88 | 89 | 90 | ..\packages\MaterialSkin.2.2.3.1\lib\net461\MaterialSkin.dll 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | AndroidApk.vb 120 | 121 | 122 | Form 123 | 124 | 125 | Form 126 | 127 | 128 | Form1.vb 129 | Form 130 | 131 | 132 | 133 | True 134 | Application.myapp 135 | 136 | 137 | True 138 | True 139 | Resources.resx 140 | 141 | 142 | True 143 | Settings.settings 144 | True 145 | 146 | 147 | 148 | PromptEditor.vb 149 | 150 | 151 | Form 152 | 153 | 154 | 155 | 156 | 157 | AndroidApk.vb 158 | 159 | 160 | Form1.vb 161 | 162 | 163 | VbMyResourcesResXFileCodeGenerator 164 | Resources.Designer.vb 165 | My.Resources 166 | Designer 167 | 168 | 169 | PromptEditor.vb 170 | 171 | 172 | 173 | 174 | MyApplicationCodeGenerator 175 | Application.Designer.vb 176 | 177 | 178 | SettingsSingleFileGenerator 179 | My 180 | Settings.Designer.vb 181 | 182 | 183 | Designer 184 | 185 | 186 | 187 | 188 | 189 | False 190 | Microsoft .NET Framework 4.6.2 %28x86 和 x64%29 191 | true 192 | 193 | 194 | False 195 | .NET Framework 3.5 SP1 196 | false 197 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /Launcher/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes, 18 | ' or if you encounter build errors in this file, go to the Project Designer 19 | ' (go to Project Properties or double-click the My Project node in 20 | ' Solution Explorer), and make changes on the Application tab. 21 | ' 22 | Partial Friend Class MyApplication 23 | 24 | _ 25 | Public Sub New() 26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) 27 | Me.IsSingleInstance = false 28 | Me.EnableVisualStyles = true 29 | Me.SaveMySettingsOnExit = true 30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses 31 | End Sub 32 | 33 | _ 34 | Protected Overrides Sub OnCreateMainForm() 35 | Me.MainForm = Global.Launcher.Login 36 | End Sub 37 | End Class 38 | End Namespace 39 | -------------------------------------------------------------------------------- /Launcher/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 |  2 | 3 | true 4 | Form1 5 | false 6 | 0 7 | true 8 | 0 9 | 0 10 | true 11 | 12 | -------------------------------------------------------------------------------- /Launcher/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' 有关程序集的一般信息由以下 6 | ' 控制。更改这些特性值可修改 7 | ' 与程序集关联的信息。 8 | 9 | '查看程序集特性的值 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | '如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 21 | 22 | 23 | ' 程序集的版本信息由下列四个值组成: 24 | ' 25 | ' 主版本 26 | ' 次版本 27 | ' 生成号 28 | ' 修订号 29 | ' 30 | ' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 31 | ' 方法是按如下所示使用“*”: : 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Launcher/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My.Resources 16 | 17 | 'This class was auto-generated by the StronglyTypedResourceBuilder 18 | 'class via a tool like ResGen or Visual Studio. 19 | 'To add or remove a member, edit your .ResX file then rerun ResGen 20 | 'with the /str option, or rebuild your VS project. 21 | ''' 22 | ''' A strongly-typed resource class, for looking up localized strings, etc. 23 | ''' 24 | _ 28 | Friend Module Resources 29 | 30 | Private resourceMan As Global.System.Resources.ResourceManager 31 | 32 | Private resourceCulture As Global.System.Globalization.CultureInfo 33 | 34 | ''' 35 | ''' Returns the cached ResourceManager instance used by this class. 36 | ''' 37 | _ 38 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 39 | Get 40 | If Object.ReferenceEquals(resourceMan, Nothing) Then 41 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Launcher.Resources", GetType(Resources).Assembly) 42 | resourceMan = temp 43 | End If 44 | Return resourceMan 45 | End Get 46 | End Property 47 | 48 | ''' 49 | ''' Overrides the current thread's CurrentUICulture property for all 50 | ''' resource lookups using this strongly typed resource class. 51 | ''' 52 | _ 53 | Friend Property Culture() As Global.System.Globalization.CultureInfo 54 | Get 55 | Return resourceCulture 56 | End Get 57 | Set(ByVal value As Global.System.Globalization.CultureInfo) 58 | resourceCulture = value 59 | End Set 60 | End Property 61 | End Module 62 | End Namespace 63 | -------------------------------------------------------------------------------- /Launcher/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Launcher/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' 此代码由工具生成。 4 | ' 运行时版本:4.0.30319.42000 5 | ' 6 | ' 对此文件的更改可能会导致不正确的行为,并且如果 7 | ' 重新生成代码,这些更改将会丢失。 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings 自动保存功能" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.Launcher.My.MySettings 68 | Get 69 | Return Global.Launcher.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /Launcher/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Launcher/ProfileExecutor.vb: -------------------------------------------------------------------------------- 1 | Imports System.Net 2 | Imports System.Net.Sockets 3 | Imports MaterialSkin.Controls 4 | 5 | Module ProfileExecutor 6 | 7 | Public Declare Function GetConfigInfo Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, 8 | ByVal lpKeyName As String, 9 | ByVal lpDefault As String, 10 | ByVal lpReturnedString As String, 11 | ByVal nSize As Integer, 12 | ByVal lpFileName As String) As Integer 13 | 14 | Public Declare Function WriteConfigInfo Lib “kernel32” Alias “WritePrivateProfileStringA” (ByVal lpApplicationName As String, 15 | ByVal lpKeyName As String, 16 | ByVal lpString As String, 17 | ByVal lpFileName As String) As Integer 18 | 19 | Public Function ReadConfig(AppName As String, keyName As String, file As String) 20 | Dim Str As String = LSet(Str, 256) 21 | GetConfigInfo(AppName, keyName, "N/A", Str, Len(Str), file) 22 | Return Left(Str, InStr(Str, Chr(0)) - 1) 23 | 24 | End Function 25 | 26 | 27 | Public Sub WriteConfig(AppName As String, keyName As String, value As String, file As String) 28 | WriteConfigInfo(AppName, keyName, value, file) 29 | End Sub 30 | 31 | Public Function Msgbox2(form As Form, title As String, content As String, Optional okBtn As String = "确定", Optional cancel As Boolean = False, Optional noBtn As String = "取消") As String 32 | Dim ms As New MaterialDialog(form, title, content, okBtn, cancel, noBtn) 33 | Dim result As DialogResult = ms.ShowDialog(form) 34 | Return result.ToString 35 | End Function 36 | 37 | Public Sub SnackBar(form As Form, content As String, Optional duration As Integer = 3000) 38 | Dim sb As New MaterialSnackBar(content, duration) 39 | sb.Show(form) 40 | End Sub 41 | 42 | Public Function GetIpAddress() 43 | Dim hostName As String = Dns.GetHostName() 44 | Dim ipList As New List(Of String) 45 | For Each ipAddress As IPAddress In Dns.GetHostEntry(hostName).AddressList 46 | If ipAddress.AddressFamily = AddressFamily.InterNetwork Then 47 | ipList.Add(ipAddress.ToString()) 48 | End If 49 | Next 50 | Return ipList 51 | End Function 52 | End Module 53 | -------------------------------------------------------------------------------- /Launcher/PromptEditor.Designer.vb: -------------------------------------------------------------------------------- 1 |  _ 2 | Partial Class PromptEditor 3 | 'Inherits System.Windows.Forms.Form 4 | Inherits MaterialSkin.Controls.MaterialForm 5 | 6 | 'Form 重写 Dispose,以清理组件列表。 7 | _ 8 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 9 | Try 10 | If disposing AndAlso components IsNot Nothing Then 11 | components.Dispose() 12 | End If 13 | Finally 14 | MyBase.Dispose(disposing) 15 | End Try 16 | End Sub 17 | 18 | 'Windows 窗体设计器所必需的 19 | Private components As System.ComponentModel.IContainer 20 | 21 | '注意: 以下过程是 Windows 窗体设计器所必需的 22 | '可以使用 Windows 窗体设计器修改它。 23 | '不要使用代码编辑器修改它。 24 | _ 25 | Private Sub InitializeComponent() 26 | Me.Save = New MaterialSkin.Controls.MaterialButton() 27 | Me.Restore = New MaterialSkin.Controls.MaterialButton() 28 | Me.PromptTextBox = New System.Windows.Forms.TextBox() 29 | Me.ActionBar = New System.Windows.Forms.Label() 30 | Me.MaterialButton1 = New MaterialSkin.Controls.MaterialButton() 31 | Me.SuspendLayout() 32 | ' 33 | 'Save 34 | ' 35 | Me.Save.AutoSize = False 36 | Me.Save.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 37 | Me.Save.CharacterCasing = MaterialSkin.Controls.MaterialButton.CharacterCasingEnum.Lower 38 | Me.Save.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 39 | Me.Save.Depth = 0 40 | Me.Save.FlatStyle = System.Windows.Forms.FlatStyle.Popup 41 | Me.Save.HighEmphasis = True 42 | Me.Save.Icon = Nothing 43 | Me.Save.Location = New System.Drawing.Point(128, 784) 44 | Me.Save.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 45 | Me.Save.MouseState = MaterialSkin.MouseState.HOVER 46 | Me.Save.Name = "Save" 47 | Me.Save.NoAccentTextColor = System.Drawing.Color.Empty 48 | Me.Save.Size = New System.Drawing.Size(152, 40) 49 | Me.Save.TabIndex = 40 50 | Me.Save.Text = "保存" 51 | Me.Save.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 52 | Me.Save.UseAccentColor = False 53 | Me.Save.UseVisualStyleBackColor = True 54 | ' 55 | 'Restore 56 | ' 57 | Me.Restore.AutoSize = False 58 | Me.Restore.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 59 | Me.Restore.CharacterCasing = MaterialSkin.Controls.MaterialButton.CharacterCasingEnum.Lower 60 | Me.Restore.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 61 | Me.Restore.Depth = 0 62 | Me.Restore.FlatStyle = System.Windows.Forms.FlatStyle.Popup 63 | Me.Restore.HighEmphasis = True 64 | Me.Restore.Icon = Nothing 65 | Me.Restore.Location = New System.Drawing.Point(328, 784) 66 | Me.Restore.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 67 | Me.Restore.MouseState = MaterialSkin.MouseState.HOVER 68 | Me.Restore.Name = "Restore" 69 | Me.Restore.NoAccentTextColor = System.Drawing.Color.Empty 70 | Me.Restore.Size = New System.Drawing.Size(152, 40) 71 | Me.Restore.TabIndex = 41 72 | Me.Restore.Text = "恢复" 73 | Me.Restore.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 74 | Me.Restore.UseAccentColor = False 75 | Me.Restore.UseVisualStyleBackColor = True 76 | ' 77 | 'PromptTextBox 78 | ' 79 | Me.PromptTextBox.BackColor = System.Drawing.Color.FromArgb(CType(CType(242, Byte), Integer), CType(CType(242, Byte), Integer), CType(CType(242, Byte), Integer)) 80 | Me.PromptTextBox.Font = New System.Drawing.Font("微软雅黑", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 81 | Me.PromptTextBox.ForeColor = System.Drawing.Color.Black 82 | Me.PromptTextBox.Location = New System.Drawing.Point(16, 88) 83 | Me.PromptTextBox.Multiline = True 84 | Me.PromptTextBox.Name = "PromptTextBox" 85 | Me.PromptTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical 86 | Me.PromptTextBox.Size = New System.Drawing.Size(576, 680) 87 | Me.PromptTextBox.TabIndex = 42 88 | ' 89 | 'ActionBar 90 | ' 91 | Me.ActionBar.BackColor = System.Drawing.Color.FromArgb(CType(CType(63, Byte), Integer), CType(CType(81, Byte), Integer), CType(CType(181, Byte), Integer)) 92 | Me.ActionBar.Font = New System.Drawing.Font("微软雅黑", 15.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 93 | Me.ActionBar.ForeColor = System.Drawing.SystemColors.ButtonHighlight 94 | Me.ActionBar.Location = New System.Drawing.Point(0, 24) 95 | Me.ActionBar.Name = "ActionBar" 96 | Me.ActionBar.Size = New System.Drawing.Size(1128, 48) 97 | Me.ActionBar.TabIndex = 43 98 | Me.ActionBar.Text = " 提示词编辑器" 99 | Me.ActionBar.TextAlign = System.Drawing.ContentAlignment.MiddleLeft 100 | ' 101 | 'MaterialButton1 102 | ' 103 | Me.MaterialButton1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink 104 | Me.MaterialButton1.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.[Default] 105 | Me.MaterialButton1.Depth = 0 106 | Me.MaterialButton1.HighEmphasis = True 107 | Me.MaterialButton1.Icon = Nothing 108 | Me.MaterialButton1.Location = New System.Drawing.Point(560, 880) 109 | Me.MaterialButton1.Margin = New System.Windows.Forms.Padding(4, 6, 4, 6) 110 | Me.MaterialButton1.MouseState = MaterialSkin.MouseState.HOVER 111 | Me.MaterialButton1.Name = "MaterialButton1" 112 | Me.MaterialButton1.NoAccentTextColor = System.Drawing.Color.Empty 113 | Me.MaterialButton1.Size = New System.Drawing.Size(154, 36) 114 | Me.MaterialButton1.TabIndex = 1 115 | Me.MaterialButton1.Text = "MaterialButton1" 116 | Me.MaterialButton1.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained 117 | Me.MaterialButton1.UseAccentColor = False 118 | Me.MaterialButton1.UseVisualStyleBackColor = True 119 | ' 120 | 'PromptEditor 121 | ' 122 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) 123 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 124 | Me.ClientSize = New System.Drawing.Size(606, 841) 125 | Me.Controls.Add(Me.MaterialButton1) 126 | Me.Controls.Add(Me.ActionBar) 127 | Me.Controls.Add(Me.PromptTextBox) 128 | Me.Controls.Add(Me.Restore) 129 | Me.Controls.Add(Me.Save) 130 | Me.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None 131 | Me.MaximizeBox = False 132 | Me.Name = "PromptEditor" 133 | Me.Padding = New System.Windows.Forms.Padding(3, 26, 3, 3) 134 | Me.Sizable = False 135 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 136 | Me.Text = "PromptEditor" 137 | Me.ResumeLayout(False) 138 | Me.PerformLayout() 139 | 140 | End Sub 141 | 142 | Friend WithEvents Save As MaterialSkin.Controls.MaterialButton 143 | Friend WithEvents Restore As MaterialSkin.Controls.MaterialButton 144 | Friend WithEvents PromptTextBox As TextBox 145 | Friend WithEvents ActionBar As Label 146 | Friend WithEvents MaterialButton1 As MaterialSkin.Controls.MaterialButton 147 | End Class 148 | -------------------------------------------------------------------------------- /Launcher/PromptEditor.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /Launcher/PromptEditor.vb: -------------------------------------------------------------------------------- 1 | Imports System.IO 2 | Imports System.Threading 3 | 4 | Public Class PromptEditor 5 | Dim currentFile As String 6 | Private Sub PromptEditor_Load(sender As Object, e As EventArgs) Handles MyBase.Load 7 | Height = 840 8 | If Login.ComboModSelect.Text.Contains("3.5") Then 9 | ActionBar.Text = " 提示词编辑器 " & Login.ComboCharacterSelect.Text & "/" & Login.ComboModSelect.Text 10 | currentFile = Login.ComboCharacterSelect.Text & "35.txt" 11 | PromptTextBox.Text = File.ReadAllText("GPT\prompts\" & currentFile) 12 | Else 13 | 14 | If Login.ComboModSelect.Text.Contains("4") Then 15 | ActionBar.Text = " 提示词编辑器 " & Login.ComboCharacterSelect.Text & "/" & Login.ComboModSelect.Text 16 | currentFile = Login.ComboCharacterSelect.Text & "4.txt" 17 | PromptTextBox.Text = File.ReadAllText("GPT\prompts\" & currentFile) 18 | Else 19 | PromptTextBox.Text = "未找到提示词" 20 | End If 21 | End If 22 | End Sub 23 | 24 | Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click 25 | File.WriteAllText("GPT\prompts\" & currentFile, PromptTextBox.Text) 26 | Msgbox2(Me, "成功", "已保存!点击确定关闭窗口",, False, ) 27 | Close() 28 | End Sub 29 | 30 | Private Sub Restore_Click(sender As Object, e As EventArgs) Handles Restore.Click 31 | Dim confirm As String 32 | confirm = Msgbox2(Me, "提示", "要恢复原始提示词吗?当前提示词将被覆盖!",, True, ) 33 | If confirm = "OK" Then 34 | PromptTextBox.Text = "恢复中..." 35 | Dim uu As New Thread(AddressOf Startcopy) 36 | uu.Start() 37 | End If 38 | End Sub 39 | 40 | Sub Startcopy() 41 | Shell("cmd /c del GPT\prompts\" & currentFile, vbHide) 42 | Shell("cmd /c copy GPT\prompts_default\" & currentFile & " " & "GPT\prompts\" & currentFile) 43 | Thread.Sleep(1500) 44 | PromptTextBox.Text = File.ReadAllText("GPT\prompts\" & currentFile) 45 | End Sub 46 | End Class -------------------------------------------------------------------------------- /Launcher/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Launcher/runcmd.vb: -------------------------------------------------------------------------------- 1 | Module runcmd 2 | Public Function SC(ByVal strCMD As String) As String 3 | Dim p As New Process 4 | 5 | With p.StartInfo 6 | .FileName = "cmd.exe" 7 | .Arguments = "/c " + strCMD 8 | .UseShellExecute = False 9 | .RedirectStandardInput = True 10 | .RedirectStandardOutput = True 11 | .RedirectStandardError = True 12 | .CreateNoWindow = True 13 | End With 14 | p.Start() 15 | 16 | Dim result As String = p.StandardOutput.ReadToEnd() 17 | p.Close() 18 | Return result 19 | 20 | End Function 21 | 22 | Public Sub Log(content As String) 23 | IO.File.AppendAllText("loglauncher.log", Now.ToString("【yyyy-MM-dd HH:mm:ss】 ") & content & vbCrLf) 24 | End Sub 25 | 26 | End Module 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DL_Launcher 2 | #### 《数字生命》启动器 3 | 本项目使用了 [MaterialSkin.2](https://www.nuget.org/packages/MaterialSkin.2/) 主题,请导入项目后在NuGet管理器中添加即可构建运行。启动服务器功能依赖目录下的[SocketServer.exe](https://github.com/zixiiu/Digital_Life_Server),请构建后放入Release/Debug文件夹内即可。 4 | --------------------------------------------------------------------------------