胖胖的大肚腩哟 发表于 2018-9-2 10:28

申请会员ID:HallDave

1、申 请 I D:HallDave
2、个人邮箱:szcwe126@qq.cn

3、原创技术文章:给BaiduPCS-Go写一个UI   (昨天自己在CSDN上写的博客)
申请提交过一次了,不知道为啥没看到帖子,所以又发一次。
# 给BaiduPCS-Go写一个UI现在百度云下载限速使得很多用户头疼,会员一个月30不得不说有点太黑了。所以Github上就有老哥用Go语言开发了BaiduPCS-Go工具突破百度云的限速。但是对于一般的小白来说,这个工具使用太晦涩难懂了。所以我用C#给这个工具写了一个UI,添加了一些基本功能,使得使用尽量方便一点。在此文章我说一下整体的设计逻辑和代码。- **软件使用C#开发,在.Net下工作。经测试Win7~Win10下正常运行。**- **原创不易,转载的话记得标注名称HallDave,以及工具原作者iikira。**- **软件仅仅是为了技术交流以及方便大家,不涉及商业化运作和运营。**-------------------# 软件UI原工具:纯命令行,交互性不好,并且对小白来说很复杂。本软件:设计了UI,使得主要功能操作简便。软件UI逻辑很简单,只添加了基本的功能和按钮。缺点就是还不够美观。
#功能分析和代码实现作为一个网盘下载工具,最重要的就是下载的功能实现。原工具是命令行,所以下载需要输入一串命令,比较不方便,对于小白来说更是无从下手。所以我们使用Process来创建进程并且进行交互。**登录功能:**我们创建进程后,使用参数“login”后,需要按提示输入账号密码以及验证码。
Process P = new Process();
P.StartInfo.FileName = "BaiduPCS-Go.exe";
P.StartInfo.Arguments="login";
P.Start();
**登出功能:**同理,登出也类似上面,但是我们不需要看到进程,因为这个过程不需要输入内容,所以只需要参数“logout”就行了
DialogResult dr = MessageBox.Show("确认退出?", "提示", MessageBoxButtons.OKCancel);
                //确认退出
            if (dr == DialogResult.OK) {
                P.StartInfo.Arguments = "logout";
                P.StartInfo.CreateNoWindow = true;
                P.Start();
                P.StandardInput.WriteLine("y");
                P.Close();
                MessageBox.Show("退出成功!", "提示");
            }
注意此处由于使用了标准输入输出流,所以需要重定向:
P.StartInfo.RedirectStandardInput = true;
P.StartInfo.RedirectStandardOutput = true;
//原工具使用的是UTF8,所以重定向时需要指定UTF8以防止程序乱码
P.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8;
**显示文件:**只有一个参数“ls”,并且重定向后读取标准输出就行了。
P.StartInfo.Arguments = "ls";
P.Start();
TextBox1.Text=P.StandardOutput.ReadToEnd();
**下载文件:**下载的命令是“d File_Dir / File_Name”
P.StartInfo.Arguments = "d " + textDowns.Text;
//由于需要开到下载进程,所以让进程窗口可见
P.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
P.Start();
**切换路径:**路径切换使用“cd dir”就行了,回主目录的dir是“/”.
P.StartInfo.Arguments = "cd " + textDir.Text;
P.Start();
**截取文件(夹)名称:**这个程序最复杂也是最重要的地方就是文件名的获取。原工具使用不方便的一点也是在这里。我, 需要通过读入标准输出流,按行读入后使用string.Substring(index,length),分割出文件名。根目录下index是42,其他目录下是40.以下是分割的代码。判断当前目录的方法类似,然后添加个判断把line.Length>40就行了。
StringReader sr = new StringReader(FileNames);
while ((line = sr.ReadLine()) != null)
            {
            if (line.Length > 42)
            //这一行判断是否是文件名行,非文件名行length都小于42/40,因为其他行会导致Substring异常。
                        {
                            //GetFile/FolderName
                            line = line.Substring(41, line.Length - 41);
                            //从第42位截取到字符串尾部。
                        }
            }
**获取文件(夹)名**把得到的文件名添加到ListBox,并且在选取ListBox.Items后添加到文本框。
this.listBox1.Items.Add(line);
//由于最后一行总是显示当前目录信息也会显示到ListBox,所以删除最后一项。
this.listBox1.Items.RemoveAt(this.listBox1.Items.Count-1);
#总结本软件的设计和实现是没有什么复杂的地方的。只要善于动脑分析,每一部分都很容易实现出来。在此也感谢原作者iikira的BaiduPCS-Go。因为本软件的所有功能都是基于这个工具实现的。                                                                                                                                                        作者:HallDave                                                                                                                                                        2018-09-01

Hmily 发表于 2018-9-3 11:35

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。

ps:原创写的还是不错,但没有什么核心技术亮点所以还未达到要求,能不能提供更多原创内容申请?
页: [1]
查看完整版本: 申请会员ID:HallDave