├── .gitignore ├── LICENSE ├── MyLinkToken.sln ├── MyLinkToken ├── Doc │ ├── ChangeLog.txt │ └── Readme.txt ├── FormMain.Designer.cs ├── FormMain.cs ├── FormMain.resx ├── FormPassword.Designer.cs ├── FormPassword.cs ├── FormPassword.resx ├── FormQRCode.Designer.cs ├── FormQRCode.cs ├── FormQRCode.resx ├── FormRename.Designer.cs ├── FormRename.cs ├── FormRename.resx ├── FormSend.Designer.cs ├── FormSend.cs ├── FormSend.resx ├── Helpers │ └── Common.cs ├── LinkClass │ ├── TransactionEx.cs │ └── TransactionRecordsModel.cs ├── MyLinkToken.csproj ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── AllIn_48px.png │ ├── Copy_48px.png │ ├── Edit Property_48px.png │ ├── InstallProgress.gif │ ├── QR Code_48px.png │ ├── backgroud.png │ ├── dialog-error-5.png │ ├── dialog-information-4.png │ └── dialog-warning-3.png ├── WinFormEx │ ├── AnimateWindows.cs │ ├── EasyMsg.cs │ ├── FormBugReport.Designer.cs │ ├── FormBugReport.cs │ ├── FormBugReport.resx │ ├── FormMsg.Designer.cs │ ├── FormMsg.cs │ ├── FormMsg.resx │ ├── FormPop.Designer.cs │ ├── FormPop.cs │ ├── FormPop.resx │ ├── FormSplash.Designer.cs │ ├── FormSplash.cs │ └── FormSplash.resx ├── app.config ├── logo_ico.ico └── packages.config ├── README.md ├── backgroud.png ├── logo_ico.ico └── see.gif /.gitignore: -------------------------------------------------------------------------------- 1 | packages 2 | bin 3 | obj 4 | /PublishKit 5 | /.vs 6 | -------------------------------------------------------------------------------- /MyLinkToken.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27004.2002 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyLinkToken", "MyLinkToken\MyLinkToken.csproj", "{7AD03D1B-F566-4982-BB9B-7BC565725A81}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {7AD03D1B-F566-4982-BB9B-7BC565725A81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {7AD03D1B-F566-4982-BB9B-7BC565725A81}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {7AD03D1B-F566-4982-BB9B-7BC565725A81}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {7AD03D1B-F566-4982-BB9B-7BC565725A81}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {482E06F2-144D-49F3-B7EF-2E31918BC802} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /MyLinkToken/Doc/ChangeLog.txt: -------------------------------------------------------------------------------- 1 | 更新说明: 2 | var 1.3(2018-02-04) 3 | [+] 复制账户 4 | [+] 账户二维码 5 | [+] 一键转出全部余额 6 | [+] 自定义账户别名 7 | 8 | var 1.2(2018-02-03) 9 | [+] 新建账户功能 10 | [+] 交易记录查询 11 | 12 | var 1.1(2018-01-31) 13 | [+] 内置XXX,绕开IP限制 14 | 15 | ver 1.0(2018-01-29) 16 | 第一版本正式发布!!! 17 | [*] 实现钱包文件导入,备份,删除功能 18 | [*] 实现链克口袋转赠功能 19 | 20 | 21 | 22 | ver 1.0.0.0(yyyy-MM-dd) 23 | ------------------------- 24 | [*] 常规更新 25 | [+] 增加内容 26 | [-] 移除内容 27 | [#] 其它更新 -------------------------------------------------------------------------------- /MyLinkToken/Doc/Readme.txt: -------------------------------------------------------------------------------- 1 | //-----------------------------------------------------------------------------// 2 | // // 3 | // Copyright © 2018 wankeyun.cc. All rights reserved. // 4 | // // 5 | //-----------------------------------------------------------------------------// 6 | 7 | 8 | ++ 功能说明 ++ 9 | 10 | 一、链克口袋账户管理:导入、导出(备份)、删除 11 | 二、导入账户文件存放在根目录的“keystore”文件夹下 12 | 三、每次转赠需要输入密码,程序不保存,不传输您的密码 13 | 四、代码开源:https://github.com/ImbaQ/MyLinkToken 14 | 五、程序已实现链克转赠,并且无需实名,无需实名,无需实名! 15 | 16 | 17 | ++ 常见问题 ++ 18 | 19 | 软件无法运行请安装 Microsoft .NET Framework 4.6 20 | https://www.microsoft.com/zh-cn/download/details.aspx?id=49982 21 | 22 | 23 | ++ 软件主页 ++ 24 | 25 | http://www.wankeyun.cc 26 | 27 | 28 | ++ 联系方式 ++ 29 | 30 | QQ号: 1299071860 31 | QQ群: 32 | 迅雷养鸽技术群(2000人大群):646128 (点击链接加入群【迅雷养鸽技术群】:https://jq.qq.com/?_wv=1027&k=5zFKOru) 33 | MyLinkToken用户交流①:150090828 (点击链接加入群【MyLinkToken用户交流①】:https://jq.qq.com/?_wv=1027&k=5Xfxq3Y) -------------------------------------------------------------------------------- /MyLinkToken/FormMain.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken 2 | { 3 | partial class FormMain 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); 32 | this.listBoxAccount = new System.Windows.Forms.ListBox(); 33 | this.btnImport = new System.Windows.Forms.Button(); 34 | this.btnExport = new System.Windows.Forms.Button(); 35 | this.btnDelete = new System.Windows.Forms.Button(); 36 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 37 | this.groupBox2 = new System.Windows.Forms.GroupBox(); 38 | this.lbRename = new System.Windows.Forms.Label(); 39 | this.label7 = new System.Windows.Forms.Label(); 40 | this.btnRename = new System.Windows.Forms.Button(); 41 | this.btnAll = new System.Windows.Forms.Button(); 42 | this.btnCopy = new System.Windows.Forms.Button(); 43 | this.btnQRCode = new System.Windows.Forms.Button(); 44 | this.btnSend = new System.Windows.Forms.Button(); 45 | this.txtToNum = new System.Windows.Forms.TextBox(); 46 | this.label5 = new System.Windows.Forms.Label(); 47 | this.txtToAddress = new System.Windows.Forms.TextBox(); 48 | this.label6 = new System.Windows.Forms.Label(); 49 | this.lbAddress = new System.Windows.Forms.Label(); 50 | this.label4 = new System.Windows.Forms.Label(); 51 | this.lbMoney = new System.Windows.Forms.Label(); 52 | this.label1 = new System.Windows.Forms.Label(); 53 | this.groupBox3 = new System.Windows.Forms.GroupBox(); 54 | this.richTextBox1 = new System.Windows.Forms.RichTextBox(); 55 | this.linkLabel1 = new System.Windows.Forms.LinkLabel(); 56 | this.tabControl1 = new System.Windows.Forms.TabControl(); 57 | this.tabPage1 = new System.Windows.Forms.TabPage(); 58 | this.tabPage2 = new System.Windows.Forms.TabPage(); 59 | this.webBrowser1 = new System.Windows.Forms.WebBrowser(); 60 | this.btnSearch = new System.Windows.Forms.Button(); 61 | this.txtAddresSearch = new System.Windows.Forms.TextBox(); 62 | this.label2 = new System.Windows.Forms.Label(); 63 | this.groupBox1.SuspendLayout(); 64 | this.groupBox2.SuspendLayout(); 65 | this.groupBox3.SuspendLayout(); 66 | this.tabControl1.SuspendLayout(); 67 | this.tabPage1.SuspendLayout(); 68 | this.tabPage2.SuspendLayout(); 69 | this.SuspendLayout(); 70 | // 71 | // listBoxAccount 72 | // 73 | this.listBoxAccount.Font = new System.Drawing.Font("新宋体", 11F); 74 | this.listBoxAccount.FormattingEnabled = true; 75 | this.listBoxAccount.ItemHeight = 15; 76 | this.listBoxAccount.Items.AddRange(new object[] { 77 | "0"}); 78 | this.listBoxAccount.Location = new System.Drawing.Point(5, 19); 79 | this.listBoxAccount.Name = "listBoxAccount"; 80 | this.listBoxAccount.Size = new System.Drawing.Size(345, 319); 81 | this.listBoxAccount.TabIndex = 1; 82 | this.listBoxAccount.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.listBoxAccount_MeasureItem); 83 | this.listBoxAccount.SelectedIndexChanged += new System.EventHandler(this.listBoxAccount_SelectedIndexChanged); 84 | // 85 | // btnImport 86 | // 87 | this.btnImport.Location = new System.Drawing.Point(95, 343); 88 | this.btnImport.Name = "btnImport"; 89 | this.btnImport.Size = new System.Drawing.Size(75, 35); 90 | this.btnImport.TabIndex = 2; 91 | this.btnImport.Text = "导入账户"; 92 | this.btnImport.UseVisualStyleBackColor = true; 93 | this.btnImport.Click += new System.EventHandler(this.btnImport_Click); 94 | // 95 | // btnExport 96 | // 97 | this.btnExport.Location = new System.Drawing.Point(185, 343); 98 | this.btnExport.Name = "btnExport"; 99 | this.btnExport.Size = new System.Drawing.Size(75, 35); 100 | this.btnExport.TabIndex = 4; 101 | this.btnExport.Text = "备份账户"; 102 | this.btnExport.UseVisualStyleBackColor = true; 103 | this.btnExport.Click += new System.EventHandler(this.btnExport_Click); 104 | // 105 | // btnDelete 106 | // 107 | this.btnDelete.Location = new System.Drawing.Point(275, 343); 108 | this.btnDelete.Name = "btnDelete"; 109 | this.btnDelete.Size = new System.Drawing.Size(75, 35); 110 | this.btnDelete.TabIndex = 5; 111 | this.btnDelete.Text = "删除账户"; 112 | this.btnDelete.UseVisualStyleBackColor = true; 113 | this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); 114 | // 115 | // groupBox1 116 | // 117 | this.groupBox1.Controls.Add(this.listBoxAccount); 118 | this.groupBox1.Controls.Add(this.btnDelete); 119 | this.groupBox1.Controls.Add(this.btnImport); 120 | this.groupBox1.Controls.Add(this.btnExport); 121 | this.groupBox1.Font = new System.Drawing.Font("宋体", 11F); 122 | this.groupBox1.Location = new System.Drawing.Point(5, 6); 123 | this.groupBox1.Name = "groupBox1"; 124 | this.groupBox1.Size = new System.Drawing.Size(355, 384); 125 | this.groupBox1.TabIndex = 6; 126 | this.groupBox1.TabStop = false; 127 | this.groupBox1.Text = "口袋管理:"; 128 | // 129 | // groupBox2 130 | // 131 | this.groupBox2.Controls.Add(this.lbRename); 132 | this.groupBox2.Controls.Add(this.label7); 133 | this.groupBox2.Controls.Add(this.btnRename); 134 | this.groupBox2.Controls.Add(this.btnAll); 135 | this.groupBox2.Controls.Add(this.btnCopy); 136 | this.groupBox2.Controls.Add(this.btnQRCode); 137 | this.groupBox2.Controls.Add(this.btnSend); 138 | this.groupBox2.Controls.Add(this.txtToNum); 139 | this.groupBox2.Controls.Add(this.label5); 140 | this.groupBox2.Controls.Add(this.txtToAddress); 141 | this.groupBox2.Controls.Add(this.label6); 142 | this.groupBox2.Controls.Add(this.lbAddress); 143 | this.groupBox2.Controls.Add(this.label4); 144 | this.groupBox2.Controls.Add(this.lbMoney); 145 | this.groupBox2.Controls.Add(this.label1); 146 | this.groupBox2.Font = new System.Drawing.Font("宋体", 11F); 147 | this.groupBox2.Location = new System.Drawing.Point(364, 6); 148 | this.groupBox2.Name = "groupBox2"; 149 | this.groupBox2.Size = new System.Drawing.Size(490, 183); 150 | this.groupBox2.TabIndex = 7; 151 | this.groupBox2.TabStop = false; 152 | this.groupBox2.Text = "链克转赠"; 153 | // 154 | // lbRename 155 | // 156 | this.lbRename.AutoSize = true; 157 | this.lbRename.Location = new System.Drawing.Point(328, 23); 158 | this.lbRename.Name = "lbRename"; 159 | this.lbRename.Size = new System.Drawing.Size(15, 15); 160 | this.lbRename.TabIndex = 14; 161 | this.lbRename.Text = "0"; 162 | // 163 | // label7 164 | // 165 | this.label7.AutoSize = true; 166 | this.label7.Location = new System.Drawing.Point(256, 23); 167 | this.label7.Name = "label7"; 168 | this.label7.Size = new System.Drawing.Size(82, 15); 169 | this.label7.TabIndex = 13; 170 | this.label7.Text = "账户别名:"; 171 | // 172 | // btnRename 173 | // 174 | this.btnRename.BackgroundImage = global::MyLinkToken.Properties.Resources.Edit_Property_48px; 175 | this.btnRename.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 176 | this.btnRename.Cursor = System.Windows.Forms.Cursors.Hand; 177 | this.btnRename.FlatAppearance.BorderSize = 0; 178 | this.btnRename.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 179 | this.btnRename.Location = new System.Drawing.Point(463, 19); 180 | this.btnRename.Name = "btnRename"; 181 | this.btnRename.Size = new System.Drawing.Size(22, 22); 182 | this.btnRename.TabIndex = 12; 183 | this.btnRename.UseVisualStyleBackColor = true; 184 | this.btnRename.Click += new System.EventHandler(this.btnRename_Click); 185 | // 186 | // btnAll 187 | // 188 | this.btnAll.BackgroundImage = global::MyLinkToken.Properties.Resources.AllIn_48px; 189 | this.btnAll.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 190 | this.btnAll.Cursor = System.Windows.Forms.Cursors.Hand; 191 | this.btnAll.FlatAppearance.BorderSize = 0; 192 | this.btnAll.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 193 | this.btnAll.Location = new System.Drawing.Point(463, 110); 194 | this.btnAll.Name = "btnAll"; 195 | this.btnAll.Size = new System.Drawing.Size(22, 22); 196 | this.btnAll.TabIndex = 11; 197 | this.btnAll.UseVisualStyleBackColor = true; 198 | this.btnAll.Click += new System.EventHandler(this.btnAll_Click); 199 | // 200 | // btnCopy 201 | // 202 | this.btnCopy.BackgroundImage = global::MyLinkToken.Properties.Resources.Copy_48px; 203 | this.btnCopy.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 204 | this.btnCopy.Cursor = System.Windows.Forms.Cursors.Hand; 205 | this.btnCopy.FlatAppearance.BorderSize = 0; 206 | this.btnCopy.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 207 | this.btnCopy.Location = new System.Drawing.Point(440, 50); 208 | this.btnCopy.Name = "btnCopy"; 209 | this.btnCopy.Size = new System.Drawing.Size(22, 22); 210 | this.btnCopy.TabIndex = 10; 211 | this.btnCopy.UseVisualStyleBackColor = true; 212 | this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click); 213 | // 214 | // btnQRCode 215 | // 216 | this.btnQRCode.BackgroundImage = global::MyLinkToken.Properties.Resources.QR_Code_48px; 217 | this.btnQRCode.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 218 | this.btnQRCode.Cursor = System.Windows.Forms.Cursors.Hand; 219 | this.btnQRCode.FlatAppearance.BorderSize = 0; 220 | this.btnQRCode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 221 | this.btnQRCode.Location = new System.Drawing.Point(463, 50); 222 | this.btnQRCode.Name = "btnQRCode"; 223 | this.btnQRCode.Size = new System.Drawing.Size(22, 22); 224 | this.btnQRCode.TabIndex = 9; 225 | this.btnQRCode.UseVisualStyleBackColor = true; 226 | this.btnQRCode.Click += new System.EventHandler(this.btnQRCode_Click); 227 | // 228 | // btnSend 229 | // 230 | this.btnSend.Location = new System.Drawing.Point(5, 142); 231 | this.btnSend.Name = "btnSend"; 232 | this.btnSend.Size = new System.Drawing.Size(75, 35); 233 | this.btnSend.TabIndex = 8; 234 | this.btnSend.Text = "发起转赠"; 235 | this.btnSend.UseVisualStyleBackColor = true; 236 | this.btnSend.Click += new System.EventHandler(this.btnSend_Click); 237 | // 238 | // txtToNum 239 | // 240 | this.txtToNum.Location = new System.Drawing.Point(74, 110); 241 | this.txtToNum.Name = "txtToNum"; 242 | this.txtToNum.Size = new System.Drawing.Size(385, 24); 243 | this.txtToNum.TabIndex = 7; 244 | this.txtToNum.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtToNum_KeyPress); 245 | this.txtToNum.Validating += new System.ComponentModel.CancelEventHandler(this.txtToNum_Validating); 246 | // 247 | // label5 248 | // 249 | this.label5.AutoSize = true; 250 | this.label5.Location = new System.Drawing.Point(2, 113); 251 | this.label5.Name = "label5"; 252 | this.label5.Size = new System.Drawing.Size(82, 15); 253 | this.label5.TabIndex = 6; 254 | this.label5.Text = "转赠数量:"; 255 | // 256 | // txtToAddress 257 | // 258 | this.txtToAddress.Location = new System.Drawing.Point(74, 80); 259 | this.txtToAddress.Name = "txtToAddress"; 260 | this.txtToAddress.Size = new System.Drawing.Size(411, 24); 261 | this.txtToAddress.TabIndex = 5; 262 | // 263 | // label6 264 | // 265 | this.label6.AutoSize = true; 266 | this.label6.Location = new System.Drawing.Point(2, 83); 267 | this.label6.Name = "label6"; 268 | this.label6.Size = new System.Drawing.Size(82, 15); 269 | this.label6.TabIndex = 4; 270 | this.label6.Text = "接收账户:"; 271 | // 272 | // lbAddress 273 | // 274 | this.lbAddress.AutoSize = true; 275 | this.lbAddress.Location = new System.Drawing.Point(74, 53); 276 | this.lbAddress.Name = "lbAddress"; 277 | this.lbAddress.Size = new System.Drawing.Size(15, 15); 278 | this.lbAddress.TabIndex = 3; 279 | this.lbAddress.Text = "0"; 280 | // 281 | // label4 282 | // 283 | this.label4.AutoSize = true; 284 | this.label4.Location = new System.Drawing.Point(2, 53); 285 | this.label4.Name = "label4"; 286 | this.label4.Size = new System.Drawing.Size(82, 15); 287 | this.label4.TabIndex = 2; 288 | this.label4.Text = "转出账户:"; 289 | // 290 | // lbMoney 291 | // 292 | this.lbMoney.AutoSize = true; 293 | this.lbMoney.Location = new System.Drawing.Point(74, 23); 294 | this.lbMoney.Name = "lbMoney"; 295 | this.lbMoney.Size = new System.Drawing.Size(15, 15); 296 | this.lbMoney.TabIndex = 1; 297 | this.lbMoney.Text = "0"; 298 | // 299 | // label1 300 | // 301 | this.label1.AutoSize = true; 302 | this.label1.Location = new System.Drawing.Point(2, 23); 303 | this.label1.Name = "label1"; 304 | this.label1.Size = new System.Drawing.Size(82, 15); 305 | this.label1.TabIndex = 0; 306 | this.label1.Text = "账户余额:"; 307 | // 308 | // groupBox3 309 | // 310 | this.groupBox3.Controls.Add(this.richTextBox1); 311 | this.groupBox3.Font = new System.Drawing.Font("宋体", 11F); 312 | this.groupBox3.Location = new System.Drawing.Point(364, 195); 313 | this.groupBox3.Name = "groupBox3"; 314 | this.groupBox3.Size = new System.Drawing.Size(490, 195); 315 | this.groupBox3.TabIndex = 8; 316 | this.groupBox3.TabStop = false; 317 | this.groupBox3.Text = "操作日志"; 318 | // 319 | // richTextBox1 320 | // 321 | this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; 322 | this.richTextBox1.Location = new System.Drawing.Point(3, 20); 323 | this.richTextBox1.Name = "richTextBox1"; 324 | this.richTextBox1.Size = new System.Drawing.Size(484, 172); 325 | this.richTextBox1.TabIndex = 0; 326 | this.richTextBox1.Text = ""; 327 | this.richTextBox1.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged); 328 | // 329 | // linkLabel1 330 | // 331 | this.linkLabel1.AutoSize = true; 332 | this.linkLabel1.Location = new System.Drawing.Point(728, 423); 333 | this.linkLabel1.Name = "linkLabel1"; 334 | this.linkLabel1.Size = new System.Drawing.Size(137, 12); 335 | this.linkLabel1.TabIndex = 9; 336 | this.linkLabel1.TabStop = true; 337 | this.linkLabel1.Text = "玩客社区 - wankeyun.cc"; 338 | this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); 339 | // 340 | // tabControl1 341 | // 342 | this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 343 | | System.Windows.Forms.AnchorStyles.Left) 344 | | System.Windows.Forms.AnchorStyles.Right))); 345 | this.tabControl1.Controls.Add(this.tabPage1); 346 | this.tabControl1.Controls.Add(this.tabPage2); 347 | this.tabControl1.Location = new System.Drawing.Point(1, 1); 348 | this.tabControl1.Name = "tabControl1"; 349 | this.tabControl1.SelectedIndex = 0; 350 | this.tabControl1.Size = new System.Drawing.Size(864, 419); 351 | this.tabControl1.TabIndex = 10; 352 | // 353 | // tabPage1 354 | // 355 | this.tabPage1.Controls.Add(this.groupBox1); 356 | this.tabPage1.Controls.Add(this.groupBox2); 357 | this.tabPage1.Controls.Add(this.groupBox3); 358 | this.tabPage1.Location = new System.Drawing.Point(4, 22); 359 | this.tabPage1.Name = "tabPage1"; 360 | this.tabPage1.Padding = new System.Windows.Forms.Padding(3); 361 | this.tabPage1.Size = new System.Drawing.Size(856, 393); 362 | this.tabPage1.TabIndex = 0; 363 | this.tabPage1.Text = "链克口袋"; 364 | this.tabPage1.UseVisualStyleBackColor = true; 365 | // 366 | // tabPage2 367 | // 368 | this.tabPage2.Controls.Add(this.webBrowser1); 369 | this.tabPage2.Controls.Add(this.btnSearch); 370 | this.tabPage2.Controls.Add(this.txtAddresSearch); 371 | this.tabPage2.Controls.Add(this.label2); 372 | this.tabPage2.Location = new System.Drawing.Point(4, 22); 373 | this.tabPage2.Name = "tabPage2"; 374 | this.tabPage2.Padding = new System.Windows.Forms.Padding(3); 375 | this.tabPage2.Size = new System.Drawing.Size(856, 393); 376 | this.tabPage2.TabIndex = 1; 377 | this.tabPage2.Text = "区块链查询"; 378 | this.tabPage2.UseVisualStyleBackColor = true; 379 | // 380 | // webBrowser1 381 | // 382 | this.webBrowser1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 383 | | System.Windows.Forms.AnchorStyles.Right))); 384 | this.webBrowser1.Location = new System.Drawing.Point(3, 33); 385 | this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); 386 | this.webBrowser1.Name = "webBrowser1"; 387 | this.webBrowser1.Size = new System.Drawing.Size(850, 360); 388 | this.webBrowser1.TabIndex = 9; 389 | // 390 | // btnSearch 391 | // 392 | this.btnSearch.Location = new System.Drawing.Point(480, 10); 393 | this.btnSearch.Name = "btnSearch"; 394 | this.btnSearch.Size = new System.Drawing.Size(75, 23); 395 | this.btnSearch.TabIndex = 8; 396 | this.btnSearch.Text = "查 询"; 397 | this.btnSearch.UseVisualStyleBackColor = true; 398 | this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click); 399 | // 400 | // txtAddresSearch 401 | // 402 | this.txtAddresSearch.Location = new System.Drawing.Point(113, 12); 403 | this.txtAddresSearch.Name = "txtAddresSearch"; 404 | this.txtAddresSearch.Size = new System.Drawing.Size(352, 21); 405 | this.txtAddresSearch.TabIndex = 7; 406 | // 407 | // label2 408 | // 409 | this.label2.AutoSize = true; 410 | this.label2.Font = new System.Drawing.Font("宋体", 11F); 411 | this.label2.Location = new System.Drawing.Point(25, 15); 412 | this.label2.Name = "label2"; 413 | this.label2.Size = new System.Drawing.Size(82, 15); 414 | this.label2.TabIndex = 6; 415 | this.label2.Text = "链克地址:"; 416 | // 417 | // FormMain 418 | // 419 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 420 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 421 | this.ClientSize = new System.Drawing.Size(867, 439); 422 | this.Controls.Add(this.tabControl1); 423 | this.Controls.Add(this.linkLabel1); 424 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 425 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 426 | this.MaximizeBox = false; 427 | this.Name = "FormMain"; 428 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 429 | this.Text = "MyLinkToken - 开源链克口袋"; 430 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormMain_FormClosing); 431 | this.Load += new System.EventHandler(this.FormMain_Load); 432 | this.groupBox1.ResumeLayout(false); 433 | this.groupBox2.ResumeLayout(false); 434 | this.groupBox2.PerformLayout(); 435 | this.groupBox3.ResumeLayout(false); 436 | this.tabControl1.ResumeLayout(false); 437 | this.tabPage1.ResumeLayout(false); 438 | this.tabPage2.ResumeLayout(false); 439 | this.tabPage2.PerformLayout(); 440 | this.ResumeLayout(false); 441 | this.PerformLayout(); 442 | 443 | } 444 | 445 | #endregion 446 | private System.Windows.Forms.ListBox listBoxAccount; 447 | private System.Windows.Forms.Button btnImport; 448 | private System.Windows.Forms.Button btnExport; 449 | private System.Windows.Forms.Button btnDelete; 450 | private System.Windows.Forms.GroupBox groupBox1; 451 | private System.Windows.Forms.GroupBox groupBox2; 452 | private System.Windows.Forms.TextBox txtToNum; 453 | private System.Windows.Forms.Label label5; 454 | private System.Windows.Forms.TextBox txtToAddress; 455 | private System.Windows.Forms.Label label6; 456 | private System.Windows.Forms.Label lbAddress; 457 | private System.Windows.Forms.Label label4; 458 | private System.Windows.Forms.Label lbMoney; 459 | private System.Windows.Forms.Label label1; 460 | private System.Windows.Forms.Button btnSend; 461 | private System.Windows.Forms.GroupBox groupBox3; 462 | private System.Windows.Forms.RichTextBox richTextBox1; 463 | private System.Windows.Forms.LinkLabel linkLabel1; 464 | private System.Windows.Forms.TabControl tabControl1; 465 | private System.Windows.Forms.TabPage tabPage1; 466 | private System.Windows.Forms.TabPage tabPage2; 467 | private System.Windows.Forms.Button btnSearch; 468 | private System.Windows.Forms.TextBox txtAddresSearch; 469 | private System.Windows.Forms.Label label2; 470 | private System.Windows.Forms.WebBrowser webBrowser1; 471 | private System.Windows.Forms.Button btnQRCode; 472 | private System.Windows.Forms.Button btnCopy; 473 | private System.Windows.Forms.Button btnAll; 474 | private System.Windows.Forms.Button btnRename; 475 | private System.Windows.Forms.Label lbRename; 476 | private System.Windows.Forms.Label label7; 477 | } 478 | } -------------------------------------------------------------------------------- /MyLinkToken/FormMain.cs: -------------------------------------------------------------------------------- 1 | using Nethereum.Hex.HexTypes; 2 | using RestSharp; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel; 6 | using System.Data; 7 | using System.Diagnostics; 8 | using System.Drawing; 9 | using System.Linq; 10 | using System.Numerics; 11 | using System.Text; 12 | using System.Threading; 13 | using System.Windows.Forms; 14 | using Newtonsoft.Json; 15 | using RestSharp.Deserializers; 16 | using System.IO; 17 | using System.Text.RegularExpressions; 18 | using MyLinkToken.WinFormEx; 19 | using MyLinkToken.LinkClass; 20 | 21 | namespace MyLinkToken 22 | { 23 | public partial class FormMain : Form 24 | { 25 | public FormMain() 26 | { 27 | WinFormEx.SplashForm.Show(); 28 | InitializeComponent(); 29 | //this.FormBorderStyle = FormBorderStyle.None;//必须放在构造函数中,显示时先隐藏边框效果更佳 30 | Thread.Sleep(350); 31 | WinFormEx.SplashForm.ChangeProgressText("加载链克口袋文件..."); 32 | Thread.Sleep(400); 33 | WinFormEx.SplashForm.ChangeProgressText("更新余额信息......"); 34 | Thread.Sleep(150);//只少要有一个延迟的,否则加载窗体可能无法关闭或加载文本设置会出错 35 | //WinFormEx.SplashForm.Close(); 36 | } 37 | 38 | private void FormMain_Load(object sender, EventArgs e) 39 | { 40 | this.Text = "MyLinkToken - 开源链克口袋 V" + Application.ProductVersion; 41 | BindAccount(); 42 | WinFormEx.AnimateWindows.ShowAnimateWindow(this, 500, WinFormEx.AnimateWindows.AW_BLEND);//淡入淡出的效果在不影藏边框时也不错 43 | //this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; 44 | //加载完成关闭启动窗体 45 | WinFormEx.SplashForm.Close(); 46 | listBoxAccount.DrawMode = DrawMode.OwnerDrawVariable; 47 | listBoxAccount.DrawItem += ListBoxAccount_DrawItem; 48 | 49 | this.TopLevel = true; 50 | LogMessage("欢迎使用 MyLinkToken - 开源链克口袋\r\n玩客社区首发:wankeyun.cc"); 51 | } 52 | 53 | private void ListBoxAccount_DrawItem(object sender, DrawItemEventArgs e) 54 | { 55 | e.Graphics.FillRectangle(new SolidBrush(e.BackColor), e.Bounds); 56 | if (e.Index >= 0) 57 | { 58 | StringFormat sStringFormat = new StringFormat(); 59 | sStringFormat.LineAlignment = StringAlignment.Center; 60 | e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds, sStringFormat); 61 | } 62 | e.DrawFocusRectangle(); 63 | } 64 | 65 | private void FormMain_FormClosing(object sender, FormClosingEventArgs e) 66 | { 67 | //this.FormBorderStyle = FormBorderStyle.None; 68 | WinFormEx.AnimateWindows.HideAnimateWindowBlend(this, 500, WinFormEx.AnimateWindows.AW_CENTER); 69 | } 70 | 71 | private void btnImport_Click(object sender, EventArgs e) 72 | { 73 | string KeyStorePath = Application.StartupPath + @"\KeyStore"; 74 | OpenFileDialog dialog = new OpenFileDialog(); 75 | dialog.Filter = "链克口袋文件|*.*"; 76 | Stream myStream = null; 77 | if (dialog.ShowDialog() == DialogResult.OK) 78 | { 79 | try 80 | { 81 | if ((myStream = dialog.OpenFile()) != null) 82 | { 83 | StreamReader st = new StreamReader(dialog.FileName); 84 | string str = st.ReadLine(); 85 | var resultJson = JsonConvert.DeserializeObject(str); 86 | string address = "0x"+resultJson.address; 87 | var targetFile = KeyStorePath+"\\"+address; 88 | var UTF8NoBom = new UTF8Encoding(false); 89 | StreamWriter sw = new StreamWriter(targetFile, false, UTF8NoBom); 90 | sw.Write(str); 91 | sw.Close(); 92 | BindAccount(); 93 | LogMessage("导入账户成功:\r\n" + address); 94 | } 95 | } 96 | catch (Exception ex) 97 | { 98 | EasyMsg.ShowTips("导入账户失败!"); 99 | } 100 | } 101 | } 102 | 103 | private void listBoxAccount_MeasureItem(object sender, MeasureItemEventArgs e) 104 | { 105 | e.ItemHeight = e.ItemHeight + 12; 106 | } 107 | 108 | private void BindAccount() 109 | { 110 | listBoxAccount.Items.Clear(); 111 | DirectoryInfo folder = new DirectoryInfo(Application.StartupPath + "\\KeyStore"); 112 | var accounts = folder.GetFiles(); 113 | foreach (FileInfo file in accounts) 114 | listBoxAccount.Items.Add(file.Name); 115 | if (listBoxAccount.Items.Count > 0) 116 | { 117 | listBoxAccount.SelectedIndex = 0; 118 | } 119 | } 120 | 121 | private void btnExport_Click(object sender, EventArgs e) 122 | { 123 | Process.Start(Application.StartupPath + "\\KeyStore"); 124 | } 125 | 126 | private void btnDelete_Click(object sender, EventArgs e) 127 | { 128 | var a = listBoxAccount.SelectedIndex; 129 | if (a >= 0) 130 | { 131 | var address = listBoxAccount.SelectedItem.ToString(); 132 | listBoxAccount.Items.RemoveAt(a); 133 | var path = Application.StartupPath + "\\KeyStore\\" + address; 134 | File.Delete(path); 135 | //BindAccount(); 136 | LogMessage("删除账户成功:\r\n" + address); 137 | } 138 | else 139 | { 140 | EasyMsg.ShowTips("请选中一个链克口袋!"); 141 | } 142 | 143 | } 144 | 145 | private void listBoxAccount_SelectedIndexChanged(object sender, EventArgs e) 146 | { 147 | this.Enabled = false; 148 | var a = listBoxAccount.Items.Count; 149 | var s = listBoxAccount.SelectedIndex; 150 | if (a == 0 || s < 0) 151 | { 152 | lbMoney.Text = ""; 153 | lbRename.Text = ""; 154 | lbAddress.Text = ""; 155 | txtToAddress.Clear(); 156 | txtToNum.Clear(); 157 | this.Enabled = true; 158 | return; 159 | } 160 | var address = listBoxAccount.SelectedItem.ToString(); 161 | lbMoney.Text = LinkClass.TransactionEx.GetBalance(address).ToString(); 162 | var ini = new iHomeSoft.Helper.FileHandle.IniHelper(Application.StartupPath + "\\rename.ini"); 163 | var rename = ini.getKeyValue("账户别名", address); 164 | lbRename.Text = rename; 165 | lbAddress.Text = address; 166 | txtToAddress.Clear(); 167 | txtToNum.Clear(); 168 | this.Enabled = true; 169 | } 170 | 171 | private void btnSend_Click(object sender, EventArgs e) 172 | { 173 | var from_address = lbAddress.Text.Trim(); 174 | var to_address = txtToAddress.Text.Trim(); 175 | if(!(to_address.Length == 42 && to_address.IndexOf("0x") == 0)) 176 | { 177 | EasyMsg.ShowTips("请输入合法的转入账户地址!"); 178 | return; 179 | } 180 | var to_num = decimal.Parse(txtToNum.Text.Trim()); 181 | var money = decimal.Parse(lbMoney.Text.Trim()); 182 | if (to_num > money) 183 | { 184 | EasyMsg.ShowTips("余额不足!"); 185 | return; 186 | } 187 | LogMessage("您发起了一个转赠请求!\r\n接收地址:" + to_address + "\r\n转赠数量:" + to_num); 188 | FormSend send = new FormSend(); 189 | send.to_num = to_num.ToString(); 190 | send.from_address = from_address; 191 | send.to_address = to_address; 192 | send.ShowDialog(this); 193 | } 194 | 195 | private void txtToNum_Validating(object sender, CancelEventArgs e) 196 | { 197 | 198 | } 199 | 200 | private void txtToNum_KeyPress(object sender, KeyPressEventArgs e) 201 | { 202 | if (e.KeyChar == '.' && txtToNum.Text.IndexOf(".") != -1) 203 | { 204 | e.Handled = true; 205 | } 206 | if (!((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar == '.' || e.KeyChar == 8)) 207 | { 208 | e.Handled = true; 209 | } 210 | } 211 | 212 | #region 日志记录 213 | public delegate void LogAppendDelegate(Color color, string msg); 214 | 215 | public void LogAppendMethod(Color color, string msg) 216 | { 217 | if (!richTextBox1.ReadOnly) 218 | richTextBox1.ReadOnly = true; 219 | 220 | var str = DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss] ") + msg + "\r\n"; 221 | richTextBox1.SelectionColor = color; 222 | richTextBox1.AppendText(str); 223 | richTextBox1.Focus(); 224 | richTextBox1.Select(richTextBox1.TextLength, 0); 225 | richTextBox1.ScrollToCaret(); 226 | } 227 | 228 | public void LogError(string msg) 229 | { 230 | LogAppendDelegate la = new LogAppendDelegate(LogAppendMethod); 231 | richTextBox1.Invoke(la, Color.Red, msg); 232 | } 233 | public void LogMessage(string msg) 234 | { 235 | LogAppendDelegate la = new LogAppendDelegate(LogAppendMethod); 236 | richTextBox1.Invoke(la, Color.Green, msg); 237 | } 238 | 239 | private void richTextBox1_TextChanged(object sender, EventArgs e) 240 | { 241 | if (richTextBox1.Lines.Length > 20) 242 | { 243 | richTextBox1.Text = richTextBox1.Text.Substring(richTextBox1.Lines[0].Length + 1); 244 | } 245 | } 246 | #endregion 247 | 248 | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 249 | { 250 | Process.Start("http://www.wankeyun.cc"); 251 | } 252 | 253 | public void SyncMoney(string sendNum) 254 | { 255 | var money = decimal.Parse(lbMoney.Text); 256 | var send = decimal.Parse(sendNum); 257 | lbMoney.Text = (money - send).ToString(); 258 | } 259 | 260 | private void btnNew_Click(object sender, EventArgs e) 261 | { 262 | FormPassword pwd = new FormPassword(); 263 | pwd.ShowDialog(this); 264 | } 265 | 266 | public void AddNewAccount(string address) 267 | { 268 | listBoxAccount.Items.Add(address); 269 | LogMessage("新建账户成功:\r\n" + address); 270 | } 271 | 272 | private void btnSearch_Click(object sender, EventArgs e) 273 | { 274 | var address = txtAddresSearch.Text.Trim(); 275 | var html = TransactionEx.GetTransactionRecords(address); 276 | webBrowser1.DocumentText = html; 277 | } 278 | 279 | private void btnCopy_Click(object sender, EventArgs e) 280 | { 281 | var address = lbAddress.Text.Trim(); 282 | Clipboard.SetDataObject(address); 283 | LogMessage("链克地址已复制到剪贴板:\r\n" + address); 284 | } 285 | 286 | private void btnQRCode_Click(object sender, EventArgs e) 287 | { 288 | FormQRCode qr = new FormQRCode(); 289 | qr.address = lbAddress.Text.Trim(); 290 | qr.ShowDialog(this); 291 | } 292 | 293 | private void btnAll_Click(object sender, EventArgs e) 294 | { 295 | var money = decimal.Parse(lbMoney.Text.Trim()); 296 | var sendAll = money - 0.01m; 297 | txtToNum.Text = sendAll.ToString(); 298 | } 299 | 300 | private void btnRename_Click(object sender, EventArgs e) 301 | { 302 | FormRename re = new FormRename(); 303 | re.rename = lbRename.Text.Trim(); 304 | re.ShowDialog(this); 305 | } 306 | 307 | public void Rename(string rename) 308 | { 309 | var address = lbAddress.Text.Trim(); 310 | lbRename.Text = rename; 311 | var ini = new iHomeSoft.Helper.FileHandle.IniHelper(Application.StartupPath + "\\rename.ini"); 312 | ini.setKeyValue("账户别名", address, rename); 313 | } 314 | } 315 | } 316 | -------------------------------------------------------------------------------- /MyLinkToken/FormMain.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 | AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAABILAAASCwAAAAAAAAAA 124 | AAARERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 125 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 126 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 127 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 128 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 129 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 130 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 131 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 132 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 133 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 134 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 135 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 136 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 137 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 138 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 139 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 140 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 141 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 142 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 143 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 144 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 145 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 146 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 147 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 148 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 149 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 150 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 151 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 152 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 153 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 154 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 155 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8REBD/EA8P/w8PDv8QDw//EBAQ/xAQ 156 | EP8QERH/EBAQ/xAQEP8QDw7/Dw8O/xAQD/8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 157 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 158 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 159 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/EBAQ/w8PD/8SEhL/Fxse/yUx 160 | Of84TFv/RWF0/0trgv9Lbob/S26G/0tthf9Kan7/QVts/zFDT/8fJy7/FhgZ/xISEf8QDw//EREQ/xER 161 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 162 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 163 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8QEA//ERAQ/xke 164 | If8uQUv/T3GH/1+Lq/9sn8P/c6nP/3Or0/90rNT/dKzU/3St1P90rNT/dK3U/3Or0v9xp8z/Z5i7/1uE 165 | ov9HYXX/JjA6/xYXGf8QDw7/ERAR/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 166 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 167 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEQ 168 | Ef8QDw//HSQo/z1VZv9gjaz/cKXK/3Ss0/90rNT/dKzU/3Or0/9zqdD/cKbM/26kyP9wo8j/caXK/3Ko 169 | zv9zqtL/dKzU/3Wt1P91rNP/darR/2yfw/9WfZj/L0BM/xYZGv8QDw7/ERER/xEREf8RERH/ERER/xER 170 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 171 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 172 | Ef8RERH/ERER/xAPD/8WGBv/Nkxb/2GOrf9yqs//dKzT/3Ws1P9zqdD/aJi6/1Z+mf9MbYT/Ql5v/zdO 173 | W/8yRlH/MkVP/zVIVP88U2P/R2R3/1B0jP9eiab/b6HF/3Wq0v91qtL/dKvT/3Cly/9TepT/KDY//xIR 174 | Ef8REBD/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 175 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 176 | Ef8RERH/ERER/xEREf8RERH/ERER/xAPD/8iKzH/UneR/3CmzP9zq9L/c6vS/26ix/9Xfpr/P1hn/yw7 177 | Q/8hKi7/ICgq/yAoKv8fKCv/ICgr/x8oK/8fKCv/Hygr/yAoKv8gKCv/JC80/zNGU/9HZnr/Y5Gy/3Ko 178 | zf9zq9P/dKzT/2qcwP9CXG//Fhoc/xAQD/8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 179 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 180 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8uPUj/YpCv/3Wr0/91qtP/bqTJ/1Z9 181 | l/80R1L/Ii0y/yAnKv8gKSz/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEq 182 | Lf8fKCv/Hycq/yg2Pf9BWm3/ZJO0/3Kq0P90q9P/cqnP/1F3kP8dIyj/EA8P/xEREf8RERH/ERER/xER 183 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 184 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf81SFf/apy//3Sr 185 | 0f90qtL/ZpO0/ztTYf8jLjH/Hygq/yEpLP8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEq 186 | Lf8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8gKSv/ICgq/yk3P/9OcIb/bqPH/3Sr0v90qtH/W4Si/yEr 187 | Mf8QDw//ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 188 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xAQ 189 | EP80SFb/bZ/E/3Or0v9yqdD/WICb/yw7Q/8fKCr/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISks/x8o 190 | Kv8gKSz/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8gKCv/ISot/zxV 191 | Y/9ombv/dqvT/3Wr0/9diKf/ICgv/xAPD/8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 192 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 193 | Ef8RERH/ERER/xAQD/8tPEb/apy//3Or0/9yqM//T3OK/yUxNv8gKCv/ISot/yEqLf8hKi3/ISot/yEq 194 | Lf8hKi3/ICks/zpRYf8+Vmb/KTk//yItMP8gKSz/ICgq/yApLP8hKi3/ISot/yEqLf8hKi3/ISot/yEq 195 | Lf8hKi3/ISot/yEqLf8gKCv/NEhT/2aUtP90q9L/dKvT/1mBnf8bICX/ERAQ/xEREf8RERH/ERER/xER 196 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 197 | Ef8RERH/ERER/xEREf8RERH/ERER/xAQEP8hKS//YpCu/3Ss0v9yqdH/TnKK/yMuM/8gKSz/ISot/yEq 198 | Lf8hKi3/ISot/yEqLf8hKi3/ISot/x8oKv9Qdo//cqnQ/2iYuv9dhqP/TW2D/zZJVf8pNz3/JC4y/yAp 199 | K/8gKCr/ICks/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yAoK/8yRVD/ZZa3/3Wq0v91qtH/T26G/xUW 200 | F/8QEBD/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 201 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xAREP8VFxj/UXaP/3Wr0v90q9L/WICa/yUx 202 | Nf8gKSv/ISot/yEqLf8hKi3/ISot/yApK/8fJyr/Hycq/yAoK/8fKS3/UXiR/3Os0/9zqtL/dKvT/3Or 203 | 0v9wo8n/aJi7/1uEoP9EYXP/NUhT/yk4P/8hKy3/Hico/yAoK/8hKSz/ISot/yEqLf8hKi3/ICgr/zZM 204 | Wf9sncH/darS/3Clyv83TFv/EA8P/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 205 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8PDw//NUtZ/3Ck 206 | y/91q9P/ZJOy/yw8Qv8gKSv/ISot/yEqLf8hKiz/Hygr/yEqLf8qOUD/N01a/0Babf9IZ33/Vn2X/2ue 207 | wf9yqtH/cqnQ/3Kp0P9yqdD/c6nQ/3Sq0v90q9L/c6nP/3Clyv9mmLn/VHqR/0Ffcf80SVX/JTE1/yAo 208 | Kv8gKSz/ISot/yEqLf8gKCv/RF5x/3KlzP90rNP/YZCy/x8nLf8QEA//ERER/xEREf8RERH/ERER/xER 209 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 210 | Ef8QEBD/GiEl/1+Lqv90rNT/cKXI/zxUYf8fKCn/ISot/yEqLf8gKSv/ISww/zhQXf9Ue5T/Z5e4/3Gm 211 | yv9zqdH/davT/3Ss0/9zq9L/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/c6vS/3Sr 212 | 0/9zqtL/b6TI/1+Mqf9IZnr/KTc+/yApK/8hKi3/ICks/yMtMf9Yf5r/dKvT/3Or0v9FYnf/ERER/xER 213 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 214 | Ef8RERH/ERER/xEREf8RERH/EA4P/zpRYv9yqdD/dKzT/1d+mP8iLC//ISot/yEqLf8fKCv/KTg//1J4 215 | kP9vpMj/dazU/3Oq0f9zqtH/c6rR/3Sr0v9zq9L/c6vS/3Or0v9zq9L/dKvT/3Sp0f9yqdD/cqnQ/3Kp 216 | 0P9yqdD/cqrR/3Oq0f9zqdH/cqnQ/3Kp0P90q9P/c6rR/2ORsf83TVr/ICgr/yApLP8fKCr/MUNL/2ue 217 | wv90q9L/aZq8/yIsMv8QDw//ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 218 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/EBAQ/xkeIP9diKb/dazU/22gxv8yRlH/Hygr/yEq 219 | Lf8gKSv/LDxF/1+Kqf91q9L/c6vR/3Kp0P9zqtH/c6rR/3CnzP9llbb/ZJOz/2STs/9kk7P/ZZOz/2WT 220 | s/9uocX/c6rR/3Kp0f9zqtH/bqPH/2ucwP9toMT/c6rR/3Oq0f9yqdD/cqnQ/3Kp0P90q9P/a57B/zlP 221 | XP8gKCr/ICks/yEqLf9Qcon/dKvR/3Or0f9BXG3/EBAQ/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 222 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/w8PDv8sPEb/caXL/3Wr 223 | 0/9Yf5z/Ii0x/yEqLP8gKSz/JjM4/1yGof91q9L/c6nR/3Kp0P9yqdD/c6rR/3Or0v9YfJT/NT5E/zM8 224 | Qv8zPEL/MzxC/zM8Qv8yOkD/VHKI/3Sr0/9zqtH/dKvT/1R1jP84Qkr/PUxW/2SRr/9zq9L/cqnQ/3Kp 225 | 0P9yqdD/c6rR/3Sr0/9llLX/LDtC/yApK/8gKCv/MkRO/26ixv90rNT/YY2t/xkdIP8QEBD/ERER/xER 226 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 227 | Ef8RERH/SWZ9/3Wr0v9yp87/OlJg/x8oKv8hKi3/ICkt/0lpfv9yqs//c6rR/3Kp0P9yqdD/cqnQ/3Or 228 | 0v9pmbr/OkZP/zE1N/8xNjn/MTY4/zE2OP8xNjj/MDQ3/z1MV/9uocX/c6rR/3Sr0/9PbYL/MDM1/zAz 229 | Nv9DWGb/cKTI/3Oq0f9yqdD/cqnQ/3Kp0P9yqtH/dKvT/0xsgv8gKCv/ISot/yMtMv9YgJz/dazU/26i 230 | x/8pN0D/EA8O/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 231 | Ef8RERH/ERER/xEREf8QEBD/GR0f/2KOrf91rNP/aZq8/yw7Qv8gKSz/ICkr/yo5Qf9ml7n/dKvS/3Kp 232 | 0P9yqdD/cqnQ/3Kp0P9yqM7/S2R0/zE1N/8yNzr/MTY5/zE2Of8xNjn/MTY5/zE2Of8zOj7/Yo6t/3Or 233 | 0/9zq9P/T26C/zA0Nv8xNjn/Mjc6/1l7kv90q9L/cqnQ/3Kp0P9yqdD/cqnQ/3Sr0/9hjq7/JjI4/yEp 234 | LP8fJyn/Q15w/3Wq0v91q9L/RmJ1/xEQEP8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 235 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/EA8P/yAqMP9qncD/dazT/1R7lf8hKy//ISot/x8p 236 | Kv9EYnT/cqrR/3Kp0P9yqdD/cqnQ/3Kp0P90q9P/Xoah/zQ7P/8xNjn/MTY5/zE2Of8zOj//Mzk9/zE1 237 | OP8xNjn/MTY4/1Rzif90q9P/dKvT/05sgf8wNDf/MTY6/zA1OP84RE3/aJe5/3Sr0v9zqtH/cqnQ/3Kp 238 | 0P9zqtH/b6PI/zRGUf8gKCv/ICgr/zRHUv9wo8j/dazU/1iAm/8UFRb/ERER/xEREf8RERH/ERER/xER 239 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/w8ODv8uQEz/cabM/3Or 240 | 0/9EY3f/Hycq/yEqLf8gKSz/UnmS/3Ss1P9yqdD/cqnQ/3Kp0P9zq9L/baDE/z9QW/8xNTf/Mjc6/zE2 241 | OP80PED/VXiQ/0FTYP8wNDf/MTY5/zE1N/8+T1r/cKTJ/3Wr0/9Xe5T/Mjg7/zE2Of8xNjn/MTU4/0pi 242 | cv9xp83/cqnR/3Kp0P9yqdD/c6rR/3Kozv86UV7/Hycq/yEpLP8lMjf/Y5Gw/3Wt1f9gjq3/GB0g/xAQ 243 | EP8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 244 | Ef8PDw7/Pldo/3Sr0v9yqdH/Plhn/x8oKv8hKi3/Iyww/1yGo/90rNP/cqnQ/3Kp0P9zqtH/dKvS/1Nz 245 | if8wNjj/Mjc6/zE2Of8zOkD/V3qR/3Sr0v9UdIv/LzU4/zE2Of8xNjj/Nj9E/2iWt/91q9P/caXL/0pk 246 | df8wNTj/Mjc6/zI3Of8zOj7/XYOf/3Sr0v9yqdD/cqnQ/3Oq0f9yqM7/OlFe/yAoKv8hKi3/ISot/1Z+ 247 | mf90rNT/aJm9/x8pMP8QDw//ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 248 | Ef8RERH/ERER/xEREf8RERH/ERAQ/0tpfv91rNT/cKfN/zhPW/8fKCr/ISot/yQuM/9gi6n/dKzT/3Kp 249 | 0P9zqtH/c6vS/2aUtP83QUj/MTY5/zI3Ov8zOj7/VnWN/3Kpz/9zq9L/aZa3/zlFTP80PUL/ND1D/zM9 250 | Qv9ZfZX/dKvT/3Oq0v9uoMT/QlVi/zE2Of8yNzr/MDU4/z1MVv9snsH/c6rS/3Kp0P9zqtL/b6PH/zNF 251 | UP8gKCr/ISot/yAoK/9Qdo7/dazU/2+jyP8pN0L/EA8O/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 252 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xISEv9Qcon/dKzU/22jx/8zR1H/ICgr/yEq 253 | Lf8iLDD/W4Wi/3Ss0/9yqdD/c6rR/3Sr0f9XeJD/MTY5/zI3Ov8xNjn/Nj9F/2SNq/9zq9L/dKnR/3Km 254 | zP9llLL/ZJCt/2WPrv9kjqz/apm6/3Oq0P9zqtH/cqnQ/09sfv8wNjn/Mjc6/zE2Of82QUb/ZZS0/3Oq 255 | 0v9zqtH/dKzT/2CNrP8kMDb/ICkr/yEqLf8gKCr/T3KK/3as1P9xpsz/L0BN/xAPDv8RERH/ERER/xER 256 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8SEhP/UnSM/3Ss 257 | 1P9tosb/MURO/yAoK/8hKi3/ICkr/1J3kP91rNT/cqnQ/3Kp0P9yqtH/bZ/C/z5OWf8xNTj/Mjc6/zE1 258 | OP86Rk//YY2r/3Or0v9zq9L/Xoej/0BRXv9AUl7/QVFd/0Zbaf9snL//dKvS/1h7k/8zOz//MTY5/zI3 259 | Ov8wNjj/UG2A/3Kpz/9yqdD/cqnQ/3Sr0f9KaX3/Hygq/yEqLf8hKi3/ICgq/09xiv92rNX/cafO/zFD 260 | Uf8PDw7/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 261 | Ef8RERH/EhIS/05xiP90rdT/b6TJ/zRJU/8gKCv/ISot/x8oKv9DX3D/c6rQ/3Kq0f9zqtH/cqnQ/3Or 262 | 0/9eiKT/Mzs//zI2Of8yNjr/LzU3/zhETP9kj67/dKzU/2KOrf8yODz/MDQ2/zA1N/8wNTj/WX2V/1+I 263 | pP81P0T/MTU4/zE2Of8xNjj/PUxV/22fwv9zqtH/cqnQ/3Wr0v9kkrL/Kjk//yApK/8hKi3/ISot/yAo 264 | Kv9Pcov/dKzU/3ClzP8tP0r/Dw8O/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 265 | Ef8RERH/ERER/xEREf8RERH/ERER/xAQEP9GZXr/dKzT/3Cozf85UV3/ICgq/yEqLf8gKSz/Kjg//2eW 266 | t/90q9L/c6rR/3Kp0P9yqdD/canO/05pe/8xNTj/Mjc6/zE2Of8vMzb/V3iQ/3Os1P9vocX/P09Z/zA1 267 | N/8yNzr/MjU4/0BOWv85Rk7/MTU4/zE2Ov8yNjn/Mzk9/12En/9zq9P/cqnQ/3Sr0v9snMD/N0xb/yAo 268 | K/8hKi3/ISot/yEqLf8gKSv/UHaP/3Ss0/9soMX/JTM8/xAPD/8RERH/ERER/xEREf8RERH/ERER/xER 269 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8PDw7/OlFh/3Oq0P9yqtD/P1pq/x8n 270 | Kv8hKi3/ISot/yApLP9HZXn/cqnQ/3Kp0P9yqdD/cqnQ/3Sr0v9snL//PUxW/zE1OP8yNzr/LzQ3/1d4 271 | kP9zq9P/c6vS/1JwhP8xNTf/MTY5/zE2Of8xNjn/MTY5/zE2Of8yNzr/MDQ3/0lhcv9xp83/c6rR/3Oq 272 | 0f9ml7j/OE5b/yAoK/8hKi3/ISot/yEqLf8hKi3/Iisu/1mBnf90rdT/ZZa5/x0lKv8REBD/ERER/xER 273 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/Dw8O/yo6 274 | RP9uo8j/c6vS/0Zne/8fJyr/ISot/yEqLf8gKSz/JTE2/1iBnP90q9P/c6rR/3Oq0f9yqdD/c6vS/1yD 275 | nf80PED/MjY5/zA0N/9XeJD/c6vT/3Or0v9dhqH/Mjg8/zI3Ov8yNzr/MTY5/zE2Of8xNjn/MDU4/zhE 276 | TP9nlbX/dKvS/3Kp0P9zq9L/RWV6/x4mKP8hKi3/ISot/yEqLf8hKi3/ICks/yc1O/9mlbX/da3V/16K 277 | qf8WGh3/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 278 | Ef8RERH/ERER/xEQEP8fJyv/aJq8/3Ss0/9Zgp7/Iy4y/yEqLf8hKi3/ISot/yAoK/8pOD//WYSh/3Or 279 | 0v9zq9L/cqnQ/3Oq0f9yqM//TGR1/zA1OP8wNDb/WHmQ/3Ss1P9zqtH/bZ/C/z5LVf8xNTn/MTY5/zA2 280 | OP8wNjj/MDY4/zA3Ov9Ud43/c6vS/3Kp0P9yqdD/c6rR/0FecP8fJyn/ISot/yEqLf8hKi3/ISot/x8o 281 | Kv82TFf/cKXK/3as1P9VepT/ExQU/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 282 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8REBD/GBob/12Go/91rNP/bJ7B/y8/SP8gKSz/ISot/yEq 283 | Lf8hKi3/ICkr/yc1Ov9OcYn/baHF/3Or0v9zqtH/c6rR/2yewf9bf5j/Wn2V/2mXuP9zqtL/cqnR/3Kp 284 | 0P9jjKn/WXyV/1l9lv9ZfZb/WX2W/1l9lf9dgpz/b6TJ/3Oq0f9yqdD/cqnQ/3Gozv87VGD/Hygq/yEq 285 | Lf8hKi3/ISot/yEqLf8fKCr/RWN2/3Sr0v90qtH/PlZn/xAQD/8RERH/ERER/xEREf8RERH/ERER/xER 286 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xAPD/8+WGr/c6rQ/3Ko 287 | z/8/WWz/ICgr/yEqLf8hKi3/ISot/yEqLf8gKSz/ISww/zJFT/9Wfpf/c6nO/3Kp0P9yqdH/dKvU/3Ss 288 | 1f9zqtL/cqnQ/3Kp0P9yqdD/c6rT/3Sr1P9zqtP/c6rT/3Oq0/9zqtP/dKvT/3Oq0f9zqtH/cqnQ/3Oq 289 | 0v9nlrb/KjlA/yApLP8hKi3/ISot/yEqLf8hKi3/JTE3/1+Kp/91rNP/a57C/yMtNf8QDw//ERER/xER 290 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 291 | Ef8QDw//JTI7/22hxf90rNP/XYmo/yQvNf8hKiz/ISot/yEqLf8hKi3/ISot/yEqLf8gKCr/KTY7/2OQ 292 | r/9zq9L/c6rR/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp 293 | 0P9yqdD/cqnQ/3Kp0P90rNL/T3OK/yEpK/8hKi3/ISot/yEqLf8hKi3/Hygq/zVLWP9wpcv/dKvT/1qC 294 | nv8XGBr/ERAQ/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 295 | Ef8RERH/ERER/xEREf8RERH/EREQ/xUXGP9VeZP/dazU/2+kyv84T13/ICgq/yEqLf8hKi3/ISot/yEq 296 | Lf8hKi3/ISot/yAoKv9CXW7/c6nP/3Oq0f9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp 297 | 0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Oq0f91qtL/apu//zFDTP8fKSv/ISot/yEqLf8hKi3/ICot/yIt 298 | Mf9Wfpb/dKvT/3Kozv82S1n/Dw8O/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 299 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8QDg7/MkNP/2+ly/90rNP/XIek/yQw 300 | M/8gKSv/ISot/yEqLf8hKi3/ISot/yEqLf8hKSz/JjE2/1qBnP9zq9L/cqnQ/3Kp0P9yqdD/cqnQ/3Kp 301 | 0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9zqtH/dKnP/0dlev8gKSz/ISot/yEq 302 | Lf8hKi3/ISot/yAoK/84TVr/bqPH/3Ss0/9hjqz/HCEm/xAQEP8RERH/ERER/xEREf8RERH/ERER/xER 303 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/EREQ/xUY 304 | Gf9Ue5X/dKzS/3Kpzv9FYnX/Hygq/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEpLP8tPUX/YY6u/3Or 305 | 0/9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9zqtH/c6vR/1R6 306 | kv8kLzT/Hyks/yEqLf8hKi3/ISot/yApLP8nMzj/X4qo/3Or0v9yqM7/OlBg/xEPD/8RERH/ERER/xER 307 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 308 | Ef8RERH/ERER/xEREf8QDw//KjhC/2udv/90rNP/aZu+/zJFUf8gKCr/ISot/yEqLf8hKi3/ISot/yEq 309 | Lf8hKi3/ICgr/y9ASf9ciab/dKvS/3Or0v9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp0P9yqdD/cqnQ/3Kp 310 | 0P9zq9L/cqjO/1N3j/8nMzj/ICks/yEqLf8hKi3/ISot/yEqLf8hKy3/TG6D/3Opz/90rNP/WYGe/xgb 311 | H/8QEBD/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 312 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREv9CXnD/cqnP/3Sr0/9gjKz/KjpB/yAo 313 | K/8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8gKCv/KTU9/05vhf9qoMP/c6vT/3Sr0/90qdH/c6nR/3Kp 314 | 0P9zqtH/dKvS/3Ss0/9zqdD/Zpa2/0Ncbv8lLjL/ICks/yEqLf8hKi3/ISot/yEqLf8gKCr/P1lq/26j 315 | yf9zq9L/aJu+/yk3QP8PDw7/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 316 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8REBD/Fxsd/1Z8 317 | lv90q9L/c6vR/1mEoP8oNz7/ICgr/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEpLP8hKy7/MEJN/0xt 318 | hP9jkrL/ap3B/26iyP9vpMn/baHG/2qcv/9fi6j/Q2Bx/yw7Qf8gKCv/ISos/yEqLf8hKi3/ISot/yEq 319 | LP8gKSr/OlJg/2ufwv90q9P/cKbM/zpUZf8REBH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 320 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 321 | Ef8RERH/ERER/xAPD/8gKC//X4qp/3Sr0v9zqtD/W4ah/y08RP8fKCr/ISot/yEqLf8hKi3/ISot/yEq 322 | Lf8hKi3/ISot/yAoLP8gKS3/JzM4/ys8Rf8xRVD/NEdT/zBCTf8rOUH/JTA1/x8nKv8gKSv/ISot/yEq 323 | Lf8hKi3/ISot/yApLP8gKiz/PVZm/2uewv9zq9L/cqnQ/0lpfv8UFhf/ERAQ/xEREf8RERH/ERER/xER 324 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 325 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/EA8P/yUvOP9hja3/c6zS/3Or0f9jkK//NUpW/yAp 326 | K/8gKSz/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEpLP8gKSv/ICgr/yAoKv8gKCv/ICks/yEq 327 | Lf8hKi3/ISot/yEqLf8hKi3/ISot/yAoK/8lMTb/SGh7/26ix/9zq9P/cqrQ/01vh/8XGxz/EBAQ/xER 328 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 329 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8QDw//JS82/16J 330 | p/90q9L/c6vT/22fwv9Jan7/JzQ5/yAoK/8hKSz/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISot/yEq 331 | Lf8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ICgr/yAqLf8yR1L/WoSg/3Gpzv9zq9L/cafN/0pp 332 | f/8YGx3/EBAQ/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 333 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 334 | Ef8RERH/ERER/xEPD/8fJyz/UXaQ/3Gmzf90q9L/cqnQ/2OPrv9DW27/KDU8/yApLP8fKCr/ICks/yEq 335 | Lf8hKi3/ISot/yEqLf8hKi3/ISot/yEqLf8hKi3/ISos/yApK/8fJyr/Iiwx/y9BS/9SdYz/bJ7C/3Os 336 | 0v90rNP/bZ3C/z1Xaf8VFxn/ERAQ/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 337 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 338 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/EBAP/xYZG/8+Vmj/Z5i7/3Ss0/91q9L/cqfN/2aU 339 | tv9La4L/NEhU/yo3Pv8hKy7/ICgq/yAnKP8gJyn/ICcp/yAnKf8fJyn/Hykr/yQvNP8vP0j/O1Ri/1h/ 340 | mf9sn8P/darS/3Sr0/9zqc//XYek/y07Rf8RERL/ERAQ/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 341 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 342 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8QEBD/EREQ/yQu 343 | Nv9Ob4X/bJ/C/3Sr0/91rNT/dKvS/3Clyv9nl7j/WX+Z/0lpfv9CX3D/QFps/0BabP9AW27/Q2F1/09y 344 | iP9eiqj/bZ7D/3Oozv91q9L/dKzT/3Sq0f9lkrL/QVhq/xkeIf8REA//ERER/xEREf8RERH/ERER/xER 345 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 346 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 347 | Ef8RERH/ERER/xEREf8RDw//EhQU/yk2P/9IZ33/aJa4/3Gozv90rNT/da3V/3as1P90q9P/dKvS/3Sp 348 | 0f91qdL/dKrS/3Or0/90rNP/da3V/3as1P91q9L/b6TJ/1+Jpv8+Vmf/ICcr/xEQD/8QEBD/ERER/xER 349 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 350 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 351 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8QDw7/ERIS/x8mK/8xRFD/S22E/2KN 352 | rf9pmr3/bKHF/3Cmy/9yqM7/cqnQ/3Gozv9vpMr/a57D/2eXuv9chaL/Ql5x/yo5Qv8aHSD/EA8P/xAQ 353 | D/8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 354 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 355 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 356 | Ef8QDw//EA8O/xISEv8ZHR//HyYs/yYzPP8vQU3/NkhX/zZLW/8zR1X/LDxI/yMuNf8dIyj/Fhkb/xEQ 357 | EP8QDw7/ERAQ/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 358 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 359 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 360 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERAQ/xAQD/8QDw//EA8O/xAODv8PDg7/Dw4O/xEO 361 | D/8QDw//EBAQ/xEQEP8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 362 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 363 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 364 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 365 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 366 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 367 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 368 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 369 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 370 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 371 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 372 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 373 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 374 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 375 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 376 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 377 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 378 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 379 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 380 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 381 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 382 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 383 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 384 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 385 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 386 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 387 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 388 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 389 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 390 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 391 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 392 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 393 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 394 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 395 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 396 | Ef8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xEREf8RERH/ERER/xER 397 | Ef8RERH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 398 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 399 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 400 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 401 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 402 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 403 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 404 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 405 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 406 | 407 | 408 | -------------------------------------------------------------------------------- /MyLinkToken/FormPassword.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken 2 | { 3 | partial class FormPassword 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormPassword)); 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.txtPassword1 = new System.Windows.Forms.TextBox(); 34 | this.label5 = new System.Windows.Forms.Label(); 35 | this.txtPassword2 = new System.Windows.Forms.TextBox(); 36 | this.label2 = new System.Windows.Forms.Label(); 37 | this.btnCancel = new System.Windows.Forms.Button(); 38 | this.btnSubmit = new System.Windows.Forms.Button(); 39 | this.SuspendLayout(); 40 | // 41 | // label1 42 | // 43 | this.label1.AutoSize = true; 44 | this.label1.BackColor = System.Drawing.SystemColors.Control; 45 | this.label1.Font = new System.Drawing.Font("宋体", 15F); 46 | this.label1.Location = new System.Drawing.Point(100, 20); 47 | this.label1.Name = "label1"; 48 | this.label1.Size = new System.Drawing.Size(169, 20); 49 | this.label1.TabIndex = 1; 50 | this.label1.Text = "创建新的链克账户"; 51 | // 52 | // txtPassword1 53 | // 54 | this.txtPassword1.Location = new System.Drawing.Point(104, 68); 55 | this.txtPassword1.Name = "txtPassword1"; 56 | this.txtPassword1.PasswordChar = '*'; 57 | this.txtPassword1.Size = new System.Drawing.Size(230, 21); 58 | this.txtPassword1.TabIndex = 8; 59 | // 60 | // label5 61 | // 62 | this.label5.AutoSize = true; 63 | this.label5.Font = new System.Drawing.Font("宋体", 11F); 64 | this.label5.Location = new System.Drawing.Point(26, 72); 65 | this.label5.Name = "label5"; 66 | this.label5.Size = new System.Drawing.Size(82, 15); 67 | this.label5.TabIndex = 7; 68 | this.label5.Text = "账户密码:"; 69 | // 70 | // txtPassword2 71 | // 72 | this.txtPassword2.Location = new System.Drawing.Point(104, 106); 73 | this.txtPassword2.Name = "txtPassword2"; 74 | this.txtPassword2.PasswordChar = '*'; 75 | this.txtPassword2.Size = new System.Drawing.Size(230, 21); 76 | this.txtPassword2.TabIndex = 10; 77 | // 78 | // label2 79 | // 80 | this.label2.AutoSize = true; 81 | this.label2.Font = new System.Drawing.Font("宋体", 11F); 82 | this.label2.Location = new System.Drawing.Point(26, 110); 83 | this.label2.Name = "label2"; 84 | this.label2.Size = new System.Drawing.Size(82, 15); 85 | this.label2.TabIndex = 9; 86 | this.label2.Text = "重复密码:"; 87 | // 88 | // btnCancel 89 | // 90 | this.btnCancel.Font = new System.Drawing.Font("宋体", 11F); 91 | this.btnCancel.Location = new System.Drawing.Point(212, 150); 92 | this.btnCancel.Name = "btnCancel"; 93 | this.btnCancel.Size = new System.Drawing.Size(75, 35); 94 | this.btnCancel.TabIndex = 13; 95 | this.btnCancel.Text = "取 消"; 96 | this.btnCancel.UseVisualStyleBackColor = true; 97 | this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); 98 | // 99 | // btnSubmit 100 | // 101 | this.btnSubmit.Font = new System.Drawing.Font("宋体", 11F); 102 | this.btnSubmit.Location = new System.Drawing.Point(71, 150); 103 | this.btnSubmit.Name = "btnSubmit"; 104 | this.btnSubmit.Size = new System.Drawing.Size(75, 35); 105 | this.btnSubmit.TabIndex = 12; 106 | this.btnSubmit.Text = "确 认"; 107 | this.btnSubmit.UseVisualStyleBackColor = true; 108 | this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click); 109 | // 110 | // FormPassword 111 | // 112 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 113 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 114 | this.ClientSize = new System.Drawing.Size(364, 202); 115 | this.Controls.Add(this.btnCancel); 116 | this.Controls.Add(this.btnSubmit); 117 | this.Controls.Add(this.txtPassword2); 118 | this.Controls.Add(this.label2); 119 | this.Controls.Add(this.txtPassword1); 120 | this.Controls.Add(this.label5); 121 | this.Controls.Add(this.label1); 122 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 123 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 124 | this.MaximizeBox = false; 125 | this.MinimizeBox = false; 126 | this.Name = "FormPassword"; 127 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 128 | this.ResumeLayout(false); 129 | this.PerformLayout(); 130 | 131 | } 132 | 133 | #endregion 134 | 135 | private System.Windows.Forms.Label label1; 136 | private System.Windows.Forms.TextBox txtPassword1; 137 | private System.Windows.Forms.Label label5; 138 | private System.Windows.Forms.TextBox txtPassword2; 139 | private System.Windows.Forms.Label label2; 140 | private System.Windows.Forms.Button btnCancel; 141 | private System.Windows.Forms.Button btnSubmit; 142 | } 143 | } -------------------------------------------------------------------------------- /MyLinkToken/FormPassword.cs: -------------------------------------------------------------------------------- 1 | using MyLinkToken.LinkClass; 2 | using MyLinkToken.WinFormEx; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel; 6 | using System.Data; 7 | using System.Drawing; 8 | using System.Linq; 9 | using System.Text; 10 | using System.Threading.Tasks; 11 | using System.Windows.Forms; 12 | 13 | namespace MyLinkToken 14 | { 15 | public partial class FormPassword : Form 16 | { 17 | public FormPassword() 18 | { 19 | InitializeComponent(); 20 | } 21 | 22 | private void btnCancel_Click(object sender, EventArgs e) 23 | { 24 | this.Close(); 25 | } 26 | 27 | private void btnSubmit_Click(object sender, EventArgs e) 28 | { 29 | var pwd1 = txtPassword1.Text.Trim(); 30 | var pwd2 = txtPassword2.Text.Trim(); 31 | if (pwd1.Length < 8 || pwd2.Length < 8) 32 | { 33 | EasyMsg.ShowTips("密码长度不能小于8位!"); 34 | return; 35 | } 36 | if (pwd1 != pwd2) 37 | { 38 | EasyMsg.ShowTips("两次密码输入不一致!"); 39 | return; 40 | } 41 | this.Close(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /MyLinkToken/FormQRCode.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken 2 | { 3 | partial class FormQRCode 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormQRCode)); 32 | this.lbAddress = new System.Windows.Forms.Label(); 33 | this.qrCodeAddress = new Gma.QrCodeNet.Encoding.Windows.Forms.QrCodeImgControl(); 34 | ((System.ComponentModel.ISupportInitialize)(this.qrCodeAddress)).BeginInit(); 35 | this.SuspendLayout(); 36 | // 37 | // lbAddress 38 | // 39 | this.lbAddress.Font = new System.Drawing.Font("宋体", 11F); 40 | this.lbAddress.Location = new System.Drawing.Point(12, 14); 41 | this.lbAddress.Name = "lbAddress"; 42 | this.lbAddress.Size = new System.Drawing.Size(360, 15); 43 | this.lbAddress.TabIndex = 4; 44 | this.lbAddress.Text = "0"; 45 | this.lbAddress.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 46 | // 47 | // qrCodeAddress 48 | // 49 | this.qrCodeAddress.ErrorCorrectLevel = Gma.QrCodeNet.Encoding.ErrorCorrectionLevel.M; 50 | this.qrCodeAddress.Image = ((System.Drawing.Image)(resources.GetObject("qrCodeAddress.Image"))); 51 | this.qrCodeAddress.Location = new System.Drawing.Point(96, 46); 52 | this.qrCodeAddress.Name = "qrCodeAddress"; 53 | this.qrCodeAddress.QuietZoneModule = Gma.QrCodeNet.Encoding.Windows.Render.QuietZoneModules.Two; 54 | this.qrCodeAddress.Size = new System.Drawing.Size(200, 200); 55 | this.qrCodeAddress.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 56 | this.qrCodeAddress.TabIndex = 6; 57 | this.qrCodeAddress.TabStop = false; 58 | // 59 | // FormQRCode 60 | // 61 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 62 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 63 | this.ClientSize = new System.Drawing.Size(384, 262); 64 | this.Controls.Add(this.qrCodeAddress); 65 | this.Controls.Add(this.lbAddress); 66 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 67 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 68 | this.MaximizeBox = false; 69 | this.MinimizeBox = false; 70 | this.Name = "FormQRCode"; 71 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 72 | this.Load += new System.EventHandler(this.FormQRCode_Load); 73 | ((System.ComponentModel.ISupportInitialize)(this.qrCodeAddress)).EndInit(); 74 | this.ResumeLayout(false); 75 | 76 | } 77 | 78 | #endregion 79 | 80 | private System.Windows.Forms.Label lbAddress; 81 | private Gma.QrCodeNet.Encoding.Windows.Forms.QrCodeImgControl qrCodeAddress; 82 | } 83 | } -------------------------------------------------------------------------------- /MyLinkToken/FormQRCode.cs: -------------------------------------------------------------------------------- 1 | using Gma.QrCodeNet.Encoding; 2 | using Gma.QrCodeNet.Encoding.Windows.Render; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel; 6 | using System.Data; 7 | using System.Drawing; 8 | using System.Linq; 9 | using System.Text; 10 | using System.Threading.Tasks; 11 | using System.Windows.Forms; 12 | 13 | namespace MyLinkToken 14 | { 15 | public partial class FormQRCode : Form 16 | { 17 | public FormQRCode() 18 | { 19 | InitializeComponent(); 20 | } 21 | public string address; 22 | private void FormQRCode_Load(object sender, EventArgs e) 23 | { 24 | lbAddress.Text = address; 25 | qrCodeAddress.Text = address; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /MyLinkToken/FormRename.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken 2 | { 3 | partial class FormRename 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormRename)); 32 | this.btnCancel = new System.Windows.Forms.Button(); 33 | this.btnSubmit = new System.Windows.Forms.Button(); 34 | this.txtRename = new System.Windows.Forms.TextBox(); 35 | this.label5 = new System.Windows.Forms.Label(); 36 | this.SuspendLayout(); 37 | // 38 | // btnCancel 39 | // 40 | this.btnCancel.Font = new System.Drawing.Font("宋体", 11F); 41 | this.btnCancel.Location = new System.Drawing.Point(222, 76); 42 | this.btnCancel.Name = "btnCancel"; 43 | this.btnCancel.Size = new System.Drawing.Size(75, 35); 44 | this.btnCancel.TabIndex = 12; 45 | this.btnCancel.Text = "取 消"; 46 | this.btnCancel.UseVisualStyleBackColor = true; 47 | this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); 48 | // 49 | // btnSubmit 50 | // 51 | this.btnSubmit.Font = new System.Drawing.Font("宋体", 11F); 52 | this.btnSubmit.Location = new System.Drawing.Point(81, 76); 53 | this.btnSubmit.Name = "btnSubmit"; 54 | this.btnSubmit.Size = new System.Drawing.Size(75, 35); 55 | this.btnSubmit.TabIndex = 11; 56 | this.btnSubmit.Text = "确 认"; 57 | this.btnSubmit.UseVisualStyleBackColor = true; 58 | this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click); 59 | // 60 | // txtRename 61 | // 62 | this.txtRename.Location = new System.Drawing.Point(115, 30); 63 | this.txtRename.Name = "txtRename"; 64 | this.txtRename.Size = new System.Drawing.Size(230, 21); 65 | this.txtRename.TabIndex = 14; 66 | // 67 | // label5 68 | // 69 | this.label5.AutoSize = true; 70 | this.label5.Font = new System.Drawing.Font("宋体", 11F); 71 | this.label5.Location = new System.Drawing.Point(37, 34); 72 | this.label5.Name = "label5"; 73 | this.label5.Size = new System.Drawing.Size(82, 15); 74 | this.label5.TabIndex = 13; 75 | this.label5.Text = "账户别名:"; 76 | // 77 | // FormRename 78 | // 79 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 80 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 81 | this.ClientSize = new System.Drawing.Size(384, 136); 82 | this.Controls.Add(this.txtRename); 83 | this.Controls.Add(this.label5); 84 | this.Controls.Add(this.btnCancel); 85 | this.Controls.Add(this.btnSubmit); 86 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 87 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 88 | this.MaximizeBox = false; 89 | this.MinimizeBox = false; 90 | this.Name = "FormRename"; 91 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 92 | this.Load += new System.EventHandler(this.FormRename_Load); 93 | this.ResumeLayout(false); 94 | this.PerformLayout(); 95 | 96 | } 97 | 98 | #endregion 99 | 100 | private System.Windows.Forms.Button btnCancel; 101 | private System.Windows.Forms.Button btnSubmit; 102 | private System.Windows.Forms.TextBox txtRename; 103 | private System.Windows.Forms.Label label5; 104 | } 105 | } -------------------------------------------------------------------------------- /MyLinkToken/FormRename.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace MyLinkToken 12 | { 13 | public partial class FormRename : Form 14 | { 15 | public FormRename() 16 | { 17 | InitializeComponent(); 18 | } 19 | public string rename; 20 | private void btnCancel_Click(object sender, EventArgs e) 21 | { 22 | this.Close(); 23 | } 24 | 25 | private void btnSubmit_Click(object sender, EventArgs e) 26 | { 27 | var rename = txtRename.Text.Trim(); 28 | FormMain main = (FormMain)this.Owner; 29 | main.Rename(rename); 30 | this.Close(); 31 | } 32 | 33 | private void FormRename_Load(object sender, EventArgs e) 34 | { 35 | txtRename.Text = rename; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /MyLinkToken/FormSend.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken 2 | { 3 | partial class FormSend 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSend)); 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.lbAllMoney = new System.Windows.Forms.Label(); 34 | this.lbDetail = new System.Windows.Forms.Label(); 35 | this.lbFrom = new System.Windows.Forms.Label(); 36 | this.lbTo = new System.Windows.Forms.Label(); 37 | this.label5 = new System.Windows.Forms.Label(); 38 | this.txtPassword = new System.Windows.Forms.TextBox(); 39 | this.btnSubmit = new System.Windows.Forms.Button(); 40 | this.btnCancel = new System.Windows.Forms.Button(); 41 | this.SuspendLayout(); 42 | // 43 | // label1 44 | // 45 | this.label1.AutoSize = true; 46 | this.label1.BackColor = System.Drawing.SystemColors.Control; 47 | this.label1.Font = new System.Drawing.Font("宋体", 15F); 48 | this.label1.Location = new System.Drawing.Point(184, 20); 49 | this.label1.Name = "label1"; 50 | this.label1.Size = new System.Drawing.Size(89, 20); 51 | this.label1.TabIndex = 0; 52 | this.label1.Text = "确认转赠"; 53 | // 54 | // lbAllMoney 55 | // 56 | this.lbAllMoney.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 57 | this.lbAllMoney.ForeColor = System.Drawing.Color.Red; 58 | this.lbAllMoney.Location = new System.Drawing.Point(20, 51); 59 | this.lbAllMoney.Name = "lbAllMoney"; 60 | this.lbAllMoney.Size = new System.Drawing.Size(418, 23); 61 | this.lbAllMoney.TabIndex = 1; 62 | this.lbAllMoney.Text = "0"; 63 | this.lbAllMoney.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 64 | // 65 | // lbDetail 66 | // 67 | this.lbDetail.Font = new System.Drawing.Font("宋体", 11F); 68 | this.lbDetail.Location = new System.Drawing.Point(20, 82); 69 | this.lbDetail.Name = "lbDetail"; 70 | this.lbDetail.Size = new System.Drawing.Size(418, 23); 71 | this.lbDetail.TabIndex = 2; 72 | this.lbDetail.Text = "转赠数量:0;手续费:0.01"; 73 | this.lbDetail.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 74 | // 75 | // lbFrom 76 | // 77 | this.lbFrom.AutoSize = true; 78 | this.lbFrom.Font = new System.Drawing.Font("宋体", 11F); 79 | this.lbFrom.Location = new System.Drawing.Point(20, 120); 80 | this.lbFrom.Name = "lbFrom"; 81 | this.lbFrom.Size = new System.Drawing.Size(90, 15); 82 | this.lbFrom.TabIndex = 3; 83 | this.lbFrom.Text = "转出账户:0"; 84 | // 85 | // lbTo 86 | // 87 | this.lbTo.AutoSize = true; 88 | this.lbTo.Font = new System.Drawing.Font("宋体", 11F); 89 | this.lbTo.Location = new System.Drawing.Point(20, 150); 90 | this.lbTo.Name = "lbTo"; 91 | this.lbTo.Size = new System.Drawing.Size(90, 15); 92 | this.lbTo.TabIndex = 4; 93 | this.lbTo.Text = "接收账户:0"; 94 | // 95 | // label5 96 | // 97 | this.label5.AutoSize = true; 98 | this.label5.Font = new System.Drawing.Font("宋体", 11F); 99 | this.label5.Location = new System.Drawing.Point(20, 190); 100 | this.label5.Name = "label5"; 101 | this.label5.Size = new System.Drawing.Size(82, 15); 102 | this.label5.TabIndex = 5; 103 | this.label5.Text = "口袋密码:"; 104 | // 105 | // txtPassword 106 | // 107 | this.txtPassword.Location = new System.Drawing.Point(98, 186); 108 | this.txtPassword.Name = "txtPassword"; 109 | this.txtPassword.PasswordChar = '*'; 110 | this.txtPassword.Size = new System.Drawing.Size(340, 21); 111 | this.txtPassword.TabIndex = 6; 112 | // 113 | // btnSubmit 114 | // 115 | this.btnSubmit.Font = new System.Drawing.Font("宋体", 11F); 116 | this.btnSubmit.Location = new System.Drawing.Point(123, 216); 117 | this.btnSubmit.Name = "btnSubmit"; 118 | this.btnSubmit.Size = new System.Drawing.Size(75, 35); 119 | this.btnSubmit.TabIndex = 9; 120 | this.btnSubmit.Text = "确 认"; 121 | this.btnSubmit.UseVisualStyleBackColor = true; 122 | this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click); 123 | // 124 | // btnCancel 125 | // 126 | this.btnCancel.Font = new System.Drawing.Font("宋体", 11F); 127 | this.btnCancel.Location = new System.Drawing.Point(264, 216); 128 | this.btnCancel.Name = "btnCancel"; 129 | this.btnCancel.Size = new System.Drawing.Size(75, 35); 130 | this.btnCancel.TabIndex = 10; 131 | this.btnCancel.Text = "取 消"; 132 | this.btnCancel.UseVisualStyleBackColor = true; 133 | this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); 134 | // 135 | // FormSend 136 | // 137 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 138 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 139 | this.ClientSize = new System.Drawing.Size(464, 263); 140 | this.Controls.Add(this.btnCancel); 141 | this.Controls.Add(this.btnSubmit); 142 | this.Controls.Add(this.txtPassword); 143 | this.Controls.Add(this.label5); 144 | this.Controls.Add(this.lbTo); 145 | this.Controls.Add(this.lbFrom); 146 | this.Controls.Add(this.lbDetail); 147 | this.Controls.Add(this.lbAllMoney); 148 | this.Controls.Add(this.label1); 149 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 150 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 151 | this.MaximizeBox = false; 152 | this.MinimizeBox = false; 153 | this.Name = "FormSend"; 154 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 155 | this.Load += new System.EventHandler(this.FormSend_Load); 156 | this.ResumeLayout(false); 157 | this.PerformLayout(); 158 | 159 | } 160 | 161 | #endregion 162 | 163 | private System.Windows.Forms.Label label1; 164 | private System.Windows.Forms.Label lbAllMoney; 165 | private System.Windows.Forms.Label lbDetail; 166 | private System.Windows.Forms.Label lbFrom; 167 | private System.Windows.Forms.Label lbTo; 168 | private System.Windows.Forms.Label label5; 169 | private System.Windows.Forms.TextBox txtPassword; 170 | private System.Windows.Forms.Button btnSubmit; 171 | private System.Windows.Forms.Button btnCancel; 172 | } 173 | } -------------------------------------------------------------------------------- /MyLinkToken/FormSend.cs: -------------------------------------------------------------------------------- 1 | using MyLinkToken.WinFormEx; 2 | using Nethereum.Web3; 3 | using Nethereum.Web3.Accounts; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.ComponentModel; 7 | using System.Data; 8 | using System.Drawing; 9 | using System.Linq; 10 | using System.Text; 11 | using System.Threading.Tasks; 12 | using System.Windows.Forms; 13 | 14 | namespace MyLinkToken 15 | { 16 | public partial class FormSend : Form 17 | { 18 | public FormSend() 19 | { 20 | InitializeComponent(); 21 | } 22 | 23 | public string to_num; 24 | public string from_address; 25 | public string to_address; 26 | 27 | private void btnSubmit_Click(object sender, EventArgs e) 28 | { 29 | this.Enabled = false; 30 | var password = txtPassword.Text.Trim(); 31 | var keyFile = Application.StartupPath + "\\KeyStore\\" + from_address; 32 | Account account; 33 | try 34 | { 35 | account = LinkClass.TransactionEx.UnlockAccountFromKeyStoreFile(keyFile, password); 36 | } 37 | catch (Exception) 38 | { 39 | account = null; 40 | } 41 | if(account == null) 42 | { 43 | EasyMsg.ShowTips("密码错误!"); 44 | this.Enabled = true; 45 | return; 46 | } 47 | var nonce = LinkClass.TransactionEx.GetTransactionCount(from_address); 48 | var sing = LinkClass.TransactionEx.SignTransaction(account.PrivateKey, to_address, decimal.Parse(to_num), nonce); 49 | var msg = LinkClass.TransactionEx.SendRawTransaction(sing); 50 | if (string.IsNullOrEmpty(msg)) 51 | { 52 | EasyMsg.ShowTips("外面的世界更精彩,稍后再来看看!"); 53 | this.Enabled = true; 54 | return; 55 | } 56 | if (msg.IndexOf("0x") == 0) 57 | { 58 | LogMessage("转赠成功!\r\nhash值:" + msg); 59 | SyncMoney(lbAllMoney.Text); 60 | } 61 | else 62 | { 63 | EasyMsg.ShowTips("转赠失败:" + msg); 64 | this.Enabled = true; 65 | return; 66 | } 67 | this.Close(); 68 | } 69 | 70 | private void btnCancel_Click(object sender, EventArgs e) 71 | { 72 | this.Close(); 73 | } 74 | 75 | private void FormSend_Load(object sender, EventArgs e) 76 | { 77 | lbAllMoney.Text = (decimal.Parse(to_num) + 0.01m).ToString(); 78 | lbDetail.Text = string.Format("转赠数量:{0};手续费:0.01", to_num); 79 | lbFrom.Text = string.Format("转出账户:{0}", from_address); 80 | lbTo.Text = string.Format("接收账户:{0}", to_address); 81 | } 82 | 83 | private void SyncMoney(string sendNum) 84 | { 85 | FormMain main = (FormMain)this.Owner; 86 | main.SyncMoney(sendNum); 87 | } 88 | private void LogError(string msg) 89 | { 90 | FormMain main = (FormMain)this.Owner; 91 | main.LogError(msg); 92 | } 93 | private void LogMessage(string msg) 94 | { 95 | FormMain main = (FormMain)this.Owner; 96 | main.LogMessage(msg); 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /MyLinkToken/Helpers/Common.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace MyLinkToken.Helpers 7 | { 8 | /// 9 | /// 专属该项目的通用类 10 | /// 11 | class Common 12 | { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MyLinkToken/LinkClass/TransactionEx.cs: -------------------------------------------------------------------------------- 1 | using Nethereum.Hex.HexTypes; 2 | using Nethereum.Web3; 3 | using Nethereum.Web3.Accounts; 4 | using Newtonsoft.Json; 5 | using Newtonsoft.Json.Linq; 6 | using RestSharp; 7 | using RestSharp.Deserializers; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.Net; 11 | using System.Numerics; 12 | using System.Text; 13 | 14 | namespace MyLinkToken.LinkClass 15 | { 16 | class TransactionEx 17 | { 18 | private static RestClient GetDefaultClient() 19 | { 20 | var url = @"https://walletapi.onethingpcs.com/"; 21 | var client = new RestClient(url); 22 | client.ClearHandlers(); 23 | client.AddHandler("application/json", new JsonDeserializer());//设置Accept参数 24 | client.UserAgent = "Go-http-client/1.1"; 25 | return client; 26 | } 27 | 28 | private static RestRequest GetDefaultRequest() 29 | { 30 | var request = new RestRequest(Method.POST); 31 | //request.AddHeader("User-Agent", "Go-http-client/1.1"); 32 | request.AddHeader("Content-Type", "application/json"); 33 | //request.AddHeader("Accept", "application/json"); 34 | request.AddHeader("Connection", "close"); 35 | request.Parameters.Clear(); 36 | return request; 37 | } 38 | 39 | public static Account UnlockAccountFromKeyStoreJson(string json,string password) 40 | { 41 | return Account.LoadFromKeyStore(json, password); 42 | } 43 | public static Account UnlockAccountFromKeyStoreFile(string path,string password) 44 | { 45 | return Account.LoadFromKeyStoreFile(path, password); 46 | } 47 | 48 | /// 49 | /// 查询帐户余额 50 | /// 51 | /// 52 | /// 53 | public static decimal GetBalance(string address) 54 | { 55 | var client = GetDefaultClient(); 56 | var request = GetDefaultRequest(); 57 | var postData = new 58 | { 59 | jsonrpc = "2.0", 60 | method = "eth_getBalance", 61 | @params = new List { address, "delay" }, 62 | id = 1 63 | }; 64 | request.AddJsonBody(postData); 65 | var response = client.Execute(request); 66 | var content = response.Content; 67 | var resultJson = JsonConvert.DeserializeObject(content); 68 | string money_hex = resultJson.result; 69 | HexBigInteger money_bigint = new HexBigInteger(money_hex); 70 | return Nethereum.Util.UnitConversion.Convert.FromWei(money_bigint.Value); 71 | } 72 | /// 73 | /// 获取帐户发出交易的总次数 74 | /// 75 | /// 76 | /// 0x000 77 | public static string GetTransactionCount(string address) 78 | { 79 | var client = GetDefaultClient(); 80 | var request = GetDefaultRequest(); 81 | var postData = new 82 | { 83 | jsonrpc = "2.0", 84 | method = "eth_getTransactionCount", 85 | @params = new List { address, "pending" }, 86 | id = 1 87 | }; 88 | request.AddJsonBody(postData); 89 | var response = client.Execute(request); 90 | var content = response.Content; 91 | var resultJson = JsonConvert.DeserializeObject(content); 92 | string nonce = resultJson.result;//第二步提交需要的参数,该帐户的发出交易总次数 0x 93 | return nonce; 94 | } 95 | 96 | /// 97 | /// 签名一个交易 98 | /// 99 | /// 100 | /// 101 | /// 102 | /// 通过GetTransactionCount获取0x000 16进制的值 103 | /// 签名后的16进制表达形式 104 | public static string SignTransaction(string privatekey,string to_address, decimal to_num,string nonce) 105 | { 106 | var sign = new Nethereum.Signer.TransactionSigner(); 107 | var weiNum = Nethereum.Util.UnitConversion.Convert.ToWei(to_num); 108 | //var hexNum = new HexBigInteger(weiNum).HexValue; 109 | BigInteger nonce_bigint = Convert.ToInt32(nonce, 16); 110 | //var gasLimit = "0x186a0";//100000 111 | //var gasPrice = "0x174876e800";//100000000000------>100000000000x100000/10^18=0.01 112 | var txSign = sign.SignTransaction(privatekey, to_address, weiNum, nonce_bigint, new BigInteger(100000000000), new BigInteger(100000)); 113 | return "0x" + txSign; 114 | } 115 | /// 116 | /// 发送一个已签名的交易 117 | /// 118 | /// 交易成功返回hash,否则返回错误信息 119 | public static string SendRawTransaction(string signTransaction) 120 | { 121 | var client = GetDefaultClient(); 122 | var proxy = new WebProxy("103.73.161.187", 1118); 123 | var cre = new NetworkCredential("MyLinkToken", "MyLinkToken123"); 124 | client.Timeout = 5000; 125 | proxy.Credentials = cre; 126 | client.Proxy = proxy; 127 | client.AddDefaultHeader("Nc", "IN"); 128 | var request = GetDefaultRequest(); 129 | //request.AddHeader("Nc", "IN"); 130 | var postData = new 131 | { 132 | jsonrpc = "2.0", 133 | method = "eth_sendRawTransaction", 134 | @params = new List { signTransaction }, 135 | id = 1, 136 | Nc = "IN" 137 | }; 138 | request.AddJsonBody(postData); 139 | var response = client.Execute(request); 140 | var content = response.Content; 141 | if (string.IsNullOrEmpty(content)) 142 | { 143 | return ""; 144 | } 145 | var resultJson = JsonConvert.DeserializeObject(content); 146 | string txHash = resultJson.result;//交易成功后的hash 147 | if (string.IsNullOrEmpty(txHash)) 148 | { 149 | string errorMsg = resultJson.error.message; 150 | return errorMsg; 151 | } 152 | else 153 | { 154 | return txHash; 155 | } 156 | } 157 | 158 | public static string GetTransactionRecords(string address) 159 | { 160 | var client = GetDefaultClient(); 161 | var request = GetDefaultRequest(); 162 | client.BaseUrl = new Uri(@"https://walletapi.onethingpcs.com/getTransactionRecords"); 163 | var postData = new List { address, "0", "0", "1", "20" }; 164 | request.AddJsonBody(postData); 165 | var response = client.Execute(request); 166 | var content = response.Content; 167 | JArray jarray = JsonConvert.DeserializeObject(content).result; 168 | //var recordsAarray = Newtonsoft.Json.Linq.JArray.Parse(content); 169 | List recordsModels = jarray.ToObject>(); 170 | 171 | //组装html文件 172 | StringBuilder sb = new StringBuilder(); 173 | sb.Append(""); 174 | sb.Append(""); 175 | sb.Append(""); 176 | sb.Append("交易记录"); 177 | sb.Append(""); 217 | sb.Append(""); 218 | sb.Append(""); 219 | sb.Append("
"); 220 | sb.Append(""); 221 | sb.Append(""); 222 | int a = recordsModels.Count; 223 | var rowStyle = ""; 224 | for (int i = 0; i < a; i++) 225 | { 226 | TransactionRecordsModel model = recordsModels[i]; 227 | if (i % 2 == 0) 228 | rowStyle = "td-02"; 229 | else 230 | rowStyle = "td-01"; 231 | rowStyle = "td-02";//交叉显示效果不好 232 | sb.Append(""); 233 | sb.Append(""); 234 | long unixTimeStamp = long.Parse(model.timestamp); 235 | System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); 236 | DateTime dt = startTime.AddSeconds(unixTimeStamp); 237 | sb.Append(""); 238 | sb.Append(""); 239 | sb.Append(""); 249 | sb.Append(""); 250 | } 251 | sb.Append(""); 252 | sb.Append("
哈希:" + model.hash + "
时间:"+ dt.ToString("yyyy-MM-dd HH:mm:ss") + "账户:" + model.tradeAccount + ""); 240 | int type = model.type; 241 | if (type == 0) 242 | sb.Append("支出:"); 243 | else 244 | sb.Append("收入:"); 245 | HexBigInteger money_bigint = new HexBigInteger(model.amount); 246 | decimal money = Nethereum.Util.UnitConversion.Convert.FromWei(money_bigint.Value); 247 | sb.Append(money.ToString()); 248 | sb.Append("
"); 253 | sb.Append("
"); 254 | sb.Append(""); 255 | sb.Append(""); 256 | return sb.ToString(); 257 | } 258 | } 259 | } 260 | -------------------------------------------------------------------------------- /MyLinkToken/LinkClass/TransactionRecordsModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace MyLinkToken.LinkClass 8 | { 9 | class TransactionRecordsModel 10 | { 11 | public string timestamp 12 | { 13 | set; 14 | get; 15 | } 16 | public int type { set; get; } 17 | public string tradeAccount { set; get; } 18 | public string amount { set; get; } 19 | public string cost { set; get; } 20 | public string hash { set; get; } 21 | public string title { set; get; } 22 | public string extra { set; get; } 23 | public string order_id { set; get; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /MyLinkToken/MyLinkToken.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {7AD03D1B-F566-4982-BB9B-7BC565725A81} 8 | WinExe 9 | Properties 10 | MyLinkToken 11 | MyLinkToken 12 | v4.6 13 | 512 14 | ..\ 15 | true 16 | 发布\ 17 | true 18 | Disk 19 | false 20 | Foreground 21 | 7 22 | Days 23 | false 24 | false 25 | true 26 | 0 27 | 1.0.0.%2a 28 | false 29 | false 30 | true 31 | 32 | 33 | 34 | 35 | 36 | AnyCPU 37 | true 38 | full 39 | false 40 | bin\Debug\ 41 | DEBUG;TRACE 42 | prompt 43 | 4 44 | false 45 | 46 | 47 | AnyCPU 48 | pdbonly 49 | true 50 | bin\Release\ 51 | TRACE 52 | prompt 53 | 4 54 | false 55 | 56 | 57 | logo_ico.ico 58 | 59 | 60 | 61 | ..\packages\BouncyCastle.1.8.1\lib\BouncyCastle.Crypto.dll 62 | 63 | 64 | ..\packages\QrCode.Net.0.4.0.0\lib\net45\Gma.QrCodeNet.Encoding.dll 65 | 66 | 67 | ..\..\..\..\..\iHomeSoft\develop\0libs\iHomeSoft.Helper.dll 68 | 69 | 70 | ..\packages\Nethereum.ABI.2.2.3\lib\net451\Nethereum.ABI.dll 71 | 72 | 73 | ..\packages\Nethereum.Contracts.2.2.3\lib\net451\Nethereum.Contracts.dll 74 | 75 | 76 | ..\packages\Nethereum.Hex.2.2.3\lib\net451\Nethereum.Hex.dll 77 | 78 | 79 | ..\packages\Nethereum.JsonRpc.Client.2.2.3\lib\net451\Nethereum.JsonRpc.Client.dll 80 | 81 | 82 | ..\packages\Nethereum.JsonRpc.RpcClient.2.2.3\lib\net451\Nethereum.JsonRpc.RpcClient.dll 83 | 84 | 85 | ..\packages\Nethereum.KeyStore.2.2.3\lib\net451\Nethereum.KeyStore.dll 86 | 87 | 88 | ..\packages\Nethereum.RLP.2.2.3\lib\net451\Nethereum.RLP.dll 89 | 90 | 91 | ..\packages\Nethereum.RPC.2.2.3\lib\net451\Nethereum.RPC.dll 92 | 93 | 94 | ..\packages\Nethereum.Signer.2.2.3\lib\net451\Nethereum.Signer.dll 95 | 96 | 97 | ..\packages\Nethereum.Util.2.2.3\lib\net451\Nethereum.Util.dll 98 | 99 | 100 | ..\packages\Nethereum.Web3.2.2.3\lib\net451\Nethereum.Web3.dll 101 | 102 | 103 | ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll 104 | 105 | 106 | ..\packages\RestSharp.106.2.1\lib\net452\RestSharp.dll 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | ..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | Form 128 | 129 | 130 | FormMain.cs 131 | 132 | 133 | Form 134 | 135 | 136 | FormPassword.cs 137 | 138 | 139 | Form 140 | 141 | 142 | FormQRCode.cs 143 | 144 | 145 | Form 146 | 147 | 148 | FormRename.cs 149 | 150 | 151 | Form 152 | 153 | 154 | FormSend.cs 155 | 156 | 157 | 158 | 159 | Form 160 | 161 | 162 | FormSplash.cs 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | Form 171 | 172 | 173 | FormBugReport.cs 174 | 175 | 176 | Form 177 | 178 | 179 | FormMsg.cs 180 | 181 | 182 | Form 183 | 184 | 185 | FormPop.cs 186 | 187 | 188 | Always 189 | 190 | 191 | Always 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | Designer 204 | 205 | 206 | Designer 207 | 208 | 209 | 210 | FormMain.cs 211 | 212 | 213 | FormPassword.cs 214 | 215 | 216 | FormQRCode.cs 217 | 218 | 219 | FormRename.cs 220 | 221 | 222 | FormSend.cs 223 | 224 | 225 | ResXFileCodeGenerator 226 | Resources.Designer.cs 227 | Designer 228 | 229 | 230 | True 231 | Resources.resx 232 | True 233 | 234 | 235 | FormBugReport.cs 236 | 237 | 238 | FormMsg.cs 239 | 240 | 241 | FormPop.cs 242 | 243 | 244 | FormSplash.cs 245 | 246 | 247 | SettingsSingleFileGenerator 248 | Settings.Designer.cs 249 | 250 | 251 | True 252 | Settings.settings 253 | True 254 | 255 | 256 | 257 | 258 | 259 | False 260 | Microsoft .NET Framework 4 %28x86 和 x64%29 261 | true 262 | 263 | 264 | False 265 | .NET Framework 3.5 SP1 Client Profile 266 | false 267 | 268 | 269 | False 270 | .NET Framework 3.5 SP1 271 | false 272 | 273 | 274 | False 275 | Windows Installer 4.5 276 | true 277 | 278 | 279 | 280 | 281 | 288 | -------------------------------------------------------------------------------- /MyLinkToken/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Runtime.InteropServices; 4 | using System.Threading; 5 | using System.Windows.Forms; 6 | 7 | namespace MyLinkToken 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | //启动自动更新功能 18 | //Updater.CheckUpdateSimple(@"\\192.168.105.12\publish$\VolControl\{0}", "update_c.xml"); 19 | 20 | //各类数据库连接字符串 21 | //sql_sql验证:@"server = IP,PORT\NAME;database = XXX;uid = XX;pwd = XXX;Connection Timeout = 3"; 22 | //sql_windows验证:@"server=localhost;database=XXX;Integrated Security=SSPI;Connection Timeout = 3"; 23 | //localdb:@"Data Source=(LocalDB)\v11.0;Initial Catalog=mdf_pathORdbName;Integrated Security=True;Connection Timeout = 3"; 24 | //sqlite:"Data Source = data_path"; 25 | //OLEDB4.0:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data_path"; 26 | //OLEDB12.0:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=data_path"; 27 | //Oracle:"user id=xxx;password=xxx;data source=192.168.1.1:1521/ORCL" 28 | 29 | //NLog使用示例 30 | //try 31 | //{ 32 | // int a = 0; 33 | // int b = 1; 34 | // var c = b / a; 35 | //} 36 | //catch (Exception err) 37 | //{ 38 | // Helpers.NLogHelper.Default.Error("Error", err); 39 | //} 40 | 41 | #if DEBUG//开发调试不进行异常处理 42 | #else 43 | //设置应用程序处理异常方式:ThreadException处理 44 | Application.SetUnhandledExceptionMode(UnhandledExceptionMode.Automatic); 45 | //全局异常捕捉 46 | Application.ThreadException += Application_ThreadException; //UI线程异常 47 | AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //多线程异常 48 | #endif 49 | 50 | Application.EnableVisualStyles(); 51 | Application.SetCompatibleTextRenderingDefault(false); 52 | //Application.Run(new FormMain()); 53 | //单实例模式启动 54 | RunOneApp(new FormMain(), true); 55 | } 56 | 57 | //UI线程异常 58 | static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 59 | { 60 | WinFormEx.FormBugReport.ShowBug(e.Exception); 61 | } 62 | //多线程异常 63 | static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 64 | { 65 | WinFormEx.FormBugReport.ShowBug((Exception)e.ExceptionObject); 66 | } 67 | 68 | #region 只运行启动一个程序实例 69 | /// 70 | /// 防止程序重复运行 71 | /// 72 | /// new form() 73 | /// 是否激活已运行程序 74 | public static void RunOneApp(Form startForm, bool activate) 75 | { 76 | if (activate) 77 | { 78 | Process instance = RunningInstance(); 79 | if (instance == null) 80 | { 81 | //没有实例在运行 82 | Application.Run(startForm); 83 | } 84 | else 85 | { 86 | //已经有一个实例在运行 87 | HandleRunningInstance(instance); 88 | } 89 | } 90 | else 91 | { 92 | bool initiallyOwned = true; 93 | bool isCreated; 94 | Mutex m = new Mutex(initiallyOwned, Application.ProductName, out isCreated); 95 | if (!(initiallyOwned && isCreated)) 96 | { 97 | MessageBox.Show("程序已在运行,请勿重复打开!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); 98 | Application.Exit(); 99 | } 100 | else 101 | { 102 | Application.Run(startForm); 103 | } 104 | } 105 | } 106 | private static Process RunningInstance() 107 | { 108 | Process current = Process.GetCurrentProcess(); 109 | Process[] processes = Process.GetProcessesByName(current.ProcessName); 110 | //遍历与当前进程名称相同的进程列表 111 | foreach (Process process in processes) 112 | { 113 | //如果实例已经存在则忽略当前进程 114 | if (process.Id != current.Id) 115 | { 116 | //保证要打开的进程同已经存在的进程来自同一文件路径 117 | if (process.MainModule.FileName == current.MainModule.FileName) 118 | { 119 | //返回已经存在的进程 120 | return process; 121 | } 122 | } 123 | } 124 | return null; 125 | } 126 | private static void HandleRunningInstance(Process instance) 127 | { 128 | //MessageBox.Show("已经在运行!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 129 | ShowWindowAsync(instance.MainWindowHandle, 9); //调用api函数,正常显示窗口 130 | SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端 131 | } 132 | [DllImport("User32.dll")] 133 | private static extern bool ShowWindowAsync(System.IntPtr hWnd, int cmdShow); 134 | [DllImport("User32.dll")] 135 | private static extern bool SetForegroundWindow(System.IntPtr hWnd); 136 | #endregion 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /MyLinkToken/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------------- 2 | 3 | @ @ @ @ @ @ @ @ @ @ 4 | @ @ @ @ @ @ @ 5 | @ @ @ @ @ 6 | @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 7 | @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 8 | @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 9 | @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 10 | @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 11 | 12 | Copyright © 2010 iHomeSoft. All rights reserved. 13 | 14 | ---------------------------------------------------------------------------------------------------*/ 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | using System.Runtime.InteropServices; 18 | 19 | // 有关程序集的常规信息通过以下 20 | // 特性集控制。更改这些特性值可修改 21 | // 与程序集关联的信息。 22 | [assembly: AssemblyTitle("MyLinkToken")] 23 | [assembly: AssemblyDescription("")] 24 | [assembly: AssemblyConfiguration("")] 25 | [assembly: AssemblyCompany("iHomeSoft")] 26 | [assembly: AssemblyProduct("")] 27 | [assembly: AssemblyCopyright("Copyright © iHomeSoft 2010")] 28 | [assembly: AssemblyTrademark("")] 29 | [assembly: AssemblyCulture("")] 30 | 31 | // 将 ComVisible 设置为 false 使此程序集中的类型 32 | // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 33 | // 则将该类型上的 ComVisible 特性设置为 true。 34 | [assembly: ComVisible(false)] 35 | 36 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 37 | [assembly: Guid("67a33ab8-8840-4118-a709-7c1e695ca63f")] 38 | 39 | // 程序集的版本信息由下面四个值组成: 40 | // 41 | // 主版本 42 | // 次版本 43 | // 生成号 44 | // 修订号 45 | // 46 | // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 47 | // 方法是按如下所示使用“*”: 48 | // [assembly: AssemblyVersion("1.0.*")] 49 | [assembly: AssemblyVersion("1.3")] 50 | [assembly: AssemblyFileVersion("1.3")] 51 | -------------------------------------------------------------------------------- /MyLinkToken/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace MyLinkToken.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MyLinkToken.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Bitmap AllIn_48px { 67 | get { 68 | object obj = ResourceManager.GetObject("AllIn_48px", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 75 | /// 76 | internal static System.Drawing.Bitmap backgroud { 77 | get { 78 | object obj = ResourceManager.GetObject("backgroud", resourceCulture); 79 | return ((System.Drawing.Bitmap)(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 85 | /// 86 | internal static System.Drawing.Bitmap Copy_48px { 87 | get { 88 | object obj = ResourceManager.GetObject("Copy_48px", resourceCulture); 89 | return ((System.Drawing.Bitmap)(obj)); 90 | } 91 | } 92 | 93 | /// 94 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 95 | /// 96 | internal static System.Drawing.Bitmap Edit_Property_48px { 97 | get { 98 | object obj = ResourceManager.GetObject("Edit Property_48px", resourceCulture); 99 | return ((System.Drawing.Bitmap)(obj)); 100 | } 101 | } 102 | 103 | /// 104 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 105 | /// 106 | internal static System.Drawing.Bitmap FormMsg_Error { 107 | get { 108 | object obj = ResourceManager.GetObject("FormMsg_Error", resourceCulture); 109 | return ((System.Drawing.Bitmap)(obj)); 110 | } 111 | } 112 | 113 | /// 114 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 115 | /// 116 | internal static System.Drawing.Bitmap FormMsg_Info { 117 | get { 118 | object obj = ResourceManager.GetObject("FormMsg_Info", resourceCulture); 119 | return ((System.Drawing.Bitmap)(obj)); 120 | } 121 | } 122 | 123 | /// 124 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 125 | /// 126 | internal static System.Drawing.Bitmap FormMsg_Warn { 127 | get { 128 | object obj = ResourceManager.GetObject("FormMsg_Warn", resourceCulture); 129 | return ((System.Drawing.Bitmap)(obj)); 130 | } 131 | } 132 | 133 | /// 134 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 135 | /// 136 | internal static System.Drawing.Bitmap QR_Code_48px { 137 | get { 138 | object obj = ResourceManager.GetObject("QR Code_48px", resourceCulture); 139 | return ((System.Drawing.Bitmap)(obj)); 140 | } 141 | } 142 | 143 | /// 144 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 145 | /// 146 | internal static System.Drawing.Bitmap SplashProgress { 147 | get { 148 | object obj = ResourceManager.GetObject("SplashProgress", resourceCulture); 149 | return ((System.Drawing.Bitmap)(obj)); 150 | } 151 | } 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /MyLinkToken/Properties/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 | 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 | ..\Resources\backgroud.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | 125 | ..\Resources\AllIn_48px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 126 | 127 | 128 | ..\Resources\dialog-information-4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 129 | 130 | 131 | ..\Resources\dialog-error-5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 132 | 133 | 134 | ..\Resources\QR Code_48px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 135 | 136 | 137 | ..\Resources\Copy_48px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 138 | 139 | 140 | ..\Resources\dialog-warning-3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 141 | 142 | 143 | ..\Resources\InstallProgress.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 144 | 145 | 146 | ..\Resources\Edit Property_48px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 147 | 148 | -------------------------------------------------------------------------------- /MyLinkToken/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace MyLinkToken.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MyLinkToken/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MyLinkToken/Resources/AllIn_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/AllIn_48px.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/Copy_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/Copy_48px.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/Edit Property_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/Edit Property_48px.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/InstallProgress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/InstallProgress.gif -------------------------------------------------------------------------------- /MyLinkToken/Resources/QR Code_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/QR Code_48px.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/backgroud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/backgroud.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/dialog-error-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/dialog-error-5.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/dialog-information-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/dialog-information-4.png -------------------------------------------------------------------------------- /MyLinkToken/Resources/dialog-warning-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/Resources/dialog-warning-3.png -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/AnimateWindows.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows.Forms; 6 | 7 | namespace MyLinkToken.WinFormEx 8 | { 9 | /// 10 | /// 窗体展示动态效果 11 | /// 【一般用在 Form_Load() 与 Form_Closing()事件中】 12 | /// 13 | class AnimateWindows 14 | { 15 | #region 调用系统API 16 | [System.Runtime.InteropServices.DllImport("user32")] 17 | private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); 18 | 19 | /// 20 | /// 普通显示.【激活窗口。在使用了AW_HIDE标志后不要使用这个标志】 21 | /// 22 | public const int AW_ACTIVATE = 0x20000; 23 | 24 | /// 25 | /// 从左向右显示.【该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略】 26 | /// 27 | public const int AW_HOR_POSITIVE = 0x0001; 28 | 29 | /// 30 | /// 从右向左显示.【该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略】 31 | /// 32 | public const int AW_HOR_NEGATIVE = 0x0002; 33 | 34 | /// 35 | /// 从上到下显示.【该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略】 36 | /// 37 | public const int AW_VER_POSITIVE = 0x0004; 38 | 39 | /// 40 | /// 从下到上显示.【该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略】 41 | /// 42 | public const int AW_VER_NEGATIVE = 0x0008; 43 | 44 | /// 45 | /// 从中间向四周.【若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展】 46 | /// 47 | public const int AW_CENTER = 0x0010; 48 | 49 | /// 50 | /// 隐藏窗口.【缺省则显示窗口】 51 | /// 52 | public const int AW_HIDE = 0x10000; 53 | 54 | /// 55 | /// 使用滑动类型.【缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略】 56 | /// 57 | public const int AW_SLIDE = 0x40000; 58 | 59 | /// 60 | /// 使用淡出效果【只有当hWnd为顶层窗口的时候才可以使用此标志】 61 | /// 62 | public const int AW_BLEND = 0x80000; 63 | #endregion 64 | 65 | /// 66 | /// 窗体显示时的动画效果 67 | /// 68 | /// 目标窗体对象 69 | /// 自定义动画时间,单位:毫秒 70 | /// 自定义组合动画标准。通过该类中的常量,自由组合。例如:AW_CENTER 或者 AW_SLIDE | AW_HOR_POSITIVE | AW_VER_POSITIVE 等 71 | public static void ShowAnimateWindow(Form form, int dwTime, int dwFalg) 72 | { 73 | IntPtr hwnd = form.Handle;//窗体句柄 74 | int time = dwTime;//动画时间 75 | 76 | AnimateWindow(hwnd, time, dwFalg); 77 | } 78 | 79 | /// 80 | /// 窗体关闭或者隐藏时的动画效果(滑动类型) 81 | /// 82 | /// 目标窗体对象 83 | /// 自定义动画时间,单位:毫秒 84 | /// 自定义组合动画标志。通过该类中的常量,自由组合。 85 | /// 已经配置好了隐藏属性,只需要提供特效即可。 86 | /// 特效标志使用以下值:AW_HOR_POSITIVE、AW_HOR_NEGATIVE、AW_VER_POSITIVE、AW_VER_NEGATIVE、AW_CENTER 87 | /// 88 | public static void HideAnimateWindowSlide(Form form, int dwTime, int dwFalg) 89 | { 90 | IntPtr hwnd = form.Handle;//窗体句柄 91 | int time = dwTime;//动画时间 92 | 93 | AnimateWindow(hwnd, time, AW_HIDE | AW_SLIDE | dwFalg); 94 | } 95 | 96 | /// 97 | /// 窗体关闭或者隐藏时的动画效果(淡入淡出类型) 98 | /// 99 | /// 目标窗体对象 100 | /// 自定义动画时间,单位:毫秒 101 | /// 自定义组合动画标志。通过该类中的常量,自由组合。 102 | /// 已经配置好了隐藏属性,只需要提供特效即可。 103 | /// 特效标志使用以下值:AW_HOR_POSITIVE、AW_HOR_NEGATIVE、AW_VER_POSITIVE、AW_VER_NEGATIVE、AW_CENTER 104 | /// 105 | public static void HideAnimateWindowBlend(Form form, int dwTime, int dwFalg) 106 | { 107 | IntPtr hwnd = form.Handle;//窗体句柄 108 | int time = dwTime;//动画时间 109 | 110 | AnimateWindow(hwnd, time, AW_HIDE | AW_BLEND | dwFalg); 111 | } 112 | 113 | /// 114 | /// 窗体显示时的动画效果 115 | /// 116 | /// 目标窗体对象 117 | /// 自定义动画时间,单位:毫秒 118 | public static void ShowAnimateWindowRandom(Form form, int dwTime) 119 | { 120 | int animateType = 10; 121 | Random a = new Random(); 122 | int dwFlags = (int)a.Next(animateType); 123 | 124 | int time = dwTime;//动画时间 125 | 126 | IntPtr hwnd = form.Handle;//窗体句柄 127 | 128 | switch (dwFlags) 129 | { 130 | case 0://普通显示 131 | AnimateWindow(hwnd, time, AW_ACTIVATE); 132 | break; 133 | case 1://从左向右显示 134 | AnimateWindow(hwnd, time, AW_HOR_POSITIVE); 135 | break; 136 | case 2://从右向左显示 137 | AnimateWindow(hwnd, time, AW_HOR_NEGATIVE); 138 | break; 139 | case 3://从上到下显示 140 | AnimateWindow(hwnd, time, AW_VER_POSITIVE); 141 | break; 142 | case 4://从下到上显示 143 | AnimateWindow(hwnd, time, AW_VER_NEGATIVE); 144 | break; 145 | case 5://透明渐变显示 146 | AnimateWindow(hwnd, time, AW_BLEND); 147 | break; 148 | case 6://从中间向四周 149 | AnimateWindow(hwnd, time, AW_CENTER); 150 | break; 151 | case 7://左上角伸展 152 | AnimateWindow(hwnd, time, AW_SLIDE | AW_HOR_POSITIVE | AW_VER_POSITIVE); 153 | break; 154 | case 8://左下角伸展 155 | AnimateWindow(hwnd, time, AW_SLIDE | AW_HOR_POSITIVE | AW_VER_NEGATIVE); 156 | break; 157 | case 9://右上角伸展 158 | AnimateWindow(hwnd, time, AW_SLIDE | AW_HOR_NEGATIVE | AW_VER_POSITIVE); 159 | break; 160 | case 10://右下角伸展 161 | AnimateWindow(hwnd, time, AW_SLIDE | AW_HOR_NEGATIVE | AW_VER_NEGATIVE); 162 | break; 163 | } 164 | } 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/EasyMsg.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Windows.Forms; 7 | 8 | namespace MyLinkToken.WinFormEx 9 | { 10 | /// 11 | /// 封装易用的messagebox 12 | /// 13 | class EasyMsg 14 | { 15 | #region MessageBox扩展操作 16 | /// 17 | /// 显示一般的提示信息 18 | /// 19 | /// 提示信息 20 | public static DialogResult ShowTips(string message) 21 | { 22 | return MessageBox.Show(message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 23 | } 24 | /// 25 | /// 显示询问用户信息,并显示提示标志 26 | /// 27 | /// 错误信息 28 | public static DialogResult ShowTipsAndYesNo(string message) 29 | { 30 | return MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); 31 | } 32 | /// 33 | /// 显示询问用户信息,并显示提示标志 34 | /// 35 | /// 错误信息 36 | public static DialogResult ShowTipsAndYesNoCancel(string message) 37 | { 38 | return MessageBox.Show(message, "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); 39 | } 40 | 41 | /// 42 | /// 显示警告信息 43 | /// 44 | /// 警告信息 45 | public static DialogResult ShowWarning(string message) 46 | { 47 | return MessageBox.Show(message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); 48 | } 49 | 50 | /// 51 | /// 显示询问用户信息,并显示警告标志 52 | /// 53 | /// 警告信息 54 | public static DialogResult ShowWarningAndYesNo(string message) 55 | { 56 | return MessageBox.Show(message, "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 57 | } 58 | 59 | /// 60 | /// 显示错误信息 61 | /// 62 | /// 错误信息 63 | public static DialogResult ShowError(string message) 64 | { 65 | return MessageBox.Show(message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 66 | } 67 | 68 | /// 69 | /// 显示询问用户信息,并显示错误标志 70 | /// 71 | /// 错误信息 72 | public static DialogResult ShowErrorAndYesNo(string message) 73 | { 74 | return MessageBox.Show(message, "错误", MessageBoxButtons.YesNo, MessageBoxIcon.Error); 75 | } 76 | 77 | /// 78 | /// 显示一个确认选择对话框 79 | /// 80 | /// 对话框的选择内容提示信息 81 | /// 如果选择Yes则返回true,否则返回false 82 | public static bool ConfirmYesNo(string prompt) 83 | { 84 | return MessageBox.Show(prompt, "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; 85 | } 86 | #endregion 87 | 88 | #region 基于自定义窗体 FormMsg 的扩展 89 | /// 90 | /// 自定义MessageBox窗体 91 | /// 92 | /// 消息内容 93 | /// 提示类别 94 | /// 95 | public static bool ShowMsg(string msg, MsgType mt) 96 | { 97 | FormMsg frm = new FormMsg(); 98 | frm.mt = mt; 99 | switch (mt) 100 | { 101 | case MsgType.Info: 102 | frm.labelText = "提示:\r\n\r\n" + msg; 103 | break; 104 | case MsgType.Warn: 105 | frm.labelText = "警告:\r\n\r\n" + msg; 106 | break; 107 | case MsgType.Error: 108 | frm.labelText = "错误:\r\n\r\n" + msg; 109 | break; 110 | default: 111 | break; 112 | } 113 | frm.ShowDialog(); 114 | return frm.result; 115 | } 116 | #endregion 117 | 118 | #region 右下角弹窗消息,基于 FormPop 119 | /// 120 | /// 右下角弹窗消息 121 | /// 122 | /// 123 | public static void ShowPop(string msg) 124 | { 125 | FormPop frmPop = new FormPop(); 126 | int x = Screen.PrimaryScreen.WorkingArea.Width - frmPop.Width; 127 | int y = Screen.PrimaryScreen.WorkingArea.Height; 128 | Point p = new Point(x, y); 129 | frmPop.PointToScreen(p); 130 | frmPop.msg = msg; 131 | frmPop.Location = p; 132 | frmPop.Opacity = 1; 133 | frmPop.Show(); 134 | } 135 | #endregion 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormBugReport.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken.WinFormEx 2 | { 3 | partial class FormBugReport 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 32 | this.lbErr = new System.Windows.Forms.Label(); 33 | this.btnOK = new System.Windows.Forms.Button(); 34 | this.label2 = new System.Windows.Forms.Label(); 35 | this.lbErrNo = new System.Windows.Forms.Label(); 36 | this.panel1 = new System.Windows.Forms.Panel(); 37 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 38 | this.panel1.SuspendLayout(); 39 | this.SuspendLayout(); 40 | // 41 | // pictureBox1 42 | // 43 | this.pictureBox1.Image = global::MyLinkToken.Properties.Resources.FormMsg_Info; 44 | this.pictureBox1.Location = new System.Drawing.Point(25, 20); 45 | this.pictureBox1.Name = "pictureBox1"; 46 | this.pictureBox1.Size = new System.Drawing.Size(50, 50); 47 | this.pictureBox1.TabIndex = 0; 48 | this.pictureBox1.TabStop = false; 49 | // 50 | // lbErr 51 | // 52 | this.lbErr.Font = new System.Drawing.Font("新宋体", 9.5F); 53 | this.lbErr.Location = new System.Drawing.Point(100, 20); 54 | this.lbErr.Name = "lbErr"; 55 | this.lbErr.Size = new System.Drawing.Size(301, 23); 56 | this.lbErr.TabIndex = 1; 57 | this.lbErr.Text = "非常抱歉!程序遇到了未知的异常。"; 58 | // 59 | // btnOK 60 | // 61 | this.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 62 | this.btnOK.Location = new System.Drawing.Point(337, 131); 63 | this.btnOK.Name = "btnOK"; 64 | this.btnOK.Size = new System.Drawing.Size(77, 23); 65 | this.btnOK.TabIndex = 9; 66 | this.btnOK.Text = "重启程序"; 67 | this.btnOK.UseVisualStyleBackColor = true; 68 | this.btnOK.Click += new System.EventHandler(this.btnOK_Click); 69 | // 70 | // label2 71 | // 72 | this.label2.AutoSize = true; 73 | this.label2.Location = new System.Drawing.Point(101, 45); 74 | this.label2.Name = "label2"; 75 | this.label2.Size = new System.Drawing.Size(65, 12); 76 | this.label2.TabIndex = 2; 77 | this.label2.Text = "异常信息:"; 78 | // 79 | // lbErrNo 80 | // 81 | this.lbErrNo.Dock = System.Windows.Forms.DockStyle.Fill; 82 | this.lbErrNo.Location = new System.Drawing.Point(0, 0); 83 | this.lbErrNo.Name = "lbErrNo"; 84 | this.lbErrNo.Size = new System.Drawing.Size(311, 60); 85 | this.lbErrNo.TabIndex = 3; 86 | // 87 | // panel1 88 | // 89 | this.panel1.Controls.Add(this.lbErrNo); 90 | this.panel1.Location = new System.Drawing.Point(103, 65); 91 | this.panel1.Name = "panel1"; 92 | this.panel1.Size = new System.Drawing.Size(311, 60); 93 | this.panel1.TabIndex = 10; 94 | // 95 | // FormBugReport 96 | // 97 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 98 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 99 | this.ClientSize = new System.Drawing.Size(426, 166); 100 | this.Controls.Add(this.panel1); 101 | this.Controls.Add(this.btnOK); 102 | this.Controls.Add(this.label2); 103 | this.Controls.Add(this.lbErr); 104 | this.Controls.Add(this.pictureBox1); 105 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; 106 | this.Name = "FormBugReport"; 107 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 108 | this.Text = "异常报告"; 109 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 110 | this.panel1.ResumeLayout(false); 111 | this.ResumeLayout(false); 112 | this.PerformLayout(); 113 | 114 | } 115 | 116 | #endregion 117 | 118 | private System.Windows.Forms.PictureBox pictureBox1; 119 | private System.Windows.Forms.Label lbErr; 120 | private System.Windows.Forms.Button btnOK; 121 | private System.Windows.Forms.Label label2; 122 | private System.Windows.Forms.Label lbErrNo; 123 | private System.Windows.Forms.Panel panel1; 124 | } 125 | } -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormBugReport.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Windows.Forms; 9 | 10 | namespace MyLinkToken.WinFormEx 11 | { 12 | public partial class FormBugReport : Form 13 | { 14 | #region 全局变量 15 | Exception _bugInfo; 16 | #endregion 17 | 18 | /// 19 | /// Bug发送窗体 20 | /// 21 | /// Bug信息 22 | public FormBugReport(Exception bugInfo) 23 | { 24 | InitializeComponent(); 25 | _bugInfo = bugInfo; 26 | lbErrNo.Text = _bugInfo.Message; 27 | } 28 | 29 | /// 30 | /// 提示Bug 31 | /// 32 | /// Bug信息 33 | public static void ShowBug(Exception bugInfo) 34 | { 35 | new FormBugReport(bugInfo).ShowDialog(); 36 | } 37 | 38 | private void btnOK_Click(object sender, EventArgs e) 39 | { 40 | Application.Restart(); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormBugReport.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 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormMsg.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken.WinFormEx 2 | { 3 | partial class FormMsg 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.btnCancel = new System.Windows.Forms.Button(); 35 | this.btnOk = new System.Windows.Forms.Button(); 36 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 37 | this.panel1.SuspendLayout(); 38 | this.SuspendLayout(); 39 | // 40 | // pictureBox1 41 | // 42 | this.pictureBox1.Location = new System.Drawing.Point(14, 19); 43 | this.pictureBox1.Name = "pictureBox1"; 44 | this.pictureBox1.Size = new System.Drawing.Size(48, 48); 45 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; 46 | this.pictureBox1.TabIndex = 7; 47 | this.pictureBox1.TabStop = false; 48 | // 49 | // panel1 50 | // 51 | this.panel1.BackColor = System.Drawing.Color.Transparent; 52 | this.panel1.Controls.Add(this.label1); 53 | this.panel1.Location = new System.Drawing.Point(80, 19); 54 | this.panel1.Name = "panel1"; 55 | this.panel1.Size = new System.Drawing.Size(298, 86); 56 | this.panel1.TabIndex = 8; 57 | // 58 | // label1 59 | // 60 | this.label1.BackColor = System.Drawing.Color.Transparent; 61 | this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 62 | this.label1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; 63 | this.label1.Location = new System.Drawing.Point(0, 0); 64 | this.label1.Name = "label1"; 65 | this.label1.Padding = new System.Windows.Forms.Padding(5, 0, 0, 0); 66 | this.label1.Size = new System.Drawing.Size(298, 86); 67 | this.label1.TabIndex = 0; 68 | this.label1.Text = "label1"; 69 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 70 | // 71 | // btnCancel 72 | // 73 | this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; 74 | this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 75 | this.btnCancel.Location = new System.Drawing.Point(301, 115); 76 | this.btnCancel.Name = "btnCancel"; 77 | this.btnCancel.Size = new System.Drawing.Size(48, 23); 78 | this.btnCancel.TabIndex = 10; 79 | this.btnCancel.Text = "取 消"; 80 | this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); 81 | // 82 | // btnOk 83 | // 84 | this.btnOk.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; 85 | this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 86 | this.btnOk.Location = new System.Drawing.Point(233, 115); 87 | this.btnOk.Name = "btnOk"; 88 | this.btnOk.Size = new System.Drawing.Size(48, 23); 89 | this.btnOk.TabIndex = 9; 90 | this.btnOk.Text = "确 定"; 91 | this.btnOk.Click += new System.EventHandler(this.btnOk_Click); 92 | // 93 | // FormMsg 94 | // 95 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 96 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 97 | this.ClientSize = new System.Drawing.Size(380, 149); 98 | this.ControlBox = false; 99 | this.Controls.Add(this.btnCancel); 100 | this.Controls.Add(this.btnOk); 101 | this.Controls.Add(this.panel1); 102 | this.Controls.Add(this.pictureBox1); 103 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 104 | this.Name = "FormMsg"; 105 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 106 | this.Text = "MessageBox"; 107 | this.Load += new System.EventHandler(this.FormMsg_Load); 108 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 109 | this.panel1.ResumeLayout(false); 110 | this.ResumeLayout(false); 111 | 112 | } 113 | 114 | #endregion 115 | 116 | private System.Windows.Forms.PictureBox pictureBox1; 117 | private System.Windows.Forms.Panel panel1; 118 | private System.Windows.Forms.Label label1; 119 | private System.Windows.Forms.Button btnCancel; 120 | private System.Windows.Forms.Button btnOk; 121 | } 122 | } -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormMsg.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Windows.Forms; 9 | 10 | namespace MyLinkToken.WinFormEx 11 | { 12 | public partial class FormMsg : Form 13 | { 14 | public FormMsg() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | public Boolean result; 20 | public string labelText = string.Empty; 21 | public MsgType mt; 22 | 23 | private void FormMsg_Load(object sender, EventArgs e) 24 | { 25 | switch (mt) 26 | { 27 | case MsgType.Info: 28 | this.pictureBox1.Image = MyLinkToken.Properties.Resources.FormMsg_Info; 29 | break; 30 | case MsgType.Warn: 31 | this.pictureBox1.Image = MyLinkToken.Properties.Resources.FormMsg_Warn; 32 | break; 33 | case MsgType.Error: 34 | this.pictureBox1.Image = MyLinkToken.Properties.Resources.FormMsg_Error; 35 | break; 36 | default: 37 | break; 38 | } 39 | this.label1.Text = this.labelText; 40 | result = false; 41 | } 42 | 43 | private void btnOk_Click(object sender, EventArgs e) 44 | { 45 | result = true; 46 | this.Close(); 47 | } 48 | 49 | private void btnCancel_Click(object sender, EventArgs e) 50 | { 51 | result = false; 52 | this.Close(); 53 | } 54 | } 55 | /// 56 | /// 消息框类型 57 | /// 58 | public enum MsgType 59 | { 60 | Info, 61 | Warn, 62 | Error 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormMsg.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 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormPop.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken.WinFormEx 2 | { 3 | partial class FormPop 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormPop)); 33 | this.timer1 = new System.Windows.Forms.Timer(this.components); 34 | this.timer2 = new System.Windows.Forms.Timer(this.components); 35 | this.panel1 = new System.Windows.Forms.Panel(); 36 | this.label1 = new System.Windows.Forms.Label(); 37 | this.button1 = new System.Windows.Forms.Button(); 38 | this.panel1.SuspendLayout(); 39 | this.SuspendLayout(); 40 | // 41 | // timer1 42 | // 43 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick); 44 | // 45 | // timer2 46 | // 47 | this.timer2.Tick += new System.EventHandler(this.timer2_Tick); 48 | // 49 | // panel1 50 | // 51 | this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 52 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 53 | this.panel1.Controls.Add(this.label1); 54 | this.panel1.Controls.Add(this.button1); 55 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 56 | this.panel1.Location = new System.Drawing.Point(0, 0); 57 | this.panel1.Name = "panel1"; 58 | this.panel1.Size = new System.Drawing.Size(257, 109); 59 | this.panel1.TabIndex = 4; 60 | // 61 | // label1 62 | // 63 | this.label1.BackColor = System.Drawing.Color.Transparent; 64 | this.label1.Location = new System.Drawing.Point(12, 18); 65 | this.label1.Name = "label1"; 66 | this.label1.Size = new System.Drawing.Size(234, 81); 67 | this.label1.TabIndex = 3; 68 | this.label1.Text = "label1"; 69 | // 70 | // button1 71 | // 72 | this.button1.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; 73 | this.button1.Location = new System.Drawing.Point(240, -1); 74 | this.button1.Name = "button1"; 75 | this.button1.Size = new System.Drawing.Size(16, 16); 76 | this.button1.TabIndex = 2; 77 | this.button1.Click += new System.EventHandler(this.button1_Click); 78 | // 79 | // FormPop 80 | // 81 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); 82 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 83 | this.BackColor = System.Drawing.SystemColors.Window; 84 | this.ClientSize = new System.Drawing.Size(257, 109); 85 | this.Controls.Add(this.panel1); 86 | this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 87 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 88 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 89 | this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); 90 | this.MaximizeBox = false; 91 | this.MinimizeBox = false; 92 | this.Name = "FormPop"; 93 | this.Text = "消息提醒"; 94 | this.Load += new System.EventHandler(this.FormPop_Load); 95 | this.panel1.ResumeLayout(false); 96 | this.ResumeLayout(false); 97 | 98 | } 99 | 100 | #endregion 101 | 102 | private System.Windows.Forms.Timer timer1; 103 | private System.Windows.Forms.Button button1; 104 | private System.Windows.Forms.Timer timer2; 105 | private System.Windows.Forms.Label label1; 106 | private System.Windows.Forms.Panel panel1; 107 | } 108 | } -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormPop.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Windows.Forms; 9 | 10 | namespace MyLinkToken.WinFormEx 11 | { 12 | public partial class FormPop : Form 13 | { 14 | public string msg; 15 | 16 | public FormPop() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void timer1_Tick(object sender, EventArgs e) 22 | { 23 | // 通过修改窗体透明度实现窗体渐渐消失, 直至关闭 24 | // 修改定时器间隔为0.1秒 25 | timer1.Interval = 100; 26 | // 开始执行弹出窗渐渐透明 27 | if (this.Opacity > 0 && this.Opacity <= 1) 28 | this.Opacity = this.Opacity - 0.1;// 每次降低0.05 29 | if (this.Opacity <= 0.1) 30 | this.Close(); 31 | } 32 | 33 | private void FormPop_Load(object sender, EventArgs e) 34 | { 35 | // 定时器延迟3秒启动 36 | timer1.Interval = 3000; 37 | timer1.Start(); 38 | timer2.Start(); 39 | this.label1.Text = msg; 40 | } 41 | 42 | private void button1_Click(object sender, EventArgs e) 43 | { 44 | this.Close(); 45 | } 46 | 47 | private void timer2_Tick(object sender, EventArgs e) 48 | { 49 | timer2.Stop(); 50 | int x = this.Location.X; 51 | int y = this.Location.Y; 52 | for (int i = 0; i <= this.Height; i++) 53 | { 54 | this.Location = new Point(x, y - i); 55 | System.Threading.Thread.Sleep(3); 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormSplash.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace MyLinkToken.WinFormEx 2 | { 3 | partial class FormSplash 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.label1 = new System.Windows.Forms.Label(); 32 | this.lbProgress = new System.Windows.Forms.Label(); 33 | this.lbAppName = new System.Windows.Forms.Label(); 34 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 35 | this.lbTick = new System.Windows.Forms.Label(); 36 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 37 | this.SuspendLayout(); 38 | // 39 | // label1 40 | // 41 | this.label1.AutoSize = true; 42 | this.label1.BackColor = System.Drawing.Color.Transparent; 43 | this.label1.ForeColor = System.Drawing.Color.White; 44 | this.label1.Location = new System.Drawing.Point(52, 163); 45 | this.label1.Name = "label1"; 46 | this.label1.Size = new System.Drawing.Size(305, 12); 47 | this.label1.TabIndex = 1; 48 | this.label1.Text = "Copyright © 2018 wankeyun.cc. All rights reserved."; 49 | // 50 | // lbProgress 51 | // 52 | this.lbProgress.AutoSize = true; 53 | this.lbProgress.BackColor = System.Drawing.Color.Transparent; 54 | this.lbProgress.ForeColor = System.Drawing.Color.White; 55 | this.lbProgress.Location = new System.Drawing.Point(38, 96); 56 | this.lbProgress.Name = "lbProgress"; 57 | this.lbProgress.Size = new System.Drawing.Size(71, 12); 58 | this.lbProgress.TabIndex = 2; 59 | this.lbProgress.Text = "加载情况..."; 60 | // 61 | // lbAppName 62 | // 63 | this.lbAppName.AutoSize = true; 64 | this.lbAppName.BackColor = System.Drawing.Color.Transparent; 65 | this.lbAppName.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 66 | this.lbAppName.ForeColor = System.Drawing.Color.White; 67 | this.lbAppName.Location = new System.Drawing.Point(35, 32); 68 | this.lbAppName.Name = "lbAppName"; 69 | this.lbAppName.Size = new System.Drawing.Size(268, 25); 70 | this.lbAppName.TabIndex = 3; 71 | this.lbAppName.Text = "开源链克口袋 - MyLinkToken"; 72 | // 73 | // pictureBox1 74 | // 75 | this.pictureBox1.Image = global::MyLinkToken.Properties.Resources.SplashProgress; 76 | this.pictureBox1.Location = new System.Drawing.Point(21, 141); 77 | this.pictureBox1.Name = "pictureBox1"; 78 | this.pictureBox1.Size = new System.Drawing.Size(320, 6); 79 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; 80 | this.pictureBox1.TabIndex = 0; 81 | this.pictureBox1.TabStop = false; 82 | // 83 | // lbTick 84 | // 85 | this.lbTick.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 86 | this.lbTick.BackColor = System.Drawing.Color.Transparent; 87 | this.lbTick.ForeColor = System.Drawing.Color.White; 88 | this.lbTick.Location = new System.Drawing.Point(178, 122); 89 | this.lbTick.Name = "lbTick"; 90 | this.lbTick.Size = new System.Drawing.Size(165, 12); 91 | this.lbTick.TabIndex = 5; 92 | this.lbTick.Text = "0"; 93 | this.lbTick.TextAlign = System.Drawing.ContentAlignment.MiddleRight; 94 | // 95 | // FormSplash 96 | // 97 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 98 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 99 | this.BackgroundImage = global::MyLinkToken.Properties.Resources.backgroud; 100 | this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 101 | this.ClientSize = new System.Drawing.Size(360, 180); 102 | this.Controls.Add(this.lbTick); 103 | this.Controls.Add(this.pictureBox1); 104 | this.Controls.Add(this.lbAppName); 105 | this.Controls.Add(this.lbProgress); 106 | this.Controls.Add(this.label1); 107 | this.DoubleBuffered = true; 108 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 109 | this.Name = "FormSplash"; 110 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 111 | this.Text = "FormSplash"; 112 | this.Load += new System.EventHandler(this.FormSplash_Load); 113 | this.TextChanged += new System.EventHandler(this.FormSplash_TextChanged); 114 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 115 | this.ResumeLayout(false); 116 | this.PerformLayout(); 117 | 118 | } 119 | 120 | #endregion 121 | private System.Windows.Forms.Label label1; 122 | private System.Windows.Forms.Label lbProgress; 123 | private System.Windows.Forms.Label lbAppName; 124 | private System.Windows.Forms.PictureBox pictureBox1; 125 | private System.Windows.Forms.Label lbTick; 126 | } 127 | } -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormSplash.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Threading; 4 | using System.Windows.Forms; 5 | 6 | namespace MyLinkToken.WinFormEx 7 | { 8 | public partial class FormSplash : Form 9 | { 10 | public FormSplash() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void FormSplash_TextChanged(object sender, EventArgs e) 16 | { 17 | lbProgress.Text = this.Text; 18 | } 19 | private void FormSplash_Load(object sender, EventArgs e) 20 | { 21 | var t = new System.Windows.Forms.Timer(); 22 | int a = 0; 23 | t.Interval = 1; 24 | t.Tick += (s, x) => 25 | { 26 | lbTick.Text = a++.ToString(); 27 | }; 28 | t.Start(); 29 | } 30 | } 31 | 32 | /// 33 | /// 加载窗体的调用方法类 34 | /// 35 | public class SplashForm 36 | { 37 | private static object _obj = new object(); 38 | 39 | private static Form _splashForm = null; 40 | 41 | private static Thread _splashThread = null; 42 | 43 | private delegate void ChangeProgressTextDelegate(string s); 44 | 45 | public static void Show() 46 | { 47 | if (_splashThread != null) 48 | return; 49 | 50 | _splashThread = new Thread(new ThreadStart(delegate () 51 | { 52 | CreateInstance(typeof(FormSplash)); 53 | Application.Run(_splashForm); 54 | })); 55 | 56 | _splashThread.IsBackground = true; 57 | _splashThread.SetApartmentState(ApartmentState.STA); 58 | _splashThread.Start(); 59 | } 60 | 61 | public static void ChangeProgressText(string status) 62 | { 63 | ChangeProgressTextDelegate de = new ChangeProgressTextDelegate(ChangeText); 64 | _splashForm.Invoke(de, status); 65 | } 66 | 67 | public static void Close() 68 | { 69 | if (_splashThread == null || _splashForm == null) 70 | return; 71 | 72 | try 73 | { 74 | _splashForm.Invoke(new MethodInvoker(_splashForm.Close)); 75 | } 76 | catch (Exception) 77 | { 78 | 79 | } 80 | _splashThread = null; 81 | _splashForm = null; 82 | } 83 | 84 | private static void ChangeText(string title) 85 | { 86 | _splashForm.Text = title.ToString(); 87 | } 88 | 89 | private static void CreateInstance(Type FormType) 90 | { 91 | if (_splashForm == null) 92 | { 93 | lock (_obj) 94 | { 95 | object obj = FormType.InvokeMember(null, 96 | BindingFlags.DeclaredOnly | 97 | BindingFlags.Public | BindingFlags.NonPublic | 98 | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); 99 | _splashForm = obj as Form; 100 | _splashForm.TopMost = true; 101 | _splashForm.ShowInTaskbar = false; 102 | _splashForm.BringToFront(); 103 | _splashForm.StartPosition = FormStartPosition.CenterScreen; 104 | if (_splashForm == null) 105 | { 106 | throw (new Exception()); 107 | } 108 | } 109 | } 110 | } 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /MyLinkToken/WinFormEx/FormSplash.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 | -------------------------------------------------------------------------------- /MyLinkToken/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /MyLinkToken/logo_ico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/MyLinkToken/logo_ico.ico -------------------------------------------------------------------------------- /MyLinkToken/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MyLinkToken 2 | 开源链克口袋,玩客币钱包 3 | 本项目源码使用GPLv3协议进行开源,允许任何人查看、修改,并散播本项目的源代码, 条件是如果你要发布修改后的版本,就要连源代码一起公布,提到源码的出处等,同样遵守GPLv3协议, 否则将承担相应的法律责任。 4 | 项目更新日志:http://www.wankeyun.cc/forum-12.htm 5 | 6 | ## 先说下目前已实现的功能: 7 | 一、链克口袋账户管理:导入、导出(备份)、删除 8 | 二、导入账户文件存放在根目录的“keystore”文件夹下 9 | 三、每次转赠需要输入密码,程序不保存,不传输您的密码 10 | 四、代码开源:https://github.com/ImbaQ/MyLinkToken 11 | 五、程序已实现链克转赠,并且无需实名,无需实名,无需实名!不管之前是使用国内还是内外app生成的口袋文件,不管之前是否实名过,导入口袋文件后都可以使用!!!!! 12 | 13 | ## 后期开发计划: 14 | ### 一期计划:完成全功能钱包 15 | 1、转赠历史记录查询 16 | 2、口袋别名设置 17 | 3、口袋二维码显示 18 | 4、口袋文件生成 19 | ### 二期计划:增强功能 20 | 1、口袋到账实时提醒 21 | 2、自定义常用转赠帐户并可设置别名 22 | 3、优化统计信息,完善收益、支出报表 23 | ### 三期计划:开发移动端 24 | 1、安卓app 25 | 2、苹果app 26 | 27 | ![image](http://ww2.sinaimg.cn/large/005zWjpnly1fnxx2kcc6jg30og0bl7wh.gif) 28 | 29 | 30 | MyLinkToken源码地址:https://github.com/ImbaQ/MyLinkToken 31 | 32 | 33 | 昨晚脑子一热发布了开源版的链克口袋,今天加群的火热,传播的也飞快,甚至传出我是迅雷的人,承蒙各位厚爱了,我真的不是,这版开源钱包的实现原理还是通过了迅雷的中心服务器来完成转账的,昨天我也说过,理论上迅雷想封那个钱包就可以封掉。 34 | 35 | 另外,今天很多热心的朋友提醒开源的风险,可能有些心怀不轨的改了代码在发布来盗取使用者的链克,在此郑重声明: 36 | 37 | 1、本开源代码只推荐开发者使用,比如动物游戏商可以开发自动提现功能,技术宅玩家可以开发自动喂食功能 38 | 39 | 2、一般用户请使用国际版钱包app,千万不要下载未知的应用使用链克口袋转账!!!!! 40 | 41 | 3、以后功能更新我只提供源代码,不再发布编译好的程序,技术爱好者可以自行编译。 42 | 43 | 4、我会持续放出js、python、php等语言的转账demo程序,提供开发者参考 44 | 45 | 5、对于已经下载了第一版本MyLinkToken的用户请分别验证压缩包和主程序的MD5值 46 | MyLinkToken_1.0.0.0.zip压缩包MD5:53A1CCC7DE0CD29F5363E235C349C7F0 47 | MyLinkToken.exe主程序MD5:214702E002B8D7BF49B946D0FF6EC959 48 | 49 | 50 | -------------------------------------------------------------------------------------- 51 | 52 | 迅雷养鸽技术群(2000人大群):646128 (点击链接加入群【迅雷养鸽技术群】:https://jq.qq.com/?_wv=1027&k=5zFKOru) 53 | MyLinkToken用户交流①:150090828 (点击链接加入群【MyLinkToken用户交流①】:https://jq.qq.com/?_wv=1027&k=5Xfxq3Y) 54 | -------------------------------------------------------------------------------- /backgroud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/backgroud.png -------------------------------------------------------------------------------- /logo_ico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/logo_ico.ico -------------------------------------------------------------------------------- /see.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biheBlockChain/MyLinkToken/d0c307eda685da2124d303601a6b60f22edac3d7/see.gif --------------------------------------------------------------------------------