不使用Gtk4 GtkAppChooser类控件 启动一个应用程序

Posted 从善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不使用Gtk4 GtkAppChooser类控件 启动一个应用程序相关的知识,希望对你有一定的参考价值。

Gtk4 启动一个应用程序

CUI : 命令行用户接口
GUI : 图形用户接口

       在CUI模式下我们可以使用system()、fork()、exec()家族函数等启动一个应用,那么在GUI模式下怎么启动一个应用,接着看下面的讲解。

核心函数

g_app_info_create_from_commandline()

       这个函数定义在gio库中,具体含义如下:

AppInfo *
g_app_info_create_from_commandline (const char *commandline,
                                                               const char *application_name,
                                                               GAppInfoCreateFlags flags,
                                                               GError **error);


commandline : 在CUI中启动这个应用/运行脚本 所使用的命令
application_name:应用名称,如果置为NULL,则使用参数commandline
flags:用来定义应用的一些细节参数
error:这个变量用来反馈创建GAppInfo时的错误信息

这个函数根据给定的APP信息创建一个GAppInfo对象,之后便可以使用函数g_app_info_launch() 启动APP了。


一个实例

#include <glib.h>
#include <gio/gio.h>
//#include <gtk/gtk.h>

static const gchar *SCRIPT_PATH = "/path/to/shellscript.sh";

int main(int argc, char *argv[])
{
    GAppInfo *appinfo = NULL;
    gboolean ret = FALSE;

    //gtk_init(&argc, &argv);// !! HERE is required!

    appinfo = g_app_info_create_from_commandline(SCRIPT_PATH,
                                                 NULL,
                                                 G_APP_INFO_CREATE_NEEDS_TERMINAL,
                                                 NULL);
    g_assert(appinfo != NULL); // TODO error handling is not implemented.
    ret = g_app_info_launch(appinfo,
                            NULL,
                            NULL,
                            NULL);
    g_assert(ret == TRUE); // TODO error handling is not implemented.

    return 0;
}

执行上面的code,会自动执行"/path/to/shellscript.sh"脚本,在windows下可以将文件换成.exe格式便可自动启动一个应用程序了。


以上是关于不使用Gtk4 GtkAppChooser类控件 启动一个应用程序的主要内容,如果未能解决你的问题,请参考以下文章

GTK4 设置 GtkInfoBar背景颜色

GTK4 设置 GtkInfoBar背景颜色

Windows下安装并使用 GTK4

Windows下安装并使用 GTK4

GTK4 LIST MODEL 知多少?

GTK4 LIST MODEL 知多少?