吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4074|回复: 1
收起左侧

[会员申请] 申请会员ID:HallDave

[复制链接]
吾爱游客  发表于 2018-9-2 10:28
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原工具:纯命令行,交互性不好,并且对小白来说很复杂。 6NA8VM`P1SGE736IPATZ0S1.png 本软件:设计了UI,使得主要功能操作简便。软件UI逻辑很简单,只添加了基本的功能和按钮。缺点就是还不够美观。
3[BKU]FT76PO68)WRVWH.png #功能分析和代码实现作为一个网盘下载工具,最重要的就是下载的功能实现。原工具是命令行,所以下载需要输入一串命令,比较不方便,对于小白来说更是无从下手。所以我们使用Process来创建进程并且进行交互。**登录功能:**我们创建进程后,使用参数“login”后,需要按提示输入账号密码以及验证码。
[C#] 纯文本查看 复制代码
Process P = new Process();
P.StartInfo.FileName = "BaiduPCS-Go.exe";
P.StartInfo.Arguments="login";
P.Start();
**登出功能:**同理,登出也类似上面,但是我们不需要看到进程,因为这个过程不需要输入内容,所以只需要参数“logout”就行了
[C#] 纯文本查看 复制代码
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("退出成功!", "提示");
            } 
注意此处由于使用了标准输入输出流,所以需要重定向:
[C#] 纯文本查看 复制代码
P.StartInfo.RedirectStandardInput = true;
P.StartInfo.RedirectStandardOutput = true;
//原工具使用的是UTF8,所以重定向时需要指定UTF8以防止程序乱码
P.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8;
**显示文件:**只有一个参数“ls”,并且重定向后读取标准输出就行了。
[C#] 纯文本查看 复制代码
P.StartInfo.Arguments = "ls";
P.Start();
TextBox1.Text=P.StandardOutput.ReadToEnd();
**下载文件:**下载的命令是“d File_Dir / File_Name”
[C#] 纯文本查看 复制代码
P.StartInfo.Arguments = "d " + textDowns.Text;
//由于需要开到下载进程,所以让进程窗口可见
P.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
P.Start();
**切换路径:**路径切换使用“cd dir”就行了,回主目录的dir是“/”.
[C#] 纯文本查看 复制代码
P.StartInfo.Arguments = "cd " + textDir.Text;
P.Start();
**截取文件(夹)名称:**这个程序最复杂也是最重要的地方就是文件名的获取。原工具使用不方便的一点也是在这里。我, 需要通过读入标准输出流,按行读入后使用string.Substring(index,length),分割出文件名。根目录下index是42,其他目录下是40.以下是分割的代码。判断当前目录的方法类似,然后添加个判断把line.Length>40就行了。
[C#] 纯文本查看 复制代码
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后添加到文本框。
[C#] 纯文本查看 复制代码
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:原创写的还是不错,但没有什么核心技术亮点所以还未达到要求,能不能提供更多原创内容申请?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 12:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表