当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎么样把命令行软件包装成GUI软件?
帖子发表于 : 2011-06-18 22:55 
头像

注册: 2007-07-06 11:56
帖子: 460
地址: 上海
送出感谢: 0 次
接收感谢: 0 次
很多软件就是包装了命令行下面的软件。比如现在的uGet,就是包装了aria2。
请问这个是怎么包装的呢?比如我用QT,如何自己包装aria2?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎么样把命令行软件包装成GUI软件?
帖子发表于 : 2011-06-18 23:29 
头像

注册: 2010-06-19 12:50
帖子: 193
系统: AIX、UBUNTU
送出感谢: 2
接收感谢: 5
CLI的软件大多靠命令选项控制,你可以研究软件源代码,也可以直接分析软件的命令选项,包装的GUI壳不过是系统调用,如标准C库的system,或Linux下的fork + exec,Windows下大体相同,都是新建一个进程,然后替换进程。

QT似乎没进程,所以只能是底层的操作系统调用,可能无法实现跨平台,其实QT如果要实现的话也是这么做,只不过把Windows下的调用和Linux下的调用封装的让你看不出差别。

至于如何传递参数,各种方法有不同的要求。至于GUI壳要做的,就是分析用户需求,配置命令选项,传字符串,最多建个文件什么的。也就这么多吧!

UNIX系统的一大特点就是程序小而精,如ls这些命令,grep这些命令,你都可以在你的程序中使用。Linux继承了这一优良特性,所以CLI程序的好处是很大的,几个小程序就可以组成复杂程序,而这些Windows程序员不懂,他们大多直接使用MFC或者微软的其他API,而这些东西更新太快,微软自己都在不断淘汰更别期望用他们跨平台,或者老程序在新机子使用了。Linux程序员的不同之处在于他们更喜欢直接使C/C++,一个优秀程序可以传好长时间。

如果你做开发的话也应该这样做,如QT,MFC这样的东西封装程度太高,都不是好东西,容易淘汰。正确的方法是用C/C++写基础程序,你的功力如果够的话跨平台不过是配库,换函数。如果想做GUI就拿QT或MFC做壳,这样你不必去关心QT,MFC这些带来的麻烦,只是简单的壳而已,不喜欢马上就可以再写一个。觉得不好看可以马上再写一个,而且比较安全。


_________________


Keep it easy stupid !




I am Code Vampire .




I like Linux . I like open source .



页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎么样把命令行软件包装成GUI软件?
帖子发表于 : 2011-06-19 10:39 
头像

注册: 2007-03-02 17:36
帖子: 7290
送出感谢: 3
接收感谢: 101
最简单的方法就是gui软件调用系统命令
复杂一点的就研究下cli软件的源码,调用它提供的api


_________________
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎么样把命令行软件包装成GUI软件?
帖子发表于 : 2011-06-19 16:54 
头像

注册: 2008-09-13 19:17
帖子: 7789
系统: Arch Linux (x86_64)
送出感谢: 10
接收感谢: 77
aria2提供了xml-rpc控制接口。现有的uget等都是用xml-rpc的。QT的,我记得也有一个用aria2的下载器,叫karia2吧


_________________
博客:http://www.lainme.com


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 怎么样把命令行软件包装成GUI软件?
帖子发表于 : 2011-08-19 14:15 
头像

注册: 2010-02-21 16:19
帖子: 434
地址: 大连
送出感谢: 1
接收感谢: 2
通过Qt的QProcess类产生一个系统调用,
通过系统调用来调用CLI命令。


_________________
大连Linux User Group: http://groups.google.com/group/dalian-lug?hl=zh-CN


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译