KDE TechBase
  • Page
  • Discussion
  • Edit
  • History
KDE TechBase is a Wiki - You can help! Please contribute! Questions?
Please ask development related questions in the KDE Community Forum.

Development/Architecture/KDE4/Starting Other Programs (zh CN)

< Development | Architecture | KDE4

Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenščina | српски | Українська | 简体中文 | 繁體中文

KDE 架构 - 程序启动

KDE中有许多启动程序的方法。这里列举了一些你应该和不应该用的方法。

Contents

  • 1 fork + exec
  • 2 KProcess
  • 3 KToolInvocation::startServiceByDesktopPath
    • 3.1 Klauncher
    • 3.2 kdeinit
  • 4 KRun
  • 5 KToolInvocation::invokeBrowser

[edit] fork + exec

不要用他们,除非你有很好的理由,KProcess不能完成你想的工作。

[edit] KProcess

只有在你要启动一个子进程的时候,才使用KProcess。这时候你要捕捉系统输出或者错误,或者由系输入的数据。这不是启动KDE应用程序的方法,除非你在调试。

[edit] KToolInvocation::startServiceByDesktopPath

建议用KToolInvocation::startServiceByDesktopPath来启动桌面应用(KDE/Gnome/X)或者KDE服务。桌面应用或服务应又一个.desktop文件,你的知道这个文件名。 KToolInvocation经DBUS通知KLauncher进程开始应用程序。

[edit] Klauncher

如果.desktop文件指定了X-DBUS-StartupType键,那KLauncher将一直等到应用程序注册到DBUS上。一旦startServiceByDesktopPath返回,DBUS就会对应用程序调用起来 而不必担心竞争问题。注意:KLauncher需要知道应用程序使用哪个名字在DBUS注册的,通常,他是org.kde.binaryname, 但你也可以在.desktop文件里设置X-DBUS-ServiceName值。如果你不这么做,KLauncher会抛出一个错误,说这个应用程序启动不了,因为所期望的DBUS名字就没出现过。

[edit] kdeinit

KLauncher利用KDEinit来提高启动性能和降低内存使用。这只适用于KDEinit可用模块(KLM)。

[edit] KRun

打开文件、应用程序、Shell命令的通用方法。尽可能使用startServiceByDesktopPath方法,会有更多的启动优势。KRun可以启动任何程序,从二进制文件到桌面文件。在运行之前,他会自动判断文件的MIME类型从而调用合适的处理方式,同样这适用于Shell命令。这些特性就是我们建议使用KRun在KDE调用程序的原因。

[edit] KToolInvocation::invokeBrowser

KToolInvocation::invokeBrowser 将加载浏览器。 相对于KRun,他会首先根据MIME类型决定如何加载(如果是HTTP,那么他会现下载,在调用相应程序加载。)。如果你事先就知道他是HTML网页,直接用invokeBrowser会快很多。

更多内容: 对KRun来说,网页因该在浏览器里显示,如果用户所选的浏览器是非KDE应用程序, 象火狐(Firefox)等,系统不得不启动另一轮下载来得到该网页,而Konqueror就可以利用KRun所设定的kioslave。另一方面,如果URL是一幅图像或其他的,反正不是网页,那KRun就是个合理地选择了,合适的应用程序会启动的。

Retrieved from "http://techbase.kde.org/Development/Architecture/KDE4/Starting_Other_Programs_(zh_CN)"
Categories: KDE4 | Architecture

Navigation

  • Home
  • Help
  • Recent changes

Sections

  • Getting started
  • Development
  • Schedules
  • Policies
  • Contribute
  • Projects

Toolbox

  • What links here
  • Related changes
  • Special pages
  • Printable version
  • Permanent link

Personal tools

  • 38.107.191.99
  • Talk for this IP
  • Log in / create account
  • Login with OpenID
Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal