【发布时间】:2015-12-07 20:16:03
【问题描述】:
我正在使用 XLIB 和 gtk 编写程序,我应该实现一个函数来切换特定窗口(使用任何人类可识别的引用、窗口名称、进程名称或任何在每次该应用程序时都是静态的正在运行)
我完全迷失了,我找不到任何东西来指导我完成申请的开始
谢谢
【问题讨论】:
我正在使用 XLIB 和 gtk 编写程序,我应该实现一个函数来切换特定窗口(使用任何人类可识别的引用、窗口名称、进程名称或任何在每次该应用程序时都是静态的正在运行)
我完全迷失了,我找不到任何东西来指导我完成申请的开始
谢谢
【问题讨论】:
您可以使用 X 库来做到这一点,但会有点麻烦:您必须了解 X IPC 和属性。幸运的是,有一种更简单的方法,假设您可以使用其他库:使用Libwnck。这是一个列出窗口的最小示例(改编自“入门”页面):
WnckScreen *screen = wnck_screen_get_default ();
WnckWindow *active_window = wnck_screen_get_active_window (screen);
GList *l;
for (l = wnck_screen_get_windows (screen); l != NULL; l = window_l->next) {
WnckWindow *window = WNCK_WINDOW (window_l->data);
g_print ("%s%s\n", wnck_window_get_name (window),
window == active_window ? " (active)" : "");
}
切换到特定窗口应该只是:
wnck_window_activate (window, 0);
唯一的问题是 wnck 被设计为与 GLib 主循环一起使用。如果您没有运行一个(就像一个简单的命令行应用程序的情况),您需要使用 wnck_screen_force_update () 从 X 获取当前数据(请参阅“入门”示例)。
【讨论】: