我如何读取gdk .窗口的标题属性
本文关键字:窗口 gdk 标题 属性 读取 何读取 | 更新日期: 2023-09-27 18:11:05
我正在转换Mono在Linux (Ubuntu)上运行的。net Windows应用程序。其中一个特性依赖于一个本地库(user32.dll)。讨论应用程序转换的Mono指南(Linux平台差异)建议一种方法是修改此代码。
我试图使用GDK来访问GDK的标题。我可以通过属性Gdk.Global.ActiveWindow访问的窗口。但是我在编译时发现了这个错误:
Error CS0154: The property or indexer `Gdk.Window.Title` cannot be used in this context because it lacks the `get` accessor (CS0154) (GetActiveWindow)
如果我删除读取activeW的de Title
属性的代码,一切工作正常。还有其他解读这个性质的方法吗?
这是我的工作单位:
using System;
using Gtk;
using Gdk;
using System.Threading;
namespace GetActiveWindow
{
class GdkApp : Gtk.Window
{
public static void Main ()
{
Application.Init ();
new GdkApp ();
Application.Run ();
}
public GdkApp () : base("Simple App")
{
SetDefaultSize (150, 150);
ShowAll();
while (true) {
var activeW = Gdk.Global.ActiveWindow;
Console.WriteLine("Active Window: {0}",activeW.Title); // Where my compile error happens.
Console.WriteLine("Simple App Window: {0}",this.Title); // This code works perfectily.
Thread.Sleep(1000);
}
}
}
}
我认为用Gdk是不可能的。尝试使用Wnck库给C编译器这个'-DWNCK_I_KNOW_THIS_IS_UNSTABLE'并工作,但有一个警告:未处理的动作类型_OB_WM_ACTION_UNDECORATE
对不起,我用genie代替了vala。
//valac *.gs --pkg gtk+-3.0 --pkg libwnck-3.0 -X '-DWNCK_I_KNOW_THIS_IS_UNSTABLE'
init
Gtk.init(ref args)
var ventana= new win()
ventana.inicio()
ventana.printinfo()
Gtk.main()
class win:Gtk.Window
won:weak GLib.List of Wnck.Window
def inicio()
var button= new Gtk.Button()
button.clicked.connect(printinfo)
this.add(button)
this.show_all()
def printinfo()
won= Wnck.Screen.get_default().get_windows()
won.foreach(allwin)
def allwin(w:Wnck.Window)
if w.is_skip_tasklist() or w.is_skip_pager()
pass
else
print w.get_name()