# 32位
electron-packager . 'ProjectName' --platform=win32 --arch=ia32 --icon=logo.ico --out=./OutputPath --asar --app-version=1.0.0

# 64位
electron-packager . 'ProjectName' --platform=win32 --arch=x64 --icon=logo.ico --out=./OutputPath --asar --app-version=1.0.0

包含 a-z、A-Z、0-9,如果要追加符号,按序增加在数组$string_arr内,并修改mt_rand(1, 62)的第二个参数为增加后的数组的最大键值。

<?php
function rand_string($lenght){
    $string_arr = [
        1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd', 5 => 'e', 6 => 'f', 7 => 'g',
        8 => 'h', 9 => 'i', 10 => 'j', 11 => 'k', 12 => 'l', 13 => 'm', 14 => 'n',
        15 => 'o', 16 => 'p', 17 => 'q', 18 => 'r', 19 => 's', 20 => 't', 21 => 'u',
        22 => 'v', 23 => 'w', 24 => 'x', 25 => 'y', 26 => 'z', 27 => 'A', 28 => 'B',
        29 => 'C', 30 => 'D', 31 => 'E', 32 => 'F', 33 => 'G', 34 => 'H', 35 => 'I',
        36 => 'J', 37 => 'K', 38 => 'L', 39 => 'M', 40 => 'N', 41 => 'O', 42 => 'P',
        43 => 'Q', 44 => 'R', 45 => 'S', 46 => 'T', 47 => 'U', 48 => 'V', 49 => 'W',
        50 => 'X', 51 => 'Y', 52 => 'Z', 53 => '1', 54 => '2', 55 => '3', 56 => '4',
        57 => '5', 58 => '6', 59 => '7', 60 => '8', 61 => '9', 62 => '0'
    ];
    $res = "";
    for($i = 0; $i < $lenght; $i++){
        $res .= $string_arr[mt_rand(1, 62)];
    }
    return $res;
}

//关闭本窗口,如果不是主窗口或有托管线程无法完全退出
this.Close();

//终止所有线程的消息,然后关闭所有窗口,如果有托管线程无法完全退出
Application.Exit();

//终止当前线程的消息,然后关闭所有窗口,如果有托管线程无法完全退出
Application.ExitThread();

//彻底退出,终止此进程并返回代码给操作系统
System.Environment.Exit(0);

设计的一个项目需要客户端离线使用的同时控制使用时间,如果获取本地时间判断容易被欺骗,用带时钟的加密狗无法提前结束或者追加时长,就想到了以下方法

1、提前在程序中保存:ID、本机密码、验证码接口,其中本机密码是不可让用户知道的。
2、程序运行时随机生成一串数字,将ID与随机数拼接在接口后作为GET参数提交,生成二维码显示。
3、用户扫码打开网页,服务器根据ID判断用户身份,获取对应密码,然后按 md5(ID + 9位数 + 密码)来计算MD5,取前四位显示。
4、用户输入软件,软件按相同方式计算MD5取前四位比对判断是否正确。

- 阅读剩余部分 -

编写了一个登录框,需要在用户按回车时进行提交,可以为输入框添加KeyUp事件函数,然后在函数内写

if (e.KeyCode == Keys.Control || e.KeyCode == Keys.Enter)
{
    //要执行的代码
}

测试发现如果使用了MessageBox.Show(),在弹出窗口上按回车确认也会再次触发这个事件,我的解决方法是弹窗前先清空输入框内容,然后在事件函数执行时判断一下输入框是否为空

if (this.InputBox.Text.Count() != 0)
{
    if (e.KeyCode == Keys.Control || e.KeyCode == Keys.Enter)
    {
        //要执行的代码
        this.InputBox.Text = String.Empty;
    }
}